Làm cách nào tôi có thể cài đặt lại GRUB vào phân vùng EFI?


32

Tôi muốn cài đặt lại GRUB 2 và tôi đã tìm thấy các hướng dẫn sau: Cách sửa chữa, khôi phục hoặc cài đặt lại Grub 2 bằng đĩa CD hoặc USB Ubuntu . Trong trường hợp của tôi, bộ tải khởi động được cài đặt trong phân vùng EFI. Nếu tôi sử dụng các lệnh được cung cấp trong hướng dẫn này, GRUB sẽ được cài đặt lại vào phân vùng EFI tự động hay nó sẽ được cài đặt vào phân vùng gốc nơi Ubuntu được cài đặt? Rõ ràng, tôi không muốn điều này xảy ra.


3
Các hướng dẫn trong liên kết được cung cấp chỉ hợp lệ để cài đặt lại GRUB ở chế độ BIOS kế thừa, điều này sẽ không hoạt động trong trường hợp của bạn. Để cài đặt lại GRUB cho bản cài đặt Ubuntu ở chế độ EFI BIOS, vui lòng đọc câu trả lời của tôi. :)
cl-netbox

Cảm ơn nhiều! :) Tôi có một số câu hỏi: khi tôi cài đặt Ubuntu trong hệ thống UEFI của mình, tôi đã tìm thấy hai mục trong bios. Có cách nào để có một mục nhập ubfox không? Trong trường hợp bảng phân vùng MBR (vì vậy không có EFI hoặc bất kỳ phân vùng khởi động nào khác), tôi có thể sử dụng các lệnh tương tự ngoại trừ: sudo mount / dev / sd ** / mnt / boot / efi không?
Generoso

Bạn có thể thử xóa mục nhập Ubuntu thứ hai bằng: sudo efibootmgr (liệt kê tất cả các mục) | sudo efi bootmgr -b <entry-number> -B .... và để cài đặt lại GRUB ở chế độ BIOS kế thừa thực hiện các lệnh sau: sudo mount / dev / sd ** / mnt | sudo grub-install --boot-thư mục = / mnt / boot / dev / sd * (* = đĩa | ** = phân vùng hệ thống)! :)
cl-netbox

Hoàn hảo :) Dù sao, có một hệ thống UEFI và phân vùng EFI, có cách nào để tránh bị quá tải khi tôi thực hiện cài đặt Windows mới không?
Generoso

Chà, Microsoft không quan tâm đến bất cứ thứ gì khác ngoài các sản phẩm của riêng họ, vì vậy bạn có thể cài đặt các hệ thống Linux mà không gây hại cho Windows - thật không may, đây không phải là trường hợp khác - vì vậy khi bạn cài đặt Windows sau khi bạn đã cài đặt Ubuntu, bạn phải khôi phục bộ tải khởi động GRUB sau đó. :)
cl-netbox

Câu trả lời:


54

Cài đặt lại bộ tải khởi động GRUB cho cài đặt Ubuntu của bạn ở chế độ EFI theo cách này ...

Khởi động từ phương tiện cài đặt Ubuntu và chọn 'Thử Ubuntu mà không cần cài đặt'.
(Khởi động phương tiện cài đặt của bạn ở chế độ EFI, chọn mục nhập Ubuntu có UEFI ở phía trước.)

Khi bạn đang ở trên màn hình Live, hãy mở một thiết bị đầu cuối và thực hiện các lệnh sau:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

Lưu ý: sdX= đĩa | sdXX= phân vùng efi | sdXXX= phân vùng hệ thống

Để xác định các phân vùng sử dụng GParted, công cụ được bao gồm trong phương tiện cài đặt.
Sau khi chạy các lệnh GRUB sẽ được cài đặt trong phân vùng EFI riêng.


+1 nhưng tại sao bạn không cài đặt từ Ubuntu?

1
@MarkYisri: Cảm ơn bạn rất nhiều! :) Bởi vì đó là cách an toàn nhất để cài đặt lại bộ tải khởi động GRUB mà không làm hỏng mọi thứ và trong trường hợp hệ thống không khởi động đúng cách ... cách duy nhất để làm điều đó! :)
cl-netbox 8/11/2016

1
Trong giải pháp này, làm thế nào để 'grub-install' biết rằng nó được cho là cài đặt ở chế độ EFI?
dùng334639

3
Điểm quan trọng là để khởi động phương tiện cài đặt ở chế độ khởi động chính xác, nếu chúng ta muốn cài đặt lại, grub-efichúng ta phải khởi động ở chế độ UEFI, nếu chúng ta muốn cài đặt lại, grub-pcchúng ta phải khởi động ở chế độ cũ.
mook765

