Анатомия процесса загрузки Linux: от ядра до systemd

Вы нажали кнопку питания. Экран моргнул. Через пятнадцать секунд вы видите рабочий стол. Магия? Нет. Сложная, отлаженная цепочка событий, которая может рассыпаться в любой момент. Понимание этой цепочки — не просто прихоть администратора, а навык, который спасает от нервного тика. Давайте разберем, что именно происходит, и почему systemd стал одновременно и спасением, и проклятием.
Этап 1. Железо просыпается. BIOS/UEFI и встреча с GRUB
Всё начинается с прошивки материнской платы. BIOS или UEFI запускают POST — самопроверку. Это как утренний кофе для компьютера: проверили память, вентиляторы, шины. Затем прошивка ищет загрузочное устройство. Раньше (в эпоху BIOS) это была тупая последовательность: попробуй дискету, потом HDD. Сейчас UEFI умнее — он может загрузить ядро напрямую, но чаще передает эстафету загрузчику.
Здесь выходит на сцену GRUB. Он загружает меню. Видите список ядер? Это он. GRUB подтягивает в память образ ядра и initramfs — временную файловую систему.
Личное наблюдение автора: Недавно я заметил, что 80% проблем с незагружающейся системой решаются именно в меню GRUB. Нажали 'e', дописали параметр single в конце строки с ядром и вошли в однопользовательский режим. Это быстрее, чем гуглить панику ядра. Запомните этот трюк.
Этап 2. Ядро берет управление. Распаковка и initramfs
GRUB передает управление ядру. Ядро — это самораспаковывающийся архив. Оно распаковывается в памяти и запускает функцию start_kernel(). На этом этапе инициализируются подсистемы: планировщик, управление памятью, драйверы. Система еще не видит ваш жесткий диск — у нее нет драйверов для файловой системы.
Для этого и нужен initramfs. Это крошечная корневая файловая система в оперативной памяти. Ядро запускает скрипт /init внутри этого архива. Его задача — загрузить недостающие драйверы (для SATA, NVMe, LVM или шифрования LUKS) и смонтировать настоящую корневую файловую систему.
В чем суть: initramfs — это мост. Он позволяет ядру, которое не знает о вашем сложном RAID-массиве, найти и подключить «настоящий» корень.
Этап 3. Systemd: диктатор или спаситель?
После того как initramfs переключает корень (команда pivot_root), на сцену выходит процесс с PID 1. В современных дистрибутивах это systemd. Он запускает все остальные службы: сеть, графический интерфейс, SSH.
Почему systemd? Посмотрите на альтернативы. SysV init запускал скрипты последовательно. Это медленно. Upstart пытался использовать события, но был сложен. Systemd использует декларативные юниты. Вы просто пишете: «Эта служба должна работать после этой». И systemd запускает всё параллельно.
Вот ключевое сравнение, которое я держу в голове:
- SysV init: Как очередь в советском магазине. Каждый ждет своей очереди. Медленно и предсказуемо.
- Systemd: Как шведский стол. Все берут еду одновременно, но кто-то ждет, пока нарежут хлеб. Быстро, но сложно понять, кто кого ждет.
Systemd дает вам инструменты диагностики. Команда systemd-analyze blame покажет, какой юнит тормозит загрузку. Это бесценно. Вы увидите, что служба NetworkManager-wait-online ждала сеть 30 секунд. Отключили её — загрузка ускорилась.
Типичные сбои: как не переустанавливать систему каждую неделю
Система зависла после выбора ядра? Скорее всего, проблема в драйверах или параметрах ядра. Не паникуйте. Вот короткий план действий:
- На экране GRUB нажмите 'e', найдите строку, начинающуюся с linux, и допишите в конец nomodeset. Это отключит загрузку графических драйверов. Если загрузилось — проблема в драйвере видеокарты.
- Если система падает с ошибкой «Kernel panic — not syncing: VFS: Unable to mount root fs», значит, ядро не может найти корневой раздел. Проверьте параметр root= в GRUB.
- Используйте journalctl -b -p err после загрузки. Это покажет только ошибки текущей сессии. Не читайте весь лог — смотрите на красное.
Одна из самых частых ошибок — неправильная запись в /etc/fstab. Если система не может смонтировать раздел, initramfs переходит в emergency shell. Это черный экран с приглашением. Не пугайтесь. Введите mount -o remount,rw /, чтобы сделать корневую файловую систему доступной для записи, и исправьте fstab.
Итог от автора: Анатомия загрузки Linux — это не теория. Это практический инструмент. Знание того, где заканчивается работа GRUB и начинается работа ядра, превращает черный ящик в понятную схему. Не бойтесь логов. Бойтесь незнания. Пара минут с systemd-analyze или dmesg сэкономят вам часы гугления и переустановок.












