Процесс загрузки: Ядро
100%

Загрузка системы · Урок 4

Процесс загрузки: Ядро

Узнайте, как ядро инициализирует оборудование, запускает раннее пространство initramfs, достигает настоящего корня и запускает PID 1.

Получив управление, ядро Linux инициализирует управление памятью, планирование, прерывания, встроенные драйверы, механизмы безопасности и другие основные подсистемы. Оно разбирает командную строку и готовится запустить первый процесс пространства пользователя.

Зачем нужно раннее пространство пользователя

Простую корневую файловую систему иногда можно смонтировать драйверами, встроенными в ядро. Более сложным системам до доступа к настоящему корню нужны модули и инструменты. Например:

  • модули контроллера хранения или файловой системы;
  • разблокировка зашифрованного корня;
  • сборка LVM или RAID;
  • настройка сети для сетевого корня;
  • обнаружение устройств и разрешение постоянных идентификаторов.

Initramfs упаковывает эти компоненты в раннюю среду пространства пользователя, передаваемую вместе с ядром.

Какую задачу обычно решает initramfs?

Initramfs и устаревший initrd

Современный initramfs обычно состоит из одного или нескольких, часто сжатых, архивов cpio, которые ядро распаковывает в начальную корневую файловую систему. Затем ядро выполняет раннюю программу /init из этой среды.

Устаревший initrd концептуально представляет образ файловой системы, загружаемый в блочное устройство в RAM и монтируемый оттуда. В именах файлов и командах загрузчика термины нередко смешиваются, поэтому проверяйте реальные инструменты и не выводите формат лишь из названия.

Initramfs должен соответствовать ядру и схеме загрузки. Отсутствующие модули, устаревшие идентификаторы устройств либо пропущенные средства шифрования и LVM могут сделать новое ядро незагружаемым, даже если его образ исправен.

В каком виде современный initramfs обычно передаётся ядру?

Переход к настоящему корню

Раннее пространство пользователя интерпретирует параметры вроде root=, ожидает нужные устройства, активирует слои хранения и монтирует заданную корневую файловую систему. Затем операция смены корня делает её новым / и по возможности освобождает временную раннюю среду.

Начальный параметр ro может поддерживать проверки целостности и контролируемый запуск, но точная последовательность зависит от дистрибутива. Проверки файловой системы выполняются в пространстве пользователя, а initramfs или более поздняя система инициализации может перемонтировать корень для чтения-записи, если это разрешает политика.

Что происходит после успешного монтирования нужного настоящего корня ранним пространством пользователя?

Запуск PID 1

Ядро выполняет настроенную программу init, обычно доступную по пути вроде /sbin/init или выбранную параметром init=. Она получает PID 1 и берёт на себя основную среду служб пространства пользователя.

Если выполнить пригодную программу init невозможно, ядро не может перейти к нормальной пользовательской системе и обычно сообщает об ошибке загрузки или panic. Ищите самый ранний сбойный уровень: ядро и командная строка, содержимое initramfs, обнаружение корня, его монтирование или выполнение PID 1.

Какова последняя крупная передача ядра на этом упрощённом этапе загрузки?

Урок завершён

Вы завершили Процесс загрузки: Ядро

Теперь вы умеете проследить загрузку ядра через раннее пространство пользователя до PID 1.

  • Отличать встроенную инициализацию ядра от загружаемых ранних модулей.

  • Связывать initramfs с временным корнем на основе cpio и /init.

  • Прослеживать сборку хранилища и переход к настоящему корню.

  • Определять выполнение PID 1 как передачу пространству пользователя.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Загрузка системы