La dernière mise à jour de CentOS rompt les chargeurs de démarrage GRUB2-efi

Après avoir démarré yum updatesur CentOS, lors d'un redémarrage ultérieur, vous pourriez être surpris sous la forme d'un serveur corrompu qui se bloque sur l'écran de démarrage du BIOS.



Nous avons commencé à écrire sur le problème sur les forums et les suiveurs de bogues hier. Il semble que le problème affecte tous les systèmes avec un chargeur de démarrage UEFI et est pertinent pour au moins CentOS 7.8 et 8.2. Alors hier soir, je n'ai pas eu la chance de mettre à jour et de redémarrer le serveur, m'assurant une nuit de plaisir.



Le problème se manifeste au moment du redémarrage du serveur sous la forme d'un écran gelé avec un écran de démarrage du BIOS, à partir duquel au début on ne sait pas du tout ce qui se passe - pas d'erreurs, pas de console grub, seulement un écran de démarrage de bios gelé.



Décision



Si après la mise à jour le serveur n'a pas redémarré, alors pour ne pas avoir de brique au prochain redémarrage, il suffit d'annuler la mise à jour des packages grub2 et de leurs dépendances:



yum downgrade grub2\* shim\* mokutil


Si le serveur a été redémarré et que la brique a toujours été reçue, vous aurez besoin d'un disque Live-CD ou d'un lecteur flash pour restaurer le chargeur de démarrage. La séquence d'actions pour restaurer des packages sur un système non amorçable sera la suivante:



  • Démarrez depuis Live-CD (j'ai pris la version 7 ici );
  • Configurer un réseau;
  • Montez la partition racine sur / mnt / sysimage;
  • Montez la partition / boot dans / mnt / sysimage / boot et la partition / boot / efi dans / mnt / sysimage / boot / efi;
  • Exécutez une séquence de commandes:



    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


Après cela, le chargeur sera mis à jour avec l'ancienne version et le serveur devrait démarrer.



Exclure les packages des mises à jour



Pour éviter que le chargeur de démarrage ne s'arrête à nouveau lors de la prochaine mise à jour, vous devez ajouter les packages problématiques aux exceptions (ligne exclude=grub2* shim* mokutil) dans le fichier de configuration yum /etc/yum.conf.



Versions problématiques des packages pour CentOS 7, c'est avec eux que le bootloader UEFI se casse:

grub2-2.02-0.86.el7.centos.x86_64

shim-x64-15-7.el7_9.x86_64




All Articles