Après avoir démarré yum update
sur 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