-
Boot komputer Anda dengan live-USB/CD dalam mode UEFI . Saya memiliki dua opsi boot
<flash_drive>
danUEFI: <flash_drive>
, yang kedua diperlukan untuk mengekspos variabel efi di/sys/firmware/efi/
sehinggaefibootmgr
jangan sampai gagal di kemudian hari. Mem-boot dengan opsi pertama memberi saya kesalahan berikut:Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables. Try 'modprobe efivars' as root.
modprobe efivars
tidak berhasil untuk saya. -
chroot ke dalam sistem yang rusak (mirip dengan bantuan ubuntu grub2 tetapi dengan kekhususan efi):
sudo mount /dev/sda2 /mnt #sda2 is the root partition sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting modprobe efivars # make sure this is loaded sudo chroot /mnt
-
Bergantung pada distribusi linux Anda, Anda sekarang melakukan hal yang berbeda.
-
Untuk Ubuntu/Debian :
apt-get install --reinstall grub-efi-amd64
atau sebagai alternatif:
apt-get install --reinstall grub-efi update-grub
haruskah yang di atas memberi Anda grub, tetapi bukan yang bisa di-boot
-
Untuk Fedora (hingga 16, dapat bekerja untuk orang lain):
yum reinstall grub-efi
Dalam perintah berikut, Anda harus mengganti sdX dengan perangkat yang memiliki partisi EFI tempat Anda ingin boot. Di
--part Y
Anda harus menggantiY
dengan nomor partisi EFI (seperti pada/dev/sdXY
).efibootmgr -c --disk /dev/sdX --part Y efibootmgr -v # verify a new record called Linux is there
-
-
Sekarang ketik Ctrl+D untuk keluar dari chroot, unmount semuanya dan reboot:
for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done sudo umount /mnt/boot/efi #please do this. Corrupted efi partitions are not nice sudo umount /mnt sudo reboot
Anda mungkin perlu menyesuaikan ini dengan kebutuhan Anda (tabel partisi berbeda, partisi /boot terpisah, dll.) dan ini mungkin bukan satu-satunya pilihan tetapi ini bekerja dengan baik untuk saya.
Sistem langsung yang cocok untuk memperbaiki sesuatu adalah grml. Ada juga panduan ekstensif tentang cara menyiapkan perangkat USB yang dapat di-boot, di mana bagian Mac sebenarnya paling berguna (cukup buat partisi FAT32, salin file, reboot, selesai).
Sebagai penyederhanaan potensial dari metode pertama, dimungkinkan untuk langsung mem-boot ke sistem pada hard disk, hanya menggunakan grub dari live CD. Diuji pada xubuntu 13.10 dengan live CD xubuntu 13.10.
Pastikan Boot Aman dinonaktifkan di BIOS Anda. Masukkan live CD dan boot melalui UEFI. Menu GRUB CD akan ditampilkan. Tekan "c" untuk masuk ke baris perintah.
configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg
Sesuaikan perintah grub di atas jika Anda memiliki partisi sistem EFI yang berbeda.
Setelah sistem Anda mem-boot dari hard disk, menginstal ulang grub pada partisi sistem EFI dan mendaftarkannya ke firmware melalui grub-install sudah cukup.
sudo grub-install
Seperti Maxine, saya menemukan pengaturan UEFI saya di BIOS rusak dan mesin saya tidak bisa boot.
Dalam kasus saya, ini adalah Lenovo ThinkServer RD430 dengan Linux Mint Debian dan sepertinya apa saja Saya akan melakukan pembaruan-grub atau mengubah hard drive apa pun di server akan menyebabkannya tidak bisa boot. OS dalam kasus saya adalah linuxmint-201403-mate-dvd-64bit diinstal melalui USB. (lihat di bawah untuk deskripsi lengkap tentang peristiwa yang menyebabkan UEFI tidak berfungsi)
Melakukan langkah-langkah yang persis sama pada ThinkServer TS140 tidak membuat UEFI kehilangan akal sekali pun. Melihat halaman driver RD430 dan bios saya berumur dua versi. Saya belum pernah memperbarui bios pada motherboard sebelumnya, jadi saya bukan orang yang memperbarui secara otomatis ketika ada versi baru yang tersedia. Setelah memperbarui bios, jawaban Maxine di atas berhasil, hanya dengan sedikit perubahan...
# efibootmgr -c --disk /dev/sdX --part Y
# efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0002,0000,0003,0001,0004
Boot0000* linuxmint HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\EFI\linuxmint\grubx64.efi)
Boot0001* LMDE Linux Mint Debian HD(1,800,15d505800,934c598c-fe3c-fd43-84a1-fa38e4f72552)File(\EFI\linuxmint\grubx64.efi)
Boot0002* Linux HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\elilo.efi)
Boot0003* UEFI: Built-in EFI Shell Vendor(5023b95c-db26-429b-a648-bd47664c8012,)AMBO
Boot0004* UEFI: VerbatimSTORE N GO 1.00 ACPI(a0341d0,0)PCI(1a,0)USB(1,0)USB(4,0)HD(1,80,1d70780,00000000)AMBO
mint / #
efibootmgr -c
perintah menambahkan dua entri 0000
dan 0002
!
Boot0002* Linux HD
entri pertama dalam urutan boot salah .
0000
entri benar.
Untuk mengujinya, saya mencoba mem-boot tanpa gangguan, yaitu 0002
pintu masuk. Seperti yang diharapkan, itu tidak berhasil. Jadi saya me-restart server, menekan F12, dan memilih linuxmint
. Seperti yang diharapkan, boot ke instalasi LMDE saya.
Cara menghapus entri yang tidak diinginkan melalui efibootmgr adalah:
# efibootmgr -b 2 -B
Saya menggunakan perintah ini untuk menghapus entri 0001
dan 0002
. Opsi 0001
adalah dari upaya terakhir saya untuk memulihkan OS.
Catatan UEFI
Jika Anda membaca ini dan sama frustrasinya dengan UEFI seperti saya, berikut adalah beberapa catatan dan sumber daya:
»Mem-boot ke UEFI Shell mirip dengan menggunakan shell DOS.
» Intel membuat manual referensi PDF untuk perintah shell efi.
»Dokumen UEFI_on_TS430 Lenovo adalah satu-satunya sumber yang saya lihat menjelaskan penggunaan shell efi.
» Referensi shell uefi lainnya dari Panduan Administrator nPartisi .
» Anda dapat mencoba mem-boot ke partisi dari shell efi dengan menavigasi ke loader dan menjalankannya.
» UEFI ingin disk memiliki tabel partisi GPT, bukan tabel bagian msdos.
» UEFI ingin partisi pertama pada disk Anda diformat dengan fat32 atau vfat.
» Untuk boot "generik" harus ada /EFI/boot
direktori di root dengan bootx64.efi
di dalamnya.
» Beberapa orang menyalin grubx64.efi
mereka dari tempatnya dipasang ke /EFI/boot/bootx64.efi
dan cheat ini berhasil untuk mereka.
» Setiap kali Anda melakukan perubahan grub, gunakan efibootmgr -v
sebelum dan sesudah untuk memastikan reboot Anda baik-baik saja.
Pengalaman RD430 saya
Saya telah menginstal ulang OS 10+ kali dalam seminggu terakhir mencoba menyelesaikan masalah ini dan menyiapkan server. Konfigurasi saya adalah SSD pada pengontrol RAID ini di slot PCIe 2.0 dengan LMDE terpasang di dalamnya. Pengontrol RAID AOC-S3008L-L8i (direflash ke mode IT) di slot PCIe 3.0 ke-2 dengan drive 6x 3TB. RAM:12GB ECC (3x 4GB).
Berikut adalah perubahan yang akan saya buat yang menyebabkan sistem saya tidak bisa boot:
» Ubah slot pci S3008L-L8i (biarkan kartu SSD+ saja).
» Nonaktifkan permintaan bios serangan perangkat lunak LSi untuk pengontrol onboard.
» Tambahkan kartu HighPoint RocketRaid lama saya ke slot PCIe terbuka.
» Lakukan perubahan pada /etc/default/grub
lalu jalankan update-grub
.
(mungkin grub-install
perlu dijalankan juga? )