Tenho uma configuração de Arch Linux usando lvm que atualizei bem por anos até duas semanas atrás. Quando atualizei duas semanas atrás, executei um lvremove de um snapshot antigo do meu volume raiz e o comando travou. Desliguei minha máquina e desde então ela não inicializa. Acabei de inicializar por meio de um USB ativo para tentar descobrir o que está acontecendo. Minha saída fdisk -l mostra /dev/nvme0n1 (esta é minha única unidade) com partições p1 p2 p3, p1 é minha partição efi, p2 é minha partição de inicialização e p3 é minha partição lvm.
Por isso, fiz o seguinte ao inicializar o live usb para montar e fazer chroot no meu sistema:
vgchange -ay
mount /dev/vg0/lv_root /mnt
mount /dev/nvme0n1p2 /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot/efi
mount /dev/vg0/lv_home /mnt/home
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt /bin/bash
as coisas parecem "normais" lá (como em, minha casa todos os arquivos, basicamente como se eu tivesse inicializado normalmente). Como não sei por que não inicializa, tentei reinstalar o grub via, grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck
mas este comando reclama com o erro:
" Variáveis EFI não são suportadas neste sistema Variáveis EFI não são suportadas neste sistema grub-install: erro: efibootmgr falhou ao registrar a entrada de inicialização: Nenhum arquivo ou diretório desse tipo "
(sim, a primeira mensagem de erro aparece duas vezes). Primeiro, executar grub-install parece um método de "adivinhar e verificar" (mas não sei o que mais tentar)... e segundo, quando procuro esse erro no Google, a maioria dos resultados sugere que posso ter inicializado no modo legado, mas vejo o valor 64 se eu executar, cat /sys/firmware/efi/fw_platform_size
então sei que não é o caso (e quando inicializei na mídia live, também disse UEFI entre parênteses), então não entendo por que não consigo executar grub-install (não tenho certeza se isso vai consertar as coisas, mas vale a pena tentar, pois não sei o que mais verificar)
Edição 1: Encontrei este tópico Variáveis EFI não são suportadas neste sistema e fiz o grub-install rodar passando --no-nvram
como um sinalizador, seguido por grub-mkconfig -o /boot/grub/grub.cfg
(não notei muita diferença no grub.cfg gerado antes). Infelizmente ainda não consigo inicializar, quando tento inicializar a partir da minha unidade, ele volta direto para o menu do BIOS, não tenho certeza de como ver "erros" para o que está acontecendo..
Edição 2: Por resposta de @grawity abaixo , adicionei aos meus comandos de montagem mount -t efivarfs efivarfs /mnt/sys/firmware/efi/efivars
e então usei arch-chroot /mnt
em vez de chroot /mnt /bin/bash
- dessa vez quando eu executei grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck
funcionou! Eu segui por grub-mkconfig -o /boot/grub/grub.cfg
e então executei efibootmgr -v
e vi que minha primeira ordem de inicialização está grub_uefi HD(1,GPT,some_guid)\EFI\grub_uefi\grubx64.efi
apontando para o lugar certo. Então removi exit; umount -R /mnt; shutdown now
o USB e consegui inicializar novamente no meu sistema!
É um mistério como desligar meu PC de forma desajeitada enquanto ele travava em um "lvremove" poderia ter bagunçado tudo... mesmo assim, estou feliz por ter isso funcionando novamente
Você esqueceu de montar
efivarfs
em /sys/firmware/efi/efivars.Use
arch-chroot
ou monte-o manualmente antes de fazer chroot.Provavelmente é a opção "legacy boot" (ou seja, a que executa o MBR dessa unidade). O Grub-install não instala um MBR legado quando chamado para instalar um bootloader EFI.
Ou, se a opção de inicialização for prefixada com "UEFI:", então é ela que executa o
bootx64.efi
arquivo – que o grub-install não instala por padrão. (Você precisaria usar--removable
para obter uma cópia do GRUB naquele local 'padrão'.)De qualquer forma, se você não tiver uma entrada de inicialização dedicada e usar a opção "inicializar o disco inteiro", estará inicializando algo que sobrou de anos atrás e não a instalação nova do GRUB.