“kernel doesn’t support EFI handover”
No início de Março, ocorreu uma atualização do Kernel “corrente” do Arch Linux para a revisão linux-6.2.2, e depois isso o Grub do openSUSE e do Mageia não conseguia mais carregar o Arch Linux: — “kernel doesn’t support EFI handover”.
Em resumo, o Kernel deixou de ser compilado com o “deprecated EFI handover protocol”, e o Arch Linux adotou essa novidade — o que o deixou incompatível com o Grub da maioria das outras distros.
Entrei nas configurações EFI da placa-mãe e selecionei o Grub do próprio Arch, mas tudo indica que o deletei em algum momento, por distração. — Ele ainda aparecia nas configurações, mas não existia mais, de fato.
Encontrei várias sugestões para solucionar o problema — fazer downgrade para Kernel 6.1, compilar com o suporte ao “EFI handover” habilitado etc. — mas decidi investir em 2 coisas mais simples:
-
Instalar o Kernel LTS
-
Reinstalar o Grub do Arch
Para isso, baixei uma imagem ISO atualizada do Arch Linux, “queimei” em DVD, e iniciei uma sessão Live:
ping google.com
mount /dev/sda3 /mnt
mount /dev/sdb3 /mnt/home
mount /dev/sda1 /mnt/boot/efi
arch-chroot /mnt
488 2023-03-06_15-30-01 script
479 2023-03-06_15-30-34 date; pacman -Syyu; date
480 2023-03-06_15-32-15 pacman -S linux-lts
481 2023-03-06_15-38-34 grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub2 --recheck
482 2023-03-06_15-39-31 grub-mkconfig -o /boot/grub/grub.cfg
483 2023-03-06_15-40-59 exit
492 2023-03-06_15-49-30 chown 1000:1000 typescript
498 2023-03-06_16-08-00 efibootmgr
499 2023-03-06_16-10-05 efibootmgr -o 0000,0003,000A,0002,0005,000E,0004,000B,0001,000F,0007,0008,0009,0006
A sessão Live do Arch Linux já se loga automaticamente como Root, usando ZSH. — Comandei “bash” para mudar isso. — Em seguida, testei a Rede, montei as partições necessárias e fiz o “chroot” na partição-raiz do Arch instalado.
- Os comandos ficaram embaralhados no
bash_history
, por isso tive de colocá-los na ordem correta.
Executei o comando “script”, para salvar todas as saídas em um arquivo “typescript” — então, atualizei o Arch pelo “pacman”, instalei o Kernel LTS, reinstalei o Grub na partição EFI, atualizei o Grub e saí. — Mais tarde, passei a propriedade do arquivo “typescript” para o usuário.
Devolvendo o EFI para o Grub do openSUSE
Depois de testar o novo Grub do Arch Linux, devolvi o EFI para o Grub do openSUSE, atualizei o Grub do openSUSE — e tudo voltou a funcionar como antes.