A última atualização do CentOS quebra os bootloaders GRUB2-efi

Após iniciar o yum updateCentOS, em uma reinicialização subsequente, você pode ter uma surpresa na forma de um servidor corrompido que trava na tela inicial do BIOS.



Começamos a escrever sobre o problema em fóruns e rastreadores de bugs ontem. Parece que o problema afeta todos os sistemas com um bootloader UEFI e é relevante para pelo menos CentOS 7.8 e 8.2. Então, ontem à noite não tive a sorte de atualizar e reiniciar o servidor, garantindo uma noite de diversão.



O problema se manifesta no momento da reinicialização do servidor na forma de uma tela congelada com uma tela inicial do BIOS, a partir da qual a princípio não fica claro o que está acontecendo - sem erros, sem console grub, apenas uma tela inicial congelada do BIOS.



Decisão



Se após a atualização o servidor não reinicializar, então para não obter um tijolo na próxima reinicialização, é suficiente reverter a atualização dos pacotes grub2 e suas dependências:



yum downgrade grub2\* shim\* mokutil


Se o servidor foi reinicializado e o bloco ainda foi recebido, para restaurar o bootloader, você precisará de um disco Live-CD ou uma unidade flash. A sequência de ações para reverter pacotes em um sistema não inicializável será a seguinte:



  • Boot from Live-CD (peguei a versão 7 aqui );
  • Configure uma rede;
  • Monte a partição raiz em / mnt / sysimage;
  • Monte a partição / boot em / mnt / sysimage / boot e a partição / boot / efi em / mnt / sysimage / boot / efi;
  • Execute uma sequência de comandos:



    mount -o bind /dev/urandom /mnt/sysimage/dev/urandom
    echo 'nameserver 1.1.1.1' > /mnt/sysimage/etc/resolv.conf
    chroot /mnt/sysimage
    yum downgrade grub2\* shim\* mokutil


Depois disso, o carregador será atualizado para a versão anterior e o servidor deverá inicializar.



Excluindo pacotes de atualizações



Para evitar que o carregador de inicialização falhe novamente durante a próxima atualização, você precisa adicionar os pacotes problemáticos às exceções (linha exclude=grub2* shim* mokutil) no arquivo de configuração yum /etc/yum.conf.



Versões problemáticas de pacotes para CentOS 7, é com elas que o bootloader UEFI quebra:

grub2-2.02-0.86.el7.centos.x86_64

shim-x64-15-7.el7_9.x86_64




All Articles