Последнее обновление CentOS ломает GRUB2-efi загрузчики
После запуска yum update
на CentOS при последующей перезагрузке вас может поджидать сюрприз в виде окирпиченного сервера, который зависает на заставке биоса.
О проблеме на форумах и багтрекерах начали писать вчера. Похоже, что проблема затрагивает все системы с UEFI загрузчиком и актуальна как минимум для версий CentOS 7.8 и 8.2. Вот и мне вчера под вечер не повезло обновиться и перезагрузить сервер, обеспечив себе ночь веселья.
Проблема проявляет себя в момент перезагрузки сервера в виде зависшего экрана с заставкой биоса, от чего сначала вообще не понятно, что происходит — ни ошибок, ни консоли grub, только зависшая заставка bios.
Решение
Если после обновления сервер не перезагружался, то чтобы не получить кирпич при последующей перезагрузке достаточно откатить обновление grub2 пакетов и их зависимостей:
yum downgrade grub2\* shim\* mokutil
Если же сервер перезагрузили и кирпич все-таки получили, то чтобы восстановить загрузчик понадобится Live-CD диск или флешка. Последовательность действий для отката пакетов на не грузящейся системе будет следующей:
После этого загрузчик обновится на старую версию и сервер должен загрузиться.
Исключение пакетов из обновления
Чтобы при следующем обновлении загрузчик опять не сломался, надо добавить проблемные пакеты в исключения (строка exclude=grub2* shim* mokutil
) в файл конфигурации yum /etc/yum.conf
.
Проблемные версии пакетов для CentOS 7, именно с ними ломается UEFI загрузчик: grub2-2.02-0.86.el7.centos.x86_64
shim-x64-15-7.el7_9.x86_64