Перейти к содержанию

Диагностика загрузки: от UEFI до systemd

Загрузка НАЙС.ОС CLOUD проходит несколько разных этапов: прошивка BIOS/UEFI, загрузчик GRUB2, ядро Linux, initramfs от dracut, монтирование корневой файловой системы и переход к полноценному systemd. Ошибка в одном из этапов требует своих инструментов восстановления, а не универсальной команды «переустановить GRUB».

1. Начинаем с безопасной инвентаризации работающей системы

cat /etc/os-release
uname -a
findmnt -no SOURCE,FSTYPE,OPTIONS /
lsblk -f
ls -l /boot/ /boot/grub2/ 2>/dev/null
cat /proc/cmdline
systemd-analyze time
systemd-analyze critical-chain
journalctl -b -p warning --no-pager -n 100

Для UEFI дополнительно проверьте test -d /sys/firmware/efi && echo UEFI || echo BIOS_or_other. Это не доказывает, что ESP смонтирован в /boot/efi — его местоположение нужно проверить через findmnt.

2. Как понять, где остановилась загрузка

Наблюдение Этап Первая проверка
Нет логотипа/меню GRUB Прошивка/загрузчик UEFI BootOrder, диск, ESP, консоль
GRUB есть, ядро не загружается GRUB, ядро, initramfs Список пунктов, файлы /boot, параметры ядра
dracut-initqueue timeout Initramfs Драйвер диска, UUID, LVM/cryptsetup
Emergency mode Монтирования/systemd fstab, зависимости, journal
Система загрузилась без сети networkd/cloud-init networkctl, .network, iptables
Долго идёт запуск systemd или ожидание сети systemd-analyze critical-chain

3. История загрузок

journalctl --list-boots
journalctl -b -1 -p err --no-pager -n 100
journalctl -k -b --no-pager -n 150

Запись прошлой загрузки (-b -1) доступна только если журналы сохранены между перезагрузками. Не рассчитывайте на этот способ без проверки фактической политики хранения journal.

4. Как обслуживается ядро в SPEC

Core/linux/SPECS/linux.spec (6.12.90) содержит %posttrans с вызовами dracut --force --kver, grub2-mkconfig -o /boot/grub2/grub.cfg и попыткой выбора нового пункта GRUB. В скриптах часть ошибок скрывается через || :. Поэтому успешная установка RPM не гарантирует, что initramfs и GRUB обновились.

Проверяйте наличие файлов для реально установленного ядра:

rpm -q linux
uname -r
ls -lh /boot/vmlinuz-* /boot/initramfs-*.img 2>/dev/null
command -v dracut
command -v grub2-mkconfig

У команды uname -r вывод текущего запущенного ядра, не обязательно последней установленной версии.

5. Предупреждения по исправлению

  • Не переписывайте ESP, пока не выяснили UEFI/BIOS и действующие пути.
  • Не выполняйте grub2-install наугад на production-диске.
  • Не удаляйте старые версии ядра до успешного старта нового.
  • Не выполняйте dracut --force без точного --kver, если не определили, для какого ядра нужен образ.
  • Не меняйте root=, rd.lvm.*, rd.luks.* без подтверждённой схемы корневой ФС.

6. Когда нужна аварийная консоль

Если система не достигает SSH, переходите к VM console/IPMI/rescue ISO; заранее сохраните lsblk -f, /etc/fstab, /proc/cmdline, файлы GRUB и список установленных ядер. Любое вмешательство в загрузочный диск должно сопровождаться резервной копией и планом отката.

См. GRUB2, initramfs, fstab.