Tôi đã cài đặt Windows 7, đã ăn tập tin khởi động của Ubuntu. Khi khởi động máy tính, nó sẽ chuyển thẳng sang Windows mà không cho tôi tùy chọn khởi động Ubuntu.
Làm cách nào tôi có thể lấy lại Ubuntu?
Tôi đã cài đặt Windows 7, đã ăn tập tin khởi động của Ubuntu. Khi khởi động máy tính, nó sẽ chuyển thẳng sang Windows mà không cho tôi tùy chọn khởi động Ubuntu.
Làm cách nào tôi có thể lấy lại Ubuntu?
Câu trả lời:
Khi bạn cài đặt Windows, Windows giả định đây là hệ điều hành (HĐH) duy nhất trên máy hoặc ít nhất là nó không tính đến Linux. Vì vậy, nó thay thế GRUB bằng bộ tải khởi động riêng của mình. Những gì bạn phải làm là thay thế bộ tải khởi động Windows bằng GRUB. Tôi đã thấy các hướng dẫn khác nhau để thay thế GRUB bằng cách xử lý xung quanh bằng các lệnh GRUB hoặc một số thứ tương tự, nhưng với tôi cách đơn giản nhất là chỉ cần chroot
cài đặt và chạy update-grub
. chroot
là tuyệt vời vì nó cho phép bạn làm việc trên cài đặt thực tế của bạn, thay vì cố gắng chuyển hướng mọi thứ ở đây và ở đó. Nó thực sự sạch sẽ.
Đây là cách thực hiện:
Xác định số phân vùng của phân vùng chính của bạn. sudo fdisk -l
, sudo blkid
Hoặc GParted (mà nên đã được cài đặt, theo mặc định, trong phiên giao dịch trực tiếp) có thể giúp bạn ở đây. Tôi sẽ giả sử trong câu trả lời này là vậy /dev/sda2
, nhưng hãy đảm bảo bạn sử dụng đúng số phân vùng cho hệ thống của mình!
Nếu phân vùng chính của bạn là trong một LVM , thiết bị sẽ thay được đặt tại /dev/mapper/
, nhiều khả năng, /dev/mapper/{volume}--{os}-root
nơi {volume}
là tên khối lượng LVM và {os}
là hệ điều hành. Thực hiện ls /dev/mapper
cho tên chính xác.
Gắn kết phân vùng của bạn:
sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
Nếu bạn có một riêng biệt /boot
, /var
hoặc /usr
phân vùng , lặp lại bước 2 và 3 để gắn kết những phân vùng để /mnt/boot
, /mnt/var
và /mnt/usr
tương ứng. Ví dụ,
sudo mount /dev/sdXW /mnt/boot
sudo mount /dev/sdXY /mnt/var
sudo mount /dev/sdXZ /mnt/usr
thay thế sdXW
, sdXY
và sdXZ
với các số phân vùng tương ứng.
Gắn kết một số thứ cần thiết khác:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
Nếu Ubuntu được cài đặt ở chế độ EFI ( xem câu trả lời này nếu bạn không chắc chắn ), hãy sử dụng sudo fdisk -l | grep -i efi
hoặc GParted để tìm phân vùng EFI của bạn. Nó sẽ có một nhãn của EFI
. Gắn kết phân vùng này, thay thế sdXY
bằng số phân vùng thực tế cho hệ thống của bạn:
sudo mount /dev/sdXY /mnt/boot/efi
chroot
vào bản cài đặt Ubuntu của bạn:
sudo chroot /mnt
Tại thời điểm này, bạn đang cài đặt, không phải phiên trực tiếp và đang chạy dưới quyền root. Cập nhật grub:
update-grub
Nếu bạn gặp lỗi hoặc nếu bước lên bước 7 không khắc phục được sự cố của bạn, hãy chuyển sang bước 8. (Nếu không, đó là tùy chọn.)
Tùy thuộc vào tình huống của bạn, bạn có thể phải cài đặt lại grub:
grub-install /dev/sda
update-grub # In order to find and add windows to grub menu.
Nếu Ubuntu được cài đặt ở chế độ EFI và phân vùng EFI UUID đã thay đổi, bạn có thể cần cập nhật nó /etc/fstab
. So sánh nó:
blkid | grep -i efi
grep -i efi /etc/fstab
Nếu UUID phân vùng EFI hiện tại (từ blkid
) khác với phân vùng trong /etc/fstab
, hãy cập nhật /etc/fstab
với UUID hiện tại.
Nếu mọi thứ hoạt động mà không có lỗi, thì bạn đã thiết lập xong:
exit
sudo reboot
Tại thời điểm này, bạn sẽ có thể khởi động bình thường.
Nếu bạn không thể khởi động bình thường và không làm bước 8 vì không có thông báo lỗi, hãy thử lại với bước 8.
grub-efi-amd64
và nếu bạn đang sử dụng khởi động an toàn, bạn muốn sử dụng grub-install --uefi-secure-boot
. Điều này cũng được chi tiết trong superuser.com/a/376471/197980
Trình cài đặt Windows không quan tâm đến hệ điều hành khác trong hệ thống. Vì vậy, nó viết mã riêng trên bản ghi khởi động chính. May mắn là giải pháp cũng dễ dàng.
Bạn cần sửa chữa MBR. Làm như sau
Khởi động bằng usb / cd trực tiếp của Ubuntu. Sử dụng boot-repair
để khắc phục vấn đề.
Sau khi khởi động với usb / cd trực tiếp, hãy chạy lệnh sau trong terminal:
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
Sử dụng Recomended Repair
.
Thông tin thêm - https://help.ubfox.com/community/Boot-Repair
Khởi động từ ổ đĩa USB hoặc đĩa CD Ubuntu trực tiếp và
Cài đặt Boot-Repair trên ubfox bằng các bước sau
Mở terminal và chạy các lệnh sau
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair
Sau khi hoàn tất cài đặt, bạn có thể khởi chạy nó từ menu System-> Quản trị-> Boot-Repair nếu bạn sử dụng Gnome hoặc tìm kiếm "boot-Repair" trong dấu gạch ngang nếu bạn sử dụng Unity. Sau đó làm theo các ảnh chụp màn hình sau:
Phương pháp 1
Nhấn Áp dụng và Khởi động lại hệ thống
Phương pháp 2
Chỉ cần cài đặt easyBCD
trong Windows 7 và làm
Thêm mục nhập mới> Linux / BSD> (chọn) Grub2> (đẩy) Thêm mục nhập
Sau đó, bạn có thể chọn Ubuntu trên bộ tải khởi động Windows 7 để đến Grub2 (bộ tải khởi động trước đó).
Trên các hệ thống dựa trên EFI (như hầu hết các hệ thống được cung cấp cùng với Windows 8 trở lên), đôi khi Windows sẽ cập nhật trình tải khởi động hoặc đặt lại thành trình tải khởi động mặc định. Điều này đặc biệt phổ biến khi cài đặt lại HĐH hoặc thực hiện cập nhật hệ thống lớn (ví dụ: nâng cấp lên bản phát hành Windows mới nhất). Lưu ý rằng Windows không có khả năng thực sự xóa bất kỳ tệp GRUB nào trên máy tính dựa trên EFI. Mọi thứ cần thiết để khởi động Ubuntu vẫn còn hiệu lực; nó chỉ bị bỏ qua Trong những trường hợp này, việc cài đặt lại GRUB hoàn chỉnh là quá mức cần thiết và trên thực tế có khả năng (nhỏ) sẽ tạo ra các vấn đề mới.
Do đó, thay vì cài đặt lại GRUB trong những trường hợp này, tôi khuyên bạn nên đặt lại GRUB (hoặc bất kỳ trình tải khởi động hoặc trình quản lý khởi động nào bạn thích) làm mặc định. Có một số cách để làm điều này, bao gồm:
ubuntu
mục trong danh sách các tùy chọn khởi động và di chuyển nó lên đầu danh sách. Lần tới khi bạn khởi động lại, GRUB sẽ xuất hiện. (Nếu bạn sử dụng thứ gì đó không phải GRUB, bạn sẽ cần xác định vị trí mục nhập của nó.)bcdedit
- Công bcdedit
cụ Windows có thể được sử dụng để đặt GRUB theo thứ tự khởi động mặc định. Lệnh bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
, được gõ trong cửa sổ Dấu nhắc lệnh của Quản trị viên , sẽ thực hiện việc này; tuy nhiên, nếu máy tính của bạn khởi động với Secure Boot hoạt động, bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
sẽ được yêu cầu thay thế. Trên thực tế, lệnh sau thường sẽ hoạt động ngay cả khi Secure Boot không được sử dụng, vì vậy tôi sẽ sử dụng lệnh đó trước. Lưu ý rằng có một công cụ shell Windows tiên tiến hơn yêu cầu cú pháp hơi khác so với tôi đã trình bày, nhưng tôi không nhớ các chi tiết.ubuntu
mục nhập để khởi động Ubuntu sẽ hiển thị trong menu trình quản lý khởi động này, cho phép bạn khởi động Ubuntu. Ngoài ra, bạn có thể khởi động vào phương tiện khẩn cấp Ubuntu, như trình cài đặt đã khởi động ở chế độ "thử trước khi cài đặt". Dù bằng cách nào, bạn có thể sử dụng efibootmgr
để điều chỉnh thứ tự khởi động:
sudo efibootmgr
để xem các mục khởi động.BootOrder
dòng hiện tại .ubuntu
và ghi chú Boot####
số của nó .sudo efibootmgr -o xxxx[,yyyy,zzzz,....]
để thay đổi thứ tự khởi động, tạo xxxx
số cho Ubuntu. Điều gì đến sau đó rất có thể không quan trọng lắm, mặc dù tôi đã lưu ý rằng Windows dường như có khả năng tự quay trở lại bắt đầu thứ tự khởi động nếu nó không có trong danh sách. Vì vậy, có lẽ bạn nên đảm bảo rằng Windows nằm trong danh sách và có thể an toàn nhất khi sắp xếp lại danh sách để tất cả các mục nhập ban đầu đều ở đó, chỉ với ubuntu
mục nhập được chuyển lên đầu danh sách.Có các biến thể khác trong các quy trình này, chẳng hạn như sử dụng bcfg
trong trình bao EFI, sử dụng bless
trong macOS, sử dụng rEFInd của tôi để thực hiện khởi động một lần, v.v. Tuy nhiên, tôi bắt đầu với EasyUEFI; nó có thể là giải pháp đơn giản nhất Tuy nhiên, đôi khi Windows khăng khăng biến nó thành mặc định mỗi khi khởi động, và các báo cáo chỉ ra rằng bcdedit
có thể xử lý vấn đề đó tốt hơn.
Lưu ý rằng không có điều nào trước đây áp dụng cho cài đặt chế độ BIOS; tuy nhiên, vì hầu hết các máy tính được cài đặt Windows 8 trở lên khởi động ở chế độ EFI, việc cài đặt chế độ BIOS ngày càng trở nên hiếm hơn, do đó, trong nhiều trường hợp, tốt hơn là xử lý vấn đề theo cách EFI thay vì cài đặt lại GRUB một cách mù quáng.
efibootmgr
để sắp xếp lại thứ tự khởi động (như được mô tả bởi Rod -> cảm ơn!) đã bị nhầm lẫn bởi win10 cập nhật. Sau đó, GRUB-bootmanager xuất hiện như trước khi cập nhật, vì vậy tôi có thể xác nhận giải pháp được cung cấp cho tôi. Tôi không thể tìm thấy phiên bản cơ bản của EasyUEFI mà chỉ có phiên bản dùng thử của phiên bản pro không miễn phí được cung cấp.
Bây giờ có một giải pháp đơn giản hơn:
Điều này đã được thử nghiệm trên máy tính xách tay Samsung Series 7 Chronos khởi động kép Windows 8 và Ubuntu 13.10, khởi động an toàn bị tắt, UEFI và khởi động kế thừa được bật.
Boot-Repair làm việc cho tôi. Ứng dụng đồ họa rất dễ sử dụng, bạn không cần sử dụng dòng lệnh, bạn chỉ cần nhấp vào nút :)
Tất cả các tùy chọn sửa chữa có sẵn được mô tả trong tài liệu Ubuntu và có một trang riêng giải thích cách khởi động Boot-Repair (bằng cách tạo đĩa khởi động hoặc cài đặt nó vào đĩa sống Ubuntu hiện có) và cách sử dụng.
Chỉ cần khởi động CD trực tiếp Ubuntu, cài đặt Boot-Repair và chạy nó.
chroot
sửa chữa nhanh hơn so với Google xung quanh đối với một số công cụ khác để cài đặt.
Khi GRUB bị hỏng, người dùng thường không có quyền truy cập vào hệ thống, do đó việc sửa chữa phải được thực hiện từ phiên trực tiếp (CD trực tiếp hoặc USB trực tiếp).
Có nhiều nguyên nhân có thể khiến GRUB bị hỏng: Windows viết trên MBR, DRM ngăn GRUB cài đặt chính xác, lỗi trình cài đặt, thay đổi phần cứng ... Cập nhật GRUB như đề xuất ban đầu của Scott là không đủ, cài đặt lại GRUB như đề xuất của Marco là hiệu quả hơn, nhưng vẫn có nhiều tình huống yêu cầu các tinh chỉnh khác (thêm tùy chọn vào kernel, bỏ ẩn menu GRUB, thay đổi tùy chọn GRUB, chọn kiến trúc máy chủ phù hợp ...). Những khó khăn khác để sửa chữa GRUB là việc sử dụng chroot và lựa chọn phân vùng / đĩa phù hợp.
Tất cả điều này đã được thực hiện dễ dàng trong một công cụ đồ họa nhỏ: Boot-Repair . Nó sẽ được tích hợp trong Ubuntu 12.04 CD để sử dụng dễ dàng hơn, nhưng đối với những người cần nó bây giờ, đã có một số bản phân tích tích hợp: Ubuntu-Secured-Remix (Ubuntu CD tích hợp Boot-Repair), Boot-Repair-Disk (CD chạy Boot -Repair khi khởi động), ...
Hi vọng điêu nay co ich.
Câu trả lời được đưa ra bởi Scott và Web-E là đủ tốt và đã giúp đỡ rất nhiều lần. Nhưng nhiều lần, công cụ sửa chữa khởi động không thể sửa chữa grub do các vấn đề liên quan đến nền tảng i386 và amd64 hoặc một nơi mà grub không thể tìm thấy efi
thư mục.
Điều đã giải quyết vấn đề của tôi hơn 10 lần là tự làm sạch các cài đặt grub cũ và cài đặt một cái mới.
Vì vậy, trước tiên hãy thực hiện 6 bước đầu tiên từ câu trả lời của Scott, nơi bạn có thể bỏ qua bước thứ 5 nếu nó báo lỗi:
- Khởi động từ đĩa CD trực tiếp hoặc USB trực tiếp, ở chế độ "Thử Ubuntu".
Xác định số phân vùng của phân vùng chính của bạn.
sudo fdisk -l
,sudo blkid
Hoặc GParted (mà nên đã được cài đặt, theo mặc định, trong phiên giao dịch trực tiếp) có thể giúp bạn ở đây. Tôi sẽ giả sử trong câu trả lời này là vậy/dev/sda2
, nhưng hãy đảm bảo bạn sử dụng đúng số phân vùng cho hệ thống của mình!Nếu phân vùng chính của bạn là trong một LVM , thiết bị sẽ thay được đặt tại
/dev/mapper/
, nhiều khả năng,/dev/mapper/{volume}--{os}-root
nơi{volume}
là tên khối lượng LVM và{os}
là hệ điều hành. Thực hiệnls /dev/mapper
cho tên chính xác.Gắn kết phân vùng của bạn:
sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
Nếu bạn có một riêng biệt
/boot
,/var
hoặc/usr
phân vùng , lặp lại bước 2 và 3 để gắn kết những phân vùng để/mnt/boot
,/mnt/var
và/mnt/usr
tương ứng. Ví dụ,sudo mount /dev/sdXW /mnt/boot sudo mount /dev/sdXY /mnt/var sudo mount /dev/sdXZ /mnt/usr
thay thế
sdXW
,sdXY
vàsdXZ
với các số phân vùng tương ứng.Gắn kết một số thứ cần thiết khác:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
Nếu Ubuntu được cài đặt ở chế độ EFI ([xem câu trả lời này nếu bạn không chắc chắn] [efi]), hãy sử dụng
sudo fdisk -l | grep -i efi
hoặc GParted để tìm phân vùng EFI của bạn. Nó sẽ có một nhãn củaEFI
. Gắn kết phân vùng này, thay thếsdXY
bằng số phân vùng thực tế cho hệ thống của bạn:sudo mount /dev/sdXY /mnt/boot/efi
chroot
vào bản cài đặt Ubuntu của bạn:sudo chroot /mnt
Sau đó thực hiện các bước sau:
sudo dpkg --configure -a
sudo apt install -fy
sudo apt purge -y grub*-common grub-common:i386 shim-signed
sudo apt install -y grub-pc
sdXY
để cài đặt bộ tải khởi động. Tìm nơi hệ điều hành hiện tại của bạn được cài đặt bằng sudo fdisk -l
lệnh. Nó sẽ được dán nhãn là Linux
. Điều hướng cửa sổ đó bằng Tabphím và chọn một tùy chọn bằng Spacephím.sudo grub-update
cho một kiểm tra kép.Nếu vấn đề vẫn còn, bạn có thể đọc wiki của Arch để thực sự hiểu về grub để giải quyết nhiều vấn đề khác. (Vâng, cũng giúp cho Ubuntu!).
Windows không thấy phân vùng định dạng Linux. Bạn cần sử dụng gparted từ liveCD và tạo phân vùng chính được định dạng NTFS bằng cờ khởi động.
Một số đã có vấn đề nếu phân vùng chính mới nằm sau phân vùng mở rộng vì Windows không luôn luôn đặt lại bảng phân vùng chính xác. Tốt nhất để có bản sao lưu tốt và bản sao lưu riêng của bảng phân vùng.
Bảng phân vùng sao lưu vào tập tin văn bản và lưu vào thiết bị bên ngoài.
sudo sfdisk -d /dev/sda > PTsda.txt
Điều này chỉ dành cho các hệ thống MBR (msdos). Nếu cài đặt Ubuntu của bạn nằm trong ổ đĩa phân vùng GPT, bạn chỉ có thể cài đặt Windows ở chế độ UEFI hoặc chuyển đổi ổ đĩa trở lại MBR (msdos).
Chỉ có fsck
lệnh cố định grub-rescue
màn hình cho tôi.
Sử dụng Boot-Repair để khởi động từ Live-CD, sau đó mở Terminal
Lấy đúng thiết bị:
sudo fdisk -l
Cần tìm thiết bị khởi động, thiết bị khởi động có *
trong mục Khởi động như ở đây:
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 2000895 1998848 976M 82 Linux swap / Solaris
/dev/sda2 * 2000896 943716351 941715456 449G 83 Linux
Bây giờ sửa chữa đĩa bằng cách sử dụng:
sudo fsck /dev/sda2 -y
Lưu ý: / dev / sda2 là thiết bị khởi động trong ví dụ này.
Khởi động lại khi hoàn thành. Làm xong.
Câu trả lời của Scott Severance là hợp lệ và chi tiết nhưng có một độ phân giải không yêu cầu thiết bị khởi động bên ngoài và do đó không cần phải xác định và gắn thủ công tất cả các phân vùng Ubuntu của bạn dẫn đến chroot
.
Trong Windows 10, bạn có thể sử dụng Advanced Recovery
để chọn một thiết bị (phân vùng?) Để khởi động.
Đi đến Settings
và chọn Update & Security
:
Chuyển đến Recovery
:
Từ Advanced Startup
lựa chọnRestart Now
Sau đó chọn Use a Device
và tất cả các tùy chọn khởi động sẽ được trình bày cho bạn. Chọn phân vùng 'ubfox' và PC của bạn sẽ khởi động từ phân vùng đó.
Sau khi khởi động vào môi trường Ubuntu thông thường của tôi, tôi đã thử chạy grub-update
nhưng điều đó không thay đổi.
Sau đó tôi tìm thấy tôi /boot/efi
phân vùng đó là /dev/nvme0n1p1
chạy sudo grub-install /dev/nvme0n1p1
và sau đó sudo update-grub
.
Điều này đã khôi phục bản ghi khởi động chính của tôi nhiều lần vì dường như có chính sách Windows 10 mới ghi đè MBR trên các bản cập nhật nhỏ .
Tôi đã gặp một vấn đề khác, gây ra (có thể) bằng cách boot-repair
xóa các /etc/grub.d/
mẫu của tôi , được nêu trong câu hỏi của tôi ở đây: Ubuntu 18.04 không khởi động sau khi cài đặt Windows 10
Như được chỉ ra bởi nhận xét @karels, cấu hình grub được tạo bằng các tệp trong /etc/grub.d
. Thư mục của tôi chỉ chứa /etc/grub.d/25_custom
, trong đó có các mục menu lạ trỏ đến hình ảnh .efi không tồn tại. Có vẻ như các /etc/grub.d
mẫu của tôi có thể bị hos bởi boot-repair
.
Tôi đã sửa lỗi này bằng cách:
sudo mount /dev/sdxx /mnt
sudo cp /etc/grub.d/* /mnt/etc/grub.d/
sudo update-grub