"Les variables EFI ne sont pas prises en charge sur ce système"

19

J'essaie d'installer Arch linux sur un nouveau (et très merdique) ordinateur portable HP Pavillion 15.

Il s'agit d'une machine basée sur UEFI. Après plusieurs oscillations, j'ai réussi à aller assez loin. Le mode hérité est désactivé dans la configuration du système, et j'ai démarré EFI sur le DVD Arch que j'ai gravé, et j'ai progressé à la fois dans le Guide du débutant Arch et dans le Guide d'installation plus avancé au point où j'installe grub.

Pendant chrooted, j'exécute:

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

Cela émet une tonne de sortie, y compris:

Les variables EFI ne sont pas prises en charge sur ce système

La première fois que j'en suis arrivé à ce point, j'ai poursuivi l'installation, sans savoir s'il s'agissait d'un problème réel. Il s'avère que c'était le cas, car lorsque j'ai redémarré la machine, aucun support de démarrage n'a pu être trouvé et la machine a refusé de démarrer. À ce stade, j'ai pu accéder au menu de configuration UEFI et sélectionner un fichier EFI à démarrer, et l'Arch Linux démarrerait.

Mais je reviens maintenant et réinstalle, essayant de résoudre le problème ci-dessus.

Comment installer GRUB correctement?

John Dibling
la source

Réponses:

20

Le problème était simplement que le efivarsmodule du noyau n'était pas chargé.

Cela peut être confirmé par:

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

Si vous êtes chrootconnecté à votre nouvelle installation, exitdésactivez, puis activez efivars:

exit
modprobe efivars

... puis de chrootretour. Dans mon cas, cela signifie:

chroot /mnt

mais vous devriez chrootle faire comme avant.

Une fois de retour, testez à nouveau:

efivar-tester

Cela ne signalera plus d'erreur, et vous pouvez installer grub de la même manière qu'auparavant.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
John Dibling
la source
Voir aussi rodsbooks.com/efi-bootloaders/principles.html
Michael Shigorin
5
Mais qu'en est-il d'un système qui ne prend pas en charge l'UEFI? Comment puis-je installer GRUB compatible UEFI sur ma clé USB pour installer Arch sur un nouvel ordinateur UEFI si mon ordinateur de travail ne prend pas en charge UEFI? Il doit y avoir un moyen de le faire!
trusktr
6
Le module efivars a été remplacé par "efivarfs" maintenant ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
pedroapero du
1
Pendant qu'il modprobe efivarfsfonctionne, le problème décrit par l'OP persiste. Peut-être que cette réponse a besoin d'une mise à jour? Je suis totalement à court d'idées.
Afr
3
modprobe efivarsDonne malheureusement modprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(usb live fraîchement installé)
jozxyqk
5

Vous obtiendrez cette erreur si vous avez démarré à l'aide de l'héritage et non de la méthode UEFI. Vous devez vous assurer de sélectionner l'élément de démarrage UEFI dans le menu BIOS ou de sélectionner UEFI comme méthode de démarrage par défaut.

cengique
la source
4

Je sais, c'est un fil très ancien, mais peut-être aidera-t-il pour quelqu'un. La plupart des guides proposent la même solution pour monter des systèmes de fichiers virtuels avant le chroot:

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

Mais maintenant (peut-être lié aux changements efivars / efivarfs) cette boucle saute un sous-point de montage très spécial - /sys/firmware/efi/efivarset efibootmgr / grub échoue.

Utilisez donc cette ligne à la place:

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

Histoire de réussite réelle: Debian avec 4.9.0-5 (efivars) enregistré par le live cd d'Arch Linux (choisi juste parce que peut démarrer uefi hors de la boîte) avec 4.14.9-1-ARCH (efivarfs) juste par bind-mount / sys / firmware / efi / efivars

sorrytech
la source
0

Sous Fedora 27, j'avais besoin de monter le efivarfs. J'ai fait cela à l'intérieur des chrootfs, mais cela ne fonctionnait toujours pas, car l'entrée de démarrage a été montrée avec efibootmgr- mais après le redémarrage, elle n'a été ni démarrée ni affichée une fois de retour dans le système d'exploitation en direct.

Ce qui a finalement fonctionné, a été d'utiliser grub à partir du support en direct, de déposer dans le shell et d'entrer linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot Depuis le système d'exploitation normal démarré, je pouvais courir grub2-installsans chroot, et cela a fonctionné.

Je ne sais pas si c'était juste un problème avec mon BIOS, ou il y a encore quelque chose de plus généralement incorrect, mais c'est ce qui a fait grub2-installfonctionner sans signaler aucune erreur.

# 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

user3384414
la source
-3

Tu ne peux pas! Construire et installer sont deux choses différentes, la machine sur laquelle vous construisez doit être capable d'efi. Si vous souhaitez utiliser / installer linux sur du matériel compatible uefi, gpt doit déjà exister. Vous pouvez construire gpt / mbr sur uefi mais pas les deux si votre matériel utilise de vieux bios.

Jim
la source
Veuillez lire l'article plus attentivement.
John Dibling le