Загрузка — эстафета: каждая ступень готовит место следующей и передаёт ей управление.
Первой работает прошивка машины (BIOS или UEFI): она проверяет оборудование и запускает загрузчик с диска. Загрузчик GRUB читает /boot/grub/grub.cfg, загружает в память ядро и initramfs — маленькую временную корневую ФС — и передаёт ядру командную строку. Её видно в /proc/cmdline:
BOOT_IMAGE — файл ядра, root=UUID=… — где лежит настоящая корневая ФС, console=ttyS0 — куда печатать сообщения загрузки: в последовательный порт, через который к машине подключён и твой терминал.
Ядро запускает оборудование и программы из initramfs, а те находят корневую ФС по root= и монтируют её. Тогда ядро запускает первый процесс — systemd с PID 1, — и тот запускает юниты, пока система не дойдёт до цели загрузки.
Из этих ступеней systemd-analyze меряет две последние: kernel — от старта ядра до запуска systemd, userspace — от systemd до цели. Прошивку и GRUB на этой машине он не видит.
Обновление положило в /boot новое ядро, старое осталось рядом. Какая ступень загрузки решит, с каким ядром машина поднимется?
-
systemd запускается уже ядром, которое к этому моменту выбрано и работает. Выбор ядра — раньше, в загрузчике.
-
initramfs загружает в память тот же GRUB вместе с ядром: выбор к этому моменту уже сделан.
Ядро выбирает GRUB: он читает /boot/grub/grub.cfg, загружает выбранное ядро с его initramfs и передаёт ядру командную строку. Какое ядро работает сейчас, видно в /proc/cmdline и в uname -r.
Главное в шаге
- Загрузка идёт по ступеням: прошивка → GRUB → ядро с initramfs → systemd → цель загрузки.
-
GRUB выбирает ядро и передаёт ему командную строку из
/proc/cmdline: в ней корневая ФС и консоль. -
systemd-analyzeмеряет ядро (kernel) и службы (userspace), а прошивку и загрузчик здесь не видит.