Làm cách nào để tôi cài đặt lại bộ tải khởi động grub-efi trên Fedora Linux?


12

Gần đây tôi đã cài đặt Fedora 18 bằng cách sử dụng khởi động EFI. Giống như các bản phân phối linux hiện tại khác, nó thiết lập GRUB2 cho tôi.

Tôi có kinh nghiệm cài đặt lại phiên bản BIOS của GRUB khi gặp sự cố. Tôi biết ví dụ: làm thế nào để khởi động đĩa cứu hộ, chroot vào hệ thống đã cài đặt, chạy grub-installvà có thể update-grub/ grubby/ grub-mkconfig.

Làm cách nào để tôi cài đặt lại phiên bản EFI của GRUB khi gặp sự cố? (Tôi biết mọi thứ sẽ đi sai: Tôi phá vỡ chúng).


Tại sao bạn đã hỏi một câu hỏi mơ hồ và sau đó trả lời ngay lập tức? Mặc dù câu trả lời cung cấp thông tin hữu ích, nhưng câu hỏi thực sự cần làm sáng tỏ: Biết bạn thay đổi điều gì đó là không đủ. Hiểu chính xác những gì đã thay đổi là thực sự cần thiết để cung cấp một câu trả lời tốt cho câu hỏi.
Rod Smith

@RodSmith cảm ơn bạn đã trả lời email của tôi về EFI trước đó :). Và để thêm bình luận của bạn vào downvotes. Câu hỏi tôi bắt đầu với nghĩa đen này. Tôi có kinh nghiệm với việc cài đặt lại grub-pc. Tôi muốn có cùng mức độ tự tin, rằng tôi biết cách phục hồi hệ thống EFI. Tôi đã chỉnh sửa câu hỏi một lần để nhấn mạnh rằng đó là về việc cài đặt lại grub ... Tôi đoán tôi nên thử lại và nói rõ hơn về động cơ của mình.
nguồn

Tại sao bạn sử dụng grub nếu bạn có UEFI? Lợi thế nào trong chuỗi hai bộ tải khởi động cung cấp?
Marco

@Marco UEFI không phải là trình tải khởi động được hỗ trợ bởi bất kỳ phân phối linux nào tôi biết! Fedora tự động cập nhật GRUB khi cài đặt kernel mới và cài đặt các tùy chọn khởi động cần thiết như root =. Nó không làm điều đó cho EFI. Tôi có thể từ bỏ hỗ trợ phân phối và sử dụng các tùy chọn w / kernel quét tự động của REFIND trong refind.conf , nhưng đó vẫn sẽ là chuỗi các trình quản lý / trình tải khởi động! Và Microsoft không ký trình điều khiển GPL, vì vậy an toàn Boot đi SHIM-> boot loader-> Linux anyway, và bạn thực sự muốn có một menu boot sau khi UEFI-> phần SHIM.
nguồn

Sau khi cài đặt kernel mới, một cuộc gọi đến efibootmgrlà đủ để cập nhật mục trong menu UEFI. Tôi không biết về rEFInd hoặc SHIM. Cá nhân tôi không xâu chuỗi nhiều bộ tải khởi động. Tất cả các hệ điều hành được thêm vào menu khởi động UEFI và nó hoạt động rất tốt.
Marco

Câu trả lời:


9

Đầu tiên, bạn sẽ cần một hệ thống linux khởi động EFI . Nếu bạn vẫn có phương tiện cài đặt gốc (CD / DVD / USB), thường bao gồm một hệ thống cứu hộ đầy đủ. Nó thậm chí có thể có một tùy chọn sửa chữa bằng một cú nhấp chuột :).

Ngoài ra, cộng đồng Ubuntu cung cấp hình ảnh sửa chữa khởi động tự động . Nó tuyên bố sẽ hỗ trợ Fedora. Nếu bạn muốn biết những gì nó thực sự làm, tôi khuyên bạn nên đọc giải thích của bên thứ ba này trước.

