Bagaimana saya menginstal ulang bootloader grub-efi di Fedora Linux?

12

Saya baru saja menginstal Fedora 18 menggunakan boot EFI. Seperti distribusi linux lainnya saat ini, ia menyiapkan GRUB2 untuk saya.

Saya memiliki pengalaman dengan menginstal ulang versi BIOS GRUB ketika ada masalah. Saya tahu misalnya bagaimana mem-boot disc cadangan, chroot ke sistem yang diinstal, jalankan grub-installdan mungkin update-grub/ grubby/ grub-mkconfig.

Bagaimana saya menginstal ulang versi EFI GRUB ketika ada masalah? (Saya tahu ada yang salah: Saya hancurkan).

sourcejedi
sumber
Mengapa Anda mengajukan pertanyaan yang tidak jelas dan kemudian segera menjawabnya? Meskipun jawabannya memberikan informasi yang bermanfaat, pertanyaannya benar-benar perlu penjelasan: Mengetahui Anda mengubah sesuatu tidak cukup. Memahami dengan tepat apa yang diubah benar-benar diperlukan untuk memberikan respons yang baik terhadap pertanyaan itu.
Rod Smith
@RodSmith terima kasih telah membalas email saya tentang EFI sebelumnya :). Dan untuk menambahkan komentar Anda ke downvotes. Pertanyaan yang saya mulai dengan ini secara harfiah adalah ini. Saya berpengalaman menginstal ulang grub-pc. Saya ingin memiliki tingkat kepercayaan yang sama, bahwa saya tahu cara memulihkan sistem EFI. Saya mengedit pertanyaan sekali untuk menekankan bahwa itu adalah tentang menginstal ulang grub ... Saya kira saya harus mencoba lagi dan lebih eksplisit tentang motif saya.
sourcejedi
Mengapa Anda menggunakan grub jika Anda memiliki UEFI? Keuntungan apa yang diberikan oleh chaining kedua boot loader?
Marco
@Marco UEFI bukan boot loader yang didukung oleh distribusi linux apa pun yang saya tahu! Fedora memperbarui GRUB secara otomatis ketika menginstal kernel baru, dan menginstal opsi boot yang diperlukan seperti root =. Itu tidak melakukan itu untuk EFI. Saya dapat mengabaikan dukungan distribusi & menggunakan pemindaian otomatis opsi kernel REFIND di refind.conf , tetapi itu masih akan menjadi rantai boot loader / manajer! Dan Microsoft tidak menandatangani driver GPL, jadi Secure Boot harus menggunakan SHIM-> boot loader-> Linux, dan Anda benar-benar menginginkan menu boot setelah UEFI-> SHIM.
sourcejedi
Setelah menginstal kernel baru satu panggilan ke efibootmgrcukup untuk memperbarui entri di menu UEFI. Saya tidak tahu tentang resi atau SHIM. Saya pribadi tidak mengaitkan banyak boot loader. Semua sistem operasi ditambahkan ke menu boot UEFI dan berfungsi dengan baik.
Marco

Jawaban:

9

Pertama, Anda akan membutuhkan sistem linux yang dibooting EFI . Jika Anda masih memiliki media instalasi asli Anda (CD / DVD / USB stick), itu biasanya termasuk sistem penyelamatan yang memadai. Bahkan mungkin memiliki opsi perbaikan sekali klik :).

Atau, komunitas Ubuntu menyediakan image perbaikan boot otomatis . Ia mengklaim mendukung Fedora. Jika Anda ingin tahu apa yang sebenarnya dilakukannya, saya sarankan Anda membaca penjelasan pihak ketiga ini terlebih dahulu.

Namun saya menggunakan sistem penyelamatan untuk keperluan umum dengan alat konsol. Serta mendukung boot EFI, saya memastikan efibootmgrada dalam daftar paket . Itu kebetulan disebut GRML dan didasarkan pada Debian. Inilah informasi tentang alat konsol dan grub-efi yang saya temukan saat menyelamatkan sistem Fedora saya:

  1. Saat menjalankan sistem Fedora 18 yang dibooting oleh EFI, jangan jalankangrub2-install . Itu akan mengklaim sukses, tetapi itu merusak sistem boot Fedora grub-efi.

    • File /boot/EFI/fedora/grub.efiini diinstal oleh paket grub-efi. Jika Anda tidak ingin menginstal ulang itu, penggunaan yum reinstall grub-efi. (Untuk melakukan ini dari sistem penyelamatan generik, Anda dapat melakukan ini setelah masuk mountdan chrootmasuk ke sistem Fedora yang diinstal). Fedora grub-efi menggunakan file config /boot/EFI/fedora/grub.cfg(mungkin dihasilkan oleh grubby). Fedora di EFI tidak akan menghasilkan file di /boot/grub2/grub.cfg. Menjalankan grub2-installakan menggantikan grub.efi dengan gambar yang mencoba membaca /boot/grub2/grub.cfg, dan karena itu akan gagal.

    • grub2-installmenginstal entri boot EFI untuk grub.efi. Namun jika Anda belum menonaktifkan Boot Aman di firmware bersertifikasi Windows 8 Anda, entri ini akan gagal untuk boot. Anda perlu boot shim.efisebagai gantinya (abaikan shim-fedora.efi, saya tidak yakin persis apa itu). Lihat di bawah.

  2. Anda dapat kehilangan entri boot EFI Anda untuk Fedora jika pengaturan firmware Anda diatur ulang. (Secara manual, atau dengan peningkatan firmware, atau karena firmware bermasalah - yang terakhir telah dilaporkan di alam liar). Berikut cara membuat entri boot EFI untuk Fedora secara manual dengan boot aman:

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

    Contoh ini menggunakan nomor partisi 100 pada disk standar pertama yang dikenali oleh linux. Anda harus menyesuaikan opsi -d /dev/sdadan -p 100untuk mengidentifikasi sistem file tempat mountora Fedora /boot/efi. Ini adalah partisi sistem EFI. Pemasang Fedora akan membuat ESP khusus untuk digunakan oleh Fedora Anda, terpisah dari ESP yang digunakan oleh sistem operasi lain. ( Ini berbeda dari Ubuntu dan OpenSUSE ).

    Perhatikan bahwa efibootmgrperintah ini mengharuskan Anda menjalankannya dari sistem yang dibooting EFI.

