Цепочка запуска: firmware, GRUB2, dracut и systemd¶
Полезно понимать не только как перезагружать НАЙС.ОС CLOUD, но и почему разные ошибки возникают на разных этапах. В этой статье приводится модель запуска, основанная на SPEC linux, grub2, dracut, systemd и общих интерфейсах Linux.
1. Процесс загрузки¶
Питание → BIOS/UEFI → поиск загрузочного устройства
↓
GRUB2 (выбор ядра и параметров)
↓
Linux kernel
↓
dracut initramfs (драйверы, root)
↓
переключение на настоящий rootfs
↓
systemd (PID 1)
↓
mounts → networkd/resolved → sshd → приложения
Порядок последних unit зависит от After=, Wants=, Requires=, DefaultDependencies и текущего графа зависимостей; это не гарантия, что sshd всегда запускается только после полного DNS или NTP.
2. BIOS и UEFI¶
BIOS запускает загрузочный код согласно выбранному устройству и схеме разделов. UEFI использует загрузочные записи, исполняемые .efi и обычно отдельный ESP-раздел FAT. Команды ремонта отличаются; не переносите процедуру grub2-install для BIOS на UEFI без анализа текущей конфигурации.
3. GRUB2¶
GRUB предоставляет меню выбора ядра/режима восстановления, передаёт ядру cmdline и указывает initramfs. В рассматриваемом linux.spec применяется генерация /boot/grub2/grub.cfg, а не BLS как основной механизм. При этом расположение ESP и соответствие его записей ядрам нужно подтвердить на установленной системе.
4. initramfs и dracut¶
Ранний rootfs содержит необходимые модули и исполняемые инструменты для обнаружения настоящего корневого раздела. При LVM, NVMe, шифровании, специальном контроллере или сетевом root ошибочная initramfs-конфигурация может остановить систему ещё до полноценного systemd. См. ядро и initramfs.
5. systemd и target¶
После switch_root PID 1 обрабатывает unit. Разные файловые системы, сеть, временные службы и приложение запускаются по графу зависимостей. Для анализа используйте:
systemd-analyze time
systemd-analyze critical-chain
systemctl get-default
systemctl list-dependencies default.target --no-pager
journalctl -b -p warning --no-pager
6. Как правильно фиксировать отказ¶
В журнале инцидента укажите: версию /etc/os-release, uname -r, тип прошивки, настройки загрузочного диска, точный текст ошибки, последний работавший релиз и доступность rescue console. Снимок экрана с ошибкой dracut и полная строка root= полезнее, чем описание «не грузится».
Источники: SPEC Core/{linux,grub2,dracut,systemd}; поведение зависит от сборки и установленного образа.