Tuy nhiên tôi đã sử dụng một hệ thống cứu hộ đa năng với các công cụ điều khiển. Cũng như hỗ trợ khởi động EFI, tôi chắc chắn efibootmgrcó trong danh sách các gói . Nó được gọi là GRML và dựa trên Debian. Đây là thông tin về các công cụ console và grub-efi mà tôi đã phát hiện ra khi giải cứu hệ thống Fedora của mình:

  1. Khi chạy hệ thống Fedora 18 được khởi động bởi EFI, không chạygrub2-install . Nó sẽ khẳng định thành công, nhưng nó phá vỡ hệ thống khởi động Fedora grub-efi.

    • Tập tin /boot/EFI/fedora/grub.efiđược cài đặt bởi gói grub-efi. Nếu bạn làm muốn cài đặt lại nó, sử dụng yum reinstall grub-efi. (Để thực hiện việc này từ hệ thống cứu hộ chung chung, bạn có thể thực hiện việc này sau khi nhập mountchrootvào hệ thống Fedora đã cài đặt của mình). Fedora grub-efi sử dụng tệp cấu hình /boot/EFI/fedora/grub.cfg(có lẽ được tạo bởi grubby). Fedora trên EFI sẽ không tạo tệp tại /boot/grub2/grub.cfg. Chạy grub2-installsẽ thay thế grub.efi bằng một hình ảnh cố đọc /boot/grub2/grub.cfgvà do đó sẽ thất bại.

    • grub2-installcài đặt một mục khởi động EFI cho grub.efi. Tuy nhiên, nếu bạn chưa tắt Secure Boot trong phần sụn được chứng nhận Windows 8, mục này sẽ không khởi động được. Bạn cần phải khởi động shim.efithay thế (bỏ qua shim-fedora.efi, tôi không chắc chính xác đó là gì). Xem bên dưới.

  2. Bạn có thể mất mục khởi động EFI cho Fedora nếu cài đặt chương trình cơ sở của bạn được đặt lại. (Thủ công hoặc bằng cách nâng cấp chương trình cơ sở hoặc do phần sụn bị lỗi - phần sau đã được báo cáo trong tự nhiên). Dưới đây là cách tạo thủ công mục nhập EFI cho Fedora bằng cách khởi động an toàn:

    $ sudo efibootmgr -c -L Fedora -d /dev/sda -p 100 -l \\EFI\\fedora\\shim.efi
    

    Ví dụ này sử dụng phân vùng số 100 trên đĩa tiêu chuẩn đầu tiên được linux nhận ra. Bạn nên điều chỉnh các tùy chọn -d /dev/sda-p 100xác định hệ thống tập tin mà Fedora gắn kết /boot/efi. Đây là một phân vùng hệ thống EFI. Trình cài đặt Fedora sẽ tạo ra một ESP chuyên dụng để cài đặt Fedora của bạn sử dụng, tách biệt với các ESP được sử dụng bởi bất kỳ hệ điều hành nào khác. ( Điều này khác với Ubuntu và OpenSUSE ).

    Lưu ý efibootmgrlệnh yêu cầu bạn chạy nó từ hệ thống khởi động EFI.


"Lưu ý lệnh efibootmgr yêu cầu bạn chạy nó từ hệ thống khởi động EFI." - trong trường hợp này, làm thế nào để bạn "bootstrap" một hệ thống khởi động EFI? (USB hiện tại của tôi sẽ không khởi động khi chọn tùy chọn UEFI)
jozxyqk

1
Cài đặt phương tiện là cách được hỗ trợ để khởi động hệ thống của bạn. Tôi nghĩ bạn cũng có thể khởi động một hệ thống EFI mà không cần cài đặt các biến phần mềm EFI, nó liên quan đến việc tạo /EFI/boot/bootx64.efi(giả sử UEFI 64 bit). Đây chính xác là cách USB cài đặt phương tiện hoạt động (bất cứ thứ gì khác ngoài CD / DVD). Có thể đủ để sao chép shim.efi ở đó, nhưng tôi không chắc liệu nó có được thiết lập để hoạt động hay không.
nguồn