sourcejedi
sumber
"Perhatikan perintah efibootmgr mengharuskan Anda menjalankannya dari sistem yang dibooting EFI." - dalam hal ini bagaimana Anda "bootstrap" sistem yang dibooting EFI? (USB saya saat ini tidak mau boot ketika memilih opsi UEFI)
jozxyqk
1
Instal media adalah cara yang didukung untuk mem-bootstrap sistem Anda. Saya pikir Anda juga harus bisa mem-boot sistem EFI tanpa menginstal variabel firmware EFI, ini melibatkan pembuatan /EFI/boot/bootx64.efi(dengan asumsi UEFI 64-bit). Inilah cara kerja media instalasi USB (selain CD / DVD). Mungkin cukup untuk menyalin shim.efi di sana, tapi saya tidak yakin apakah itu sudah berfungsi atau tidak.
sourcejedi
5

Jika Anda melakukan dual-boot dengan UEFI Windows, ada kemungkinan lain. yang tidak memerlukan disk pemulihan.

Anda bisa boot ke Windows, membuka baris perintah dengan hak admin, dan menjalankan perintah berikut:

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

Ini akan menggantikan entri boot Windows di UEFI, dengan entri yang boot ke GRUB. Dengan asumsi menu GRUB Anda kemudian termasuk entri yang berfungsi untuk Windows, Anda sekarang telah bekerja dual-boot :-). Semoga ini semua bekerja tanpa menonaktifkan Boot Aman.

Saya baru saja melakukannya sendiri setelah pembaruan Windows dan tampaknya telah melakukan trik.

Sumber dan informasi lebih lanjut: http://nwrickert2.wordpress.com/2013/05/13/notes-on-uefi-windows-and-linux/ .

ternaryOperator
sumber
Atau, lihat dua solusi yang dijelaskan di askubuntu.com/a/799734/462004 (menggunakan EasyUEFI atau cara mengubah urutan boot menggunakan bcdedit.exealih-alih entri Windows seperti yang diperintahkan oleh perintah Anda).
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

(dengan asumsi Anda sudah menginstal paket-paket itu dan konfigurasi sebelumnya sudah ada)


sumber
Terima kasih! "Buat entri menu boot: TL; DR: Ini seharusnya terjadi secara otomatis" - yay.
sourcejedi
Oh ya, itu memang: grub2-mkconfig -o /boot/grub2/grub.cfg(atau pada sistem (U) EFI itu akan menjadi seperti grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg. Tidak berfungsi?
Maaf, maksud saya wiki menyiratkan bahwa menginstal ulang paket grub menciptakan kembali variabel EFI yang diperlukan untuk mem-boot GRUB (yang mungkin perlu diciptakan kembali misalnya jika Anda mereset pengaturan "BIOS" untuk beberapa alasan). Saya tidak berpikir saya sudah mencoba dnf reinstall, dan jika benar kedengarannya sangat bagus.
sourcejedi
0

Untuk membuatnya sederhana di sini adalah semua yang Anda lakukan:

yum reinstall grub2-efi

JANGAN jalankan grub2-install, itu akan merusak sistem Anda dengan menghadirkan Anda dengan menu boot grub kosong (ini karena grub2-install akan memberi Anda file .efi buruk / generik yang mencoba memuat grub.cfg dari lokasi yang salah.

Selain itu Anda mungkin ingin memperbarui grub-config Anda jika Anda telah bermigrasi ke disk baru atau partisi / tata letak Anda telah berubah dengan:

grub2-mkconfig -o /boot/EFI/fedora/grub.cfg
Areeb Soo Yasir
sumber
Senang membaca beberapa konfirmasi :). Saya mengusulkan edit yang menunjukkan bagaimana grub2-mkconfig harus digunakan -o. Saya tidak jelas seberapa bermanfaat jawaban sederhananya - bukan bahwa jawaban saya benar-benar lebih bermanfaat, tetapi ini mengasumsikan Anda masih dapat mem-boot sistem Fedora entah bagaimana, atau Anda perhatikan Anda telah membuat kesalahan sebelum Anda mematikan. (Jawaban saya langsung tentang disk penyelamatan umum, tetapi AFAIK Anda perlu melakukan chroot ke instal, pastikan untuk me-mount sistem file apa pun yang diperlukan ... itu hal yang baik tentang sistem penyelamatan khusus seperti installer Debian, ia melakukan mount + chroot untukmu).
sourcejedi