“Variáveis ​​EFI não são suportadas neste sistema”

19

Estou tentando instalar o Arch linux em um novo (e muito ruim) notebook HP Pavillion 15.

Esta é uma máquina baseada em UEFI. Depois de várias mudanças, consegui chegar bem longe. O modo legado está desativado na configuração do sistema, e eu inicializei o EFI no Arch DVD que gravei e progredi no Guia do Iniciante do Arch e no Guia de Instalação mais avançado até o ponto em que estou instalando o grub.

Enquanto chrooted, eu executo:

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

Isso emite uma tonelada de produção, incluindo:

Variáveis ​​EFI não são suportadas neste sistema

A primeira vez que cheguei a esse ponto, continuei com a instalação, sem saber se era um problema real. Acontece que, como quando eu reiniciei a máquina, nenhum meio inicializável foi encontrado e a máquina se recusou a inicializar. Eu era capaz de acessar o menu de configuração UEFI e selecionar um arquivo EFI para inicializar, e o Arch Linux inicializava.

Mas agora estou voltando e reinstalando novamente, tentando corrigir o problema acima.

Como posso instalar o GRUB corretamente?

John Dibling
fonte

Respostas:

20

O problema era simplesmente que o efivarsmódulo do kernel não estava carregado.

Isso pode ser confirmado por:

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

Se você tiver chrooteditado sua nova instalação, exitsaia e ative efivars:

exit
modprobe efivars

... e depois chrootvoltar. No meu caso, isso significa:

chroot /mnt

mas você deve chrootda mesma maneira que você fez antes.

Quando voltar, teste novamente:

efivar-tester

Isso não reportará mais um erro e você pode instalar o grub da mesma maneira que antes.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
John Dibling
fonte
Veja também rodsbooks.com/efi-bootloaders/principles.html
Michael Shigorin
5
Mas e em um sistema que não suporta UEFI? Como no mundo eu instalo o GRUB compatível com UEFI no meu pendrive USB para instalar o Arch em um novo computador UEFI se meu computador de trabalho não suporta UEFI? Tem que haver uma maneira de fazer isso!
trusktr
6
O módulo efivars foi substituído por "efivarfs" agora ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
Pedroapero # 12/15
11
Enquanto modprobe efivarfsfunciona, o problema descrito pelo OP persiste. talvez esta resposta precise de uma atualização? Estou totalmente sem idéias.
Afr
3
Infelizmente modprobe efivarsmodprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(recém-instalado Live USB)
jozxyqk
5

Você receberá esse erro se inicializar usando o legado e não o método UEFI. Você precisa selecionar o item de inicialização UEFI no menu BIOS ou selecionar UEFI como o método de inicialização padrão.

cengique
fonte
4

Eu sei, esse é um tópico muito antigo, mas talvez ajude alguém. A maioria dos guias sugere a mesma solução para montar sistemas de arquivos virtuais antes do chroot:

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

Mas agora (talvez relacionado a alterações efivars / efivarfs) esse loop ignora um sub-ponto de montagem muito especial - /sys/firmware/efi/efivarse o efibootmgr / grub falha.

Então use esta linha:

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

História de sucesso real: Debian com 4.9.0-5 (efivars) salvo pelo live cd do Arch Linux (escolhido apenas porque pode inicializar o uefi imediatamente) com 4.14.9-1-ARCH (efivarfs) apenas por bind-mount / sys / firmware / efi / efivars

sorrytech
fonte
0

Executando o Fedora 27, eu precisava montar o efivarfs. Eu fiz isso dentro dos chrootfs, no entanto, isso ainda não estava funcionando, pois a entrada de inicialização foi mostrada comefibootmgr - mas, após a reinicialização, ela foi inicializada novamente e não foi mostrada novamente no SO ao vivo.

O que finalmente funcionou, foi usar o grub do meio ativo, soltar no shell e entrar linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot . No sistema operacional normal inicializado, eu poderia executar grub2-installsem chroot, e funcionou.

Não tenho certeza se isso foi apenas um problema no meu BIOS ou se ainda há algo errado de maneira geral, mas foi o que foi grub2-installexecutado sem relatar nenhum erro.

# 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
fonte
-3

Você não pode! Construir e instalar são duas coisas diferentes: a máquina em que você constrói deve ser capaz de usar o uefi. Se você deseja usar / instalar o linux no hardware compatível com uefi, o gpt já deve existir. Você pode criar gpt / mbr no uefi, mas não ambos, se o seu hardware usar bios antigo.

Jim
fonte
Por favor, leia o post com mais atenção.
precisa saber é o seguinte