В Ubuntu и ряде других дистрибутивов GRUB2 запоминает неудачную загрузку (recordfail): если система не загрузилась до конца, при следующем старте меню загрузки остаётся на экране и ждёт ввода с клавиатуры. На обычном компьютере это удобно, но на сервере без монитора такой «вечный» экран означает, что машина не стартует и недоступна по сети, пока вы не подключитесь через консоль. Ниже — как это отключить.
Признаки проблемы
- После аварийной перезагрузки сервер не отвечает на ping и SSH.
- В KVM-консоли виден экран GRUB с ожиданием выбора.
- Через Rescue System в
/boot/grub/grubenvприсутствует строкаrecordfail=1.
Настройка
Отредактируйте /etc/default/grub и задайте таймаут для режима recordfail:
GRUB_TIMEOUT=5
GRUB_RECORDFAIL_TIMEOUT=5
Для немедленной загрузки используйте GRUB_TIMEOUT=0 и GRUB_RECORDFAIL_TIMEOUT=0, но тогда выбрать другое ядро или режим восстановления через консоль можно будет только при ручном вмешательстве (клавиша Shift или Esc во время старта в BIOS-режиме). Поэтому на серверах разумнее оставить небольшой таймаут, например 3–5 секунд.
Примените изменения:
sudo update-grub # Debian/Ubuntu
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL-семейство (BIOS)
Для UEFI в RHEL-семействе путь другой (/boot/efi/EFI/<дистрибутив>/grub.cfg). Подробнее про загрузку в режиме UEFI — в статье UEFI и Legacy BIOS.
Сброс флага recordfail
sudo grub-editenv list
sudo grub-editenv - unset recordfail
Если сервер не загружается, сделайте то же из Rescue System: смонтируйте корневой раздел и раздел /boot, выполните chroot (пример) и запустите команду. В системах с RAID1 и несколькими загрузочными дисками убедитесь, что GRUB установлен на оба.
Проверка
- Откройте
/boot/grub/grub.cfgи найдитеrecordfail_timeout— значение должно совпадать с заданным. - Выполните перезагрузку и убедитесь, что сервер вернулся в сеть.
- Имитируйте аварийный сброс только на тестовом сервере.
Другие причины зависания на GRUB
- GRUB установлен на диск, который не первый в порядке загрузки BIOS.
- Повреждён
grub.cfgили раздел/boot: проверка файловой системы. - Слишком длинное меню с несколькими ядрами и режимом восстановления.
Частые вопросы
Безопасно ли ставить таймаут 0?
Загрузка станет быстрее, но у вас не будет шанса выбрать другое ядро. На серверах с KVM-доступом лучше оставить 3–5 секунд.
Нужно ли обновлять initramfs?
Нет: параметры GRUB применяются командой update-grub.
Работает ли это в Debian?
Механизм recordfail есть в Ubuntu и в Debian-производных; в чистом Debian он обычно не включается, но параметры безопасны.