Каждый раз, когда вы включаете свой компьютер с Linux, он проходит через серию этапов перед тем, как наконец отобразить экран входа в систему, который запрашивает ваше имя пользователя или пароль. Существует 4 различных этапа, через которые проходит каждое распространенное распределение Linux в типичном процессе загрузки.

В этом руководстве мы подробно рассмотрим различные шаги, предпринимаемые операционной системой Linux с момента включения питания до момента входа в систему. Обратите внимание, что в этом руководстве учитываются только загрузчик GRUB2 и инициализатор systemd, поскольку они в настоящее время используются подавляющим большинством современных дистрибутивов Linux.
Процесс загрузки состоит из следующих 4 этапов, о которых мы подробнее поговорим:
- Проверка целостности BIOS (POST)
- Загрузка загрузчика (GRUB2)
- Инициализация ядра
- Запуск systemd, родителя всех процессов
1. Проверка целостности BIOS (POST)
Процесс загрузки обычно инициируется, когда пользователь нажимает кнопку включения — если ПК был уже выключен — или перезагружает систему, используя либо графический интерфейс, либо командную строку.
Когда система Linux включается, BIOS (Basic Input Output System) включается и выполняет тест самопроверки (POST). Это проверка целостности, которая выполняет множество диагностических проверок.
POST проверяет работоспособность аппаратных компонентов, таких как HDD или SSD, клавиатура, ОЗУ, порты USB и любое другое аппаратное устройство. Если какое-либо аппаратное устройство не обнаруживается или если происходит сбой в работе любого из устройств, такого как поврежденный HDD или SSD, на экране появляется сообщение об ошибке, требующее вашего вмешательства.
В некоторых случаях может прозвучать звуковой сигнал, особенно в случае отсутствия модуля ОЗУ. Однако, если ожидаемое аппаратное устройство присутствует и функционирует как ожидается, процесс загрузки переходит к следующему этапу.
2. Загрузчик (GRUB2)
После завершения POST и устранения препятствий, BIOS проверяет MBR (Master Boot Record) на наличие загрузчика и информации о разделении диска.
MBR – это 512-байтный код, расположенный на первом секторе жесткого диска, который обычно называется /dev/sda
или /dev/hda
в зависимости от архитектуры вашего жесткого диска. Однако иногда MBR может находиться на Live USB или DVD установке Linux.
В Linux существуют 3 основных типа загрузчиков: LILO, GRUB, и GRUB2. Загрузчик GRUB2 является последним и основным загрузчиком в современных дистрибутивах Linux, что определяет наше решение не упоминать два других, устаревших с течением времени.
GRUB2 означает GRand Unified Bootloader версии 2. Как только BIOS находит загрузчик grub2, он выполняет его и загружает в основную память (RAM).
Меню grub2 позволяет вам сделать несколько вещей. Оно позволяет выбрать версию ядра Linux, которую вы хотели бы использовать. Если вы обновляли свою систему несколько раз, вы можете увидеть перечисленные различные версии ядра. Кроме того, оно дает вам возможность редактировать некоторые параметры ядра, нажимая комбинацию клавиш на клавиатуре.

Также, в настройке двойной загрузки, где у вас есть несколько установок ОС, меню grub позволяет выбрать, в какую ОС загрузиться. Файл конфигурации grub2 – это файл /boot/grub2/grub2.cfg. Основная цель GRUB – загрузить ядро Linux в основную память.
3. Инициализация ядра
Ядро – это ядро любой системы Linux. Оно взаимодействует с аппаратным обеспечением ПК и базовыми процессами. Ядро контролирует все процессы на вашей системе Linux. Как только выбранное ядро Linux загружается загрузчиком, оно должно самораспаковаться из своей сжатой версии перед выполнением любой задачи. После самораспаковки выбранное ядро монтирует корневую файловую систему и инициализирует программу /sbin/init, обычно называемую init.

Init – это всегда первая программа, которая выполняется и назначается идентификатор процесса или PID 1. Это процесс init, который порождает различные демоны и монтирует все разделы, указанные в файле /etc/fstab.
Затем ядро монтирует начальный RAM-диск (initrd), который является временной корневой файловой системой до момента монтирования реальной корневой файловой системы. Все ядра находятся в каталоге /boot
вместе с образом начального RAM-диска.
4.Запуск Systemd
Наконец, ядро загружает Systemd, который является заменой старой инициализации SysV. Systemd является матерью всех процессов Linux и управляет, среди прочего, монтированием файловых систем, запуском и остановкой служб, чтобы упомянуть лишь несколько вещей.
Systemd использует файл /etc/systemd/system/default.target для определения состояния или цели, в которую должна загружаться система Linux.
- Для настольной рабочей станции (с графическим интерфейсом) значение цели по умолчанию равно 5, что эквивалентно уровню запуска 5 для старой инициализации SystemV.
- Для сервера значение цели по умолчанию – multi-user.target, что соответствует уровню запуска 3 в SysV init.
Вот разбивка целей systemd:
- poweroff.target (уровень запуска 0): Выключение или выключение системы.
- rescue.target (уровень запуска 1): запускает сеанс спасения оболочки.
- multi-user.target (уровни запуска 2,3,4): Настроивает систему на не-графическую (консольную) многопользовательскую систему.
- graphical.target (runlevel 5): Устанавливает систему для использования графического многопользовательского интерфейса с сетевыми службами.
- reboot.target (runlevel 6): перезагружает систему.
Для проверки текущей цели на вашей системе выполните команду:
$ systemctl get-default

Вы можете переключиться с одной цели на другую, выполнив следующую команду в терминале:
$ init runlevel-value
Например, init 3 настраивает систему на не графическое состояние.
Команда init 6 перезагружает вашу систему, а init 0 выключает систему. Обязательно используйте команду sudo, когда хотите переключиться на эти две цели.
Процесс загрузки завершается, когда systemd загружает все демоны и устанавливает цель или значение уровня выполнения. Именно в этот момент вам будет предложено ввести имя пользователя и пароль, после чего вы получите доступ к вашей системе Linux.