"Le variabili EFI non sono supportate su questo sistema"


19

Sto tentando di installare Arch Linux su un nuovo (e molto scadente) notebook HP Pavillion 15.

Questa è una macchina basata su UEFI. Dopo diverse oscillazioni, sono riuscito ad andare abbastanza lontano. La modalità legacy è disabilitata nella configurazione del sistema e ho avviato EFI sul DVD Arch che ho masterizzato e sono passato attraverso la Guida per principianti Arch e la Guida di installazione più avanzata fino al punto in cui sto installando grub.

Mentre chrooted eseguo:

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

Questo emette una tonnellata di output, tra cui:

Le variabili EFI non sono supportate su questo sistema

La prima volta che sono arrivato a questo punto, ho continuato con l'installazione, senza sapere se si trattava di un problema reale. Risulta che lo era, come quando ho riavviato la macchina non è stato possibile trovare alcun supporto di avvio e la macchina ha rifiutato di avviarsi. A quel punto sono stato in grado di accedere al menu di configurazione UEFI e selezionare un file EFI per l'avvio e Arch Linux si sarebbe avviato.

Ma ora sto tornando indietro e reinstallando di nuovo, cercando di risolvere il problema sopra.

Come posso installare GRUB in modo corretto?

Risposte:


20

Il problema era semplicemente che il efivarsmodulo del kernel non era caricato.

Ciò può essere confermato da:

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

Se sei chrootentrato nella nuova installazione, exitesci e quindi abilita efivars:

exit
modprobe efivars

... e poi di chrootnuovo. Nel mio caso, ciò significa:

chroot /mnt

ma dovresti fare chrootcome prima.

Una volta tornato, prova di nuovo:

efivar-tester

Questo non segnalerà più un errore e puoi installare grub nello stesso modo di prima.

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


5
Ma che dire di un sistema che non supporta UEFI? Come posso installare GRUB compatibile con UEFI sulla mia chiavetta USB per installare Arch su un nuovo computer UEFI se il mio computer funzionante non supporta UEFI? Deve esserci un modo per farlo!
trusktr,

6
Il modulo efivars è stato ora sostituito da "efivarfs" ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
pedroapero,

1
Mentre modprobe efivarfsfunziona, il problema descritto dall'OP persiste. forse questa risposta necessita di un aggiornamento? Sto finendo le idee.
Afr

3
Purtroppo modprobe efivarsmodprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(appena installato usb live)
jozxyqk

5

Otterrai questo errore se hai avviato utilizzando legacy e non il metodo UEFI. È necessario assicurarsi di selezionare la voce di avvio UEFI nel menu BIOS o di selezionare UEFI come metodo di avvio predefinito.


4

Lo so, è un filo molto vecchio, ma forse aiuterà qualcuno. La maggior parte delle guide suggerisce la stessa soluzione per montare filesystem virtuali prima di chroot:

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

Ma ora (forse correlato alle modifiche efivar / efivarfs) questo loop salta un sub-mountpoint molto speciale - /sys/firmware/efi/efivarse efibootmgr / grub fallisce.

Quindi usa questa linea invece:

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

Storia di successo reale: Debian con 4.9.0-5 (efivars) salvato dal CD live di Arch Linux (scelto solo perché può avviare uefi fuori dalla scatola) con 4.14.9-1-ARCH (efivarfs) solo da bind-mount / sys / firmware / efi / efivars


0

Con Fedora 27, dovevo montare il efivarfs. L'ho fatto all'interno dei chrootfs, tuttavia non funzionava ancora, come è stato mostrato con la voce di avvio efibootmgr- ma dopo il riavvio non è stato avviato né è stato mostrato una volta nel sistema operativo live.

Ciò che alla fine ha funzionato, è stato usare grub dal supporto live, linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot passare alla shell ed entrare Dal normale sistema operativo avviato, potevo correre grub2-installsenza chroot, e ha funzionato.

Non sono sicuro che si tratti solo di un problema con il mio BIOS o che ci sia ancora qualcosa di più sbagliato in generale, ma questo è ciò che ha grub2-installfunzionato senza segnalare alcun errore.

# 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

Non puoi! La costruzione e l'installazione sono due cose diverse, la macchina su cui si basa deve essere compatibile con uefi. Se si desidera utilizzare / installare Linux su hardware compatibile con uefi, gpt deve già esistere. Puoi creare gpt / mbr su uefi ma non su entrambi se il tuo hardware usa un vecchio BIOS.


Si prega di leggere il post più attentamente.
John Dibling,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.