“Variabel EFI tidak didukung pada sistem ini”

19

Saya mencoba menginstal Arch linux ke Notebook HP Pavillion 15 yang baru (dan sangat jelek).

Ini adalah mesin berbasis UEFI. Setelah beberapa ayunan, saya berhasil mendapatkan cukup jauh. Mode lama dinonaktifkan di pengaturan sistem, dan saya telah mem-boot EFI ke Arch DVD yang saya bakar, dan berkembang melalui Arch Beginner's Guide dan Panduan Instalasi yang lebih maju ke titik di mana saya menginstal grub.

Saat chrooted, saya menjalankan:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug

Ini memancarkan satu ton output, termasuk:

Variabel EFI tidak didukung pada sistem ini

Pertama kali saya sampai di titik ini, saya melanjutkan dengan instalasi, tidak tahu apakah itu masalah yang sebenarnya. Ternyata itu, seperti ketika saya reboot mesin tidak ada media bootable dapat ditemukan dan mesin menolak untuk boot. Saya bisa pada saat itu masuk ke menu pengaturan UEFI dan memilih file EFI untuk boot, dan Arch Linux akan boot.

Tetapi saya sekarang akan kembali dan menginstal ulang lagi, mencoba untuk memperbaiki masalah di atas.

Bagaimana saya bisa mendapatkan GRUB untuk menginstal dengan benar?

John Dibling
sumber

Jawaban:

20

Masalahnya hanyalah efivarsmodul kernel tidak dimuat.

Ini dapat dikonfirmasi oleh:

sh-4.2# efivar-tester
UEFI variables are not supported on this machine.

Jika Anda chrootmasuk ke instalasi baru Anda, exitkeluar, dan kemudian aktifkan efivars:

exit
modprobe efivars

... dan kemudian chrootkembali. Dalam kasus saya, ini berarti:

chroot /mnt

tetapi Anda harus melakukan chroothal yang sama seperti sebelumnya.

Setelah kembali, tes lagi:

efivar-tester

Ini tidak akan lagi melaporkan kesalahan, dan Anda dapat menginstal grub dengan cara yang sama seperti sebelumnya.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
John Dibling
sumber
Lihat juga rodsbooks.com/efi-bootloaders/principles.html
Michael Shigorin
5
Tetapi bagaimana dengan sistem yang tidak mendukung UEFI? Bagaimana caranya saya menginstal GRUB berkemampuan UEFI pada USB stick saya untuk menginstal Arch pada komputer UEFI baru jika komputer saya yang bekerja tidak mendukung UEFI? Pasti ada cara untuk melakukannya!
trusktr
6
Modul efivars telah digantikan oleh "efivarfs" sekarang ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
pedroapero
1
Sementara modprobe efivarfsberhasil, masalah yang dijelaskan oleh OP tetap ada. mungkin jawaban ini perlu pembaruan? Saya benar-benar kehabisan ide.
Afr
3
Sedih modprobe efivarsmemberikan modprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(usb live baru diinstal)
jozxyqk
5

Anda akan mendapatkan kesalahan ini jika Anda boot menggunakan legacy dan bukan metode UEFI. Anda harus memastikan untuk memilih item boot UEFI di menu BIOS, atau memilih UEFI sebagai metode boot default.

cengique
sumber
4

Saya tahu, itu utas yang sangat lama, tetapi mungkin akan membantu seseorang. Sebagian besar panduan menyarankan solusi yang sama untuk me-mount sistem file virtual sebelum chroot:

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

Tapi sekarang (mungkin terkait dengan perubahan efivars / efivarf) loop ini melompati satu sub-mountpoint yang sangat istimewa - /sys/firmware/efi/efivarsdan efibootmgr / grub gagal.

Jadi, gunakan baris ini sebagai gantinya:

for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done

Kisah sukses aktual: Debian dengan 4.9.0-5 (efivars) disimpan oleh live cd Arch Linux (dipilih hanya karena dapat mem-boot uefi di luar kotak) dengan 4.14.9-1-ARCH (efivarf) hanya dengan bind-mount / sys / firmware / efi / efire

sorrytech
sumber
0

Menjalankan Fedora 27, saya harus memasang efivarfs. Saya melakukan ini di dalam chrootfs, namun ini masih tidak berfungsi, karena entri boot ditunjukkan dengan efibootmgr- tetapi setelah reboot itu tidak di-boot atau ditampilkan sekali lagi di live OS.

Apa yang akhirnya bekerja, adalah menggunakan grub dari media hidup, turun ke shell, dan masukkan linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot Dari OS yang normal boot, saya bisa menjalankan grub2-installtanpa chroot, dan yang bekerja.

Saya tidak yakin apakah ini hanya masalah dengan BIOS saya, atau masih ada sesuatu yang lebih umum salah, tetapi inilah yang dilakukan grub2-installtanpa melaporkan kesalahan.

# Open encrypted root partion cryptsetup luksOpen /dev/sda4 a4 mount /dev/mapper/a4 /mnt mount /dev/sda2 /mnt/boot mount -t proc proc /mnt/proc mount -t sysfs sys /mnt/sys mount -o bind /dev /mnt/dev mount -t devpts pts /mnt/dev/pts/ mount -o bind /etc/resolv.conf /mnt/etc/resolv.conf chroot /mnt # run inside the chroot: mount /dev/sda1 /boot/efi mount -t efivarfs efivarfs /sys/firmware/efi/efivars grub2-install

pengguna3384414
sumber
-3

Kamu tidak bisa! Membangun dan memasang adalah dua hal yang berbeda, mesin yang Anda bangun harus memiliki kemampuan uefi. Jika Anda ingin menggunakan / menginstal linux pada perangkat keras berkemampuan uefi harus sudah ada. Anda dapat membangun gpt / mbr di uefi tetapi tidak keduanya jika perangkat keras Anda menggunakan bios lama.

Jim
sumber
Silakan baca posting lebih hati-hati.
John Dibling