5

Nếu bạn khởi động kép với UEFI Windows, có một khả năng khác. mà không cần đĩa khôi phục.

Bạn có thể khởi động vào Windows, mở một dòng lệnh với quyền quản trị viên và chạy lệnh sau:

bcdedit /set {bootmgr} path \EFI\fedora\shim.efi

Điều này sẽ thay thế mục khởi động Windows trong UEFI, với mục khởi động vào GRUB. Giả sử menu GRUB của bạn sau đó bao gồm một mục hoạt động cho Windows, bây giờ bạn đã khởi động kép :-). Hy vọng tất cả sẽ hoạt động mà không vô hiệu hóa Secure Boot.

Tôi vừa phải tự làm điều đó sau khi cập nhật Windows và có vẻ như đã thực hiện được mánh khóe.

Nguồn và thêm thông tin: http://nwrickert2.wordpress.com/2013/05/13/notes-on-uefi-windows-and-linux/ .


Ngoài ra, hãy xem hai giải pháp được mô tả tại askubfox.com/a/799734/462004 (sử dụng EasyUEFI hoặc cách thay đổi thứ tự khởi động bằng cách sử dụng bcdedit.exethay vì mục Windows như lệnh của bạn).
phk

1

https://fedoraproject.org/wiki/GRUB_2?rd=Grub2#Updating_GRUB_2_configuration_on_UEFI_systems :

dnf reinstall grub2-efi grub2-efi-modules shim

(giả sử bạn đã cài đặt các gói đó và đã có cấu hình trước đó)


Cảm ơn! "Tạo một mục menu khởi động: TL; DR: Điều này sẽ tự động xảy ra" - yay.
sourcejedi 2/2/2016

Ồ phải, nó có: grub2-mkconfig -o /boot/grub2/grub.cfg(hoặc trên hệ thống EFI (U) nó sẽ giống như vậy grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg. Không hoạt động?

Xin lỗi, ý tôi là wiki ngụ ý rằng việc cài đặt lại gói grub tạo lại các biến EFI cần thiết để khởi động GRUB (có thể cần phải được tạo lại, ví dụ như nếu bạn đặt lại cài đặt "BIOS" vì một số lý do). Tôi không nghĩ tôi đã thử dnf reinstall, và nếu đúng thì nghe có vẻ khá tuyệt.
sourcejedi

0

Chỉ cần giữ cho nó đơn giản ở đây là tất cả những gì bạn làm:

yum reinstall grub2-efi

KHÔNG chạy grub2-install, nó sẽ phá vỡ hệ thống của bạn bằng cách hiển thị cho bạn một menu khởi động grub trống (điều này là do grub2-install sẽ cung cấp cho bạn một tệp .efi xấu / chung chung cố tải grub.cfg từ vị trí sai.

Ngoài ra, bạn có thể muốn cập nhật cấu hình grub của mình nếu bạn đã di chuyển sang các đĩa mới hoặc phân vùng / bố cục của bạn đã thay đổi với:

grub2-mkconfig -o /boot/EFI/fedora/grub.cfg

Rất vui được đọc một số xác nhận :). Tôi đã đề xuất một chỉnh sửa cho thấy grub2-mkconfig phải được sử dụng như thế nào -o. Tôi không rõ câu trả lời đơn giản hữu ích như thế nào - không phải câu trả lời của tôi hữu ích hơn nhiều, nhưng điều này giả định rằng bạn vẫn có thể khởi động hệ thống Fedora bằng cách nào đó, hoặc bạn nhận thấy bạn đã mắc lỗi trước khi tắt máy. . cho bạn).
nguồn
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.