"Las variables EFI no son compatibles con este sistema"


19

Estoy intentando instalar Arch Linux en un nuevo (y muy malo) HP Pavillion 15 Notebook.

Esta es una máquina basada en UEFI. Después de varios cambios, he logrado llegar bastante lejos. El modo heredado está deshabilitado en la configuración del sistema, y ​​he arrancado con EFI al Arch DVD que grabé, y progresé a través de la Guía para principiantes de Arch y la Guía de instalación más avanzada hasta el punto donde estoy instalando grub.

Mientras chrooted, ejecuto:

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

Esto emite una tonelada de salida, que incluye:

Las variables EFI no son compatibles con este sistema

La primera vez que llegué a este punto, continué con la instalación, sin saber si era un problema real. Resulta que sí, ya que cuando reinicié la máquina no se encontró ningún medio de arranque y la máquina se negó a arrancar. En ese momento pude acceder al menú de configuración de UEFI y seleccionar un archivo EFI para arrancar, y Arch Linux se iniciaría.

Pero ahora estoy volviendo y reinstalando nuevamente, tratando de solucionar el problema anterior.

¿Cómo puedo hacer que GRUB se instale correctamente?

Respuestas:


20

El problema era simplemente que el efivarsmódulo del kernel no estaba cargado.

Esto puede ser confirmado por:

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

Si chrootingresa a su nueva instalación, exitsalga y luego habilite efivars:

exit
modprobe efivars

... y luego de chrootvuelta. En mi caso, esto significa:

chroot /mnt

pero deberías hacer chrootlo mismo que antes.

Una vez de vuelta, pruebe nuevamente:

efivar-tester

Esto ya no informará un error, y puede instalar grub de la misma manera que lo hizo antes.

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


55
Pero, ¿qué pasa con un sistema que no es compatible con UEFI? ¿Cómo puedo instalar GRUB compatible con UEFI en mi memoria USB para instalar Arch en una nueva computadora UEFI si mi computadora de trabajo no es compatible con UEFI? ¡Tiene que haber una manera de hacerlo!
trusktr

66
El módulo efivars ha sido reemplazado por "efivarfs" ahora ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
pedroapero

1
Mientras modprobe efivarfsfunciona, el problema descrito por el OP persiste. tal vez esta respuesta necesita una actualización? Me estoy quedando sin ideas.
Afr

3
Tristemente modprobe efivarsda modprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(usb en vivo recién instalado)
jozxyqk

5

Obtendrá este error si ha arrancado usando el método heredado y no el método UEFI. Debe asegurarse de seleccionar el elemento de inicio UEFI en el menú del BIOS o seleccionar UEFI como método de inicio predeterminado.


4

Lo sé, ese es un hilo muy antiguo, pero tal vez ayude a alguien. La mayoría de las guías sugieren la misma solución para montar sistemas de archivos virtuales antes de chroot:

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

Pero ahora (tal vez relacionado con los cambios efivars / efivarfs) este bucle omite un sub-punto de montaje muy especial, /sys/firmware/efi/efivarsy efibootmgr / grub falla.

Entonces use esta línea en su lugar:

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

Historia de éxito real: Debian con 4.9.0-5 (efivars) guardado por Arch Linux live cd (elegido solo porque puede arrancar uefi de la caja) con 4.14.9-1-ARCH (efivarfs) simplemente por bind-mount / sys / firmware / efi / efivars


0

Ejecutando Fedora 27, necesitaba montar el efivarfs. Hice esto dentro de los chrootfs, sin embargo, esto todavía no funcionaba, ya que la entrada de inicio se mostró con efibootmgr, pero después del reinicio no se inició ni se mostró una vez en el sistema operativo en vivo.

Lo que finalmente funcionó, fue usar grub del medio en vivo, soltarlo en el shell e ingresar linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot Desde el sistema operativo normal arrancado, podía correr grub2-installsin chrooteso, y funcionó.

No estoy seguro de si esto fue solo un problema con mi BIOS, o si todavía hay algo más mal en general, pero esto es lo que se grub2-installejecutó sin informar ningún error.

# 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


-3

No puedes! Construir e instalar son dos cosas diferentes, la máquina en la que construye debe ser capaz de funcionar. Si desea usar / instalar linux en hardware compatible con uefi, gpt ya debe existir. Puede compilar gpt / mbr en uefi pero no ambos si su hardware usa BIOS antiguas.


Por favor lea la publicación más cuidadosamente.
John Dibling
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.