1
Điều này làm việc cho tôi ngoại trừ với một thay đổi: tôi đã làm grub-install /dev/sdXX, tức là không phải đĩa mà là phân vùng EFI được sử dụng để cài đặt grub và nó đã hoạt động.
Vịt Dodgers

3

đây là cách duy nhất hiệu quả với tôi: (Hệ thống: sdb8, boot: sdb6, efi: sdb2)

sudo mount /dev/sdb8 /mnt 
sudo mount /dev/sdb6 /mnt/boot 
sudo mount /dev/sdb2 /mnt/boot/efi

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

sudo chroot /mnt

grub-install --target=x86_64-efi /dev/sdb

grub-install --recheck /dev/sdb

exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Không gì --rechecklàm gì? Hướng dẫn nói delete device map if it already exists?
MrCalvin

Nếu tôi gọi mục khởi động bất cứ điều gì khác với mặc định, ví dụ: --bootloader-id=Ubuntu_02khởi động thất bại. Nó chỉ khởi động trong bảng điều khiển grub ... giải pháp nào?
MrCalvin

Vâng. có vẻ như grub-install --rechecklà cần thiết Nó đã sửa lỗi USB HDD EFI không hoạt động của tôi.
solsTiCe

2

Cảm ơn @ cl-netbox để được hướng dẫn!

Sau khi tôi nâng cấp (Linux Mint 18.2 Sonya lên 18.3 Sylvia), hệ thống của tôi sẽ không khởi động được nên tôi đã làm theo hướng dẫn ở trên nhưng vẫn không thành công. Tuy nhiên, tôi nhận thấy rằng máy của tôi có / khởi động trong một phân vùng riêng (có thể do tôi đang sử dụng LVM) nên quá trình sửa đổi một chút của tôi là:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXY /mnt/boot
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub 

Lưu ý: sdX = đĩa | phân vùng sdXX = efi | sdXY = phân vùng khởi động | sdXXX = phân vùng hệ thống


Tôi đã có một hệ thống Ubuntu Bionic đang chạy mà tôi vô tình làm rm -Rf / boot / efi! Hệ thống của tôi vẫn đang chạy, vì vậy tôi đã thử sử dụng hai lệnh cuối cùng (grub-install / dev / mapper / ub Ubuntu - vg-root AND update-grub). Khởi động lại, và mọi thứ hoạt động hoàn hảo. Phewy và cảm ơn :)
Roel Van de Paar

2

Ngoài ra, nếu khởi động từ cd trực tiếp để khôi phục, có thể bạn đang thiếu gói grub-efi-amd64-bin và sau đó xếp hàng

"grub-install --target=x86_64-efi /dev/sdb" 

không thành công với thông báo lỗi: "grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh không tồn tại. Vui lòng chỉ định --target hoặc --directory."

Trong trường hợp này chạy bên ngoài chroot

sudo apt get grub-efi-amd64-bin

và sau đó thêm / usr / lib / grub / x86_64-efi vào chroot mount.

Thông số BTW "/ dev / sdb" đã lỗi thời và đang bị bỏ qua.


0

ngoài câu trả lời ci-netbox.
Nếu phiên bản hệ điều hành Pendrive của bạn không khớp với phiên bản được cài đặt trên đĩa, cài đặt grub có thể gặp khó khăn để xác định cài đặt grub đúng:

$ sudo chroot /mnt
# grub-install /dev/sdX
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. 
Please specify --target or --directory.

Cố gắng xác định thủ công cài đặt để sử dụng

# ls /usr/lib/grub/
grub-mkconfig_lib  x86_64-efi  x86_64-efi-signed

Sau đó khởi động lại grub-install:

# grub-install --target=x86_64-efi /dev/sdX 
Installing for x86_64-efi platform.
Installation finished. No error reported.

0

Nếu bạn tình cờ mất phân vùng EFI, thật dễ dàng để lấy lại. Bạn có thể sử dụng fdiskhoặc partedđể tạo phân vùng GPT mới với loại "phân vùng EFI (1)" và định dạng với:

sudo mkfs.msdos /dev/sdX

sau đó gắn kết nó và bạn có thể theo dõi chạy:

sudo grub-install /dev/sdX

như trong các giải pháp khác.


0

Vì vậy, dự đoán của tôi là lý do cho vấn đề là cài đặt Ubuntu không gắn phân vùng efi nếu fstab. và cập nhật grub. cập nhật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.