Диагностика загрузки: от 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 и список установленных ядер. Любое вмешательство в загрузочный диск должно сопровождаться резервной копией и планом отката.