Kernel 6.2.2 do Arch Linux não aceita mais o Grub de outras distros

“kernel doesn't support EFI handover”640x348
“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.

640x360
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.

1 curtida

Uai, vai saber porque a equipe do Arch decidiu remover “EFI handover” da compilação do Linux.
Poderia ser mais genérico mas esse é o poder do kernel Linux ser modular.

Conforme alguém especulou, nesse tópico… “o Arch está usando o grub upstream quase puro”.

A turma do Linus Torvalds agora faz assim… e o Arch incorpora, sem mais.