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

Цепочка запуска: 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}; поведение зависит от сборки и установленного образа.