Ядро запускает первый процесс пространства пользователя с PID 1 в пространстве имён PID. В полной системе Linux этот init-процесс создаёт среду служб. В контейнере PID 1 может быть небольшим init-адаптером или самим приложением, но у него всё равно особые обязанности по сигналам и сбору дочерних процессов.
Загрузка системы · Урок 5
Процесс загрузки: Init
Узнайте, как PID 1 инициализирует пространство пользователя, контролирует службы, собирает дочерние процессы и координирует завершение работы.
Обязанности PID 1
Система инициализации обычно:
- запускает и контролирует службы, входы, монтирования и другие единицы работы;
- упорядочивает действия согласно зависимостям и настроенному целевому состоянию;
- принимает и собирает осиротевшие дочерние процессы;
- реагирует на сбои служб согласно политике;
- координирует корректное завершение и перезагрузку.
Точная граница различается. Управление устройствами, сетью, журналированием и заданиями по расписанию может выполняться отдельными программами под контролем init, а не кодом внутри PID 1.
Какая обязанность особенна для PID 1 в его пространстве имён PID?
System V Init и уровни выполнения
Традиционный sysvinit использует конфигурацию вроде /etc/inittab и сценарии запуска и остановки для уровней выполнения. Уровень представляет режим работы, но значения номеров могут различаться между дистрибутивами. Порядок сценариев задаётся соглашениями и может расширяться или распараллеливаться инструментами дистрибутива.
Не определяйте активную init-систему только по наличию /etc/init.d/: сценарии совместимости могут сохраняться, даже если PID 1 относится к другой реализации.
Что представляет уровень выполнения System V?
Событийные системы и системы зависимостей
Upstart ввёл событийную модель заданий и использовался в старых выпусках Ubuntu и некоторых других системах. Сейчас он представляет в основном исторический или устаревший эксплуатационный интерес.
systemd широко применяется в современных дистрибутивах общего назначения. Он представляет службы, сокеты, монтирования, таймеры, устройства, цели и другие ресурсы как юниты. Декларативные зависимости и механизмы активации позволяют независимым задачам выполняться параллельно с сохранением обязательного порядка.
Среди других действующих схем инициализации и контроля — OpenRC, runit, s6 и BusyBox init. «Самая новая» не является полезным правилом совместимости: определите, что запущено в конкретной системе, и используйте его документацию.
Как systemd представляет управляемые ресурсы, например службы и монтирования?
Определение работающей init-системы
Исследуйте PID 1, а не гадайте по установленным файлам:
$ ps -p 1 -o pid,comm,args=
$ readlink /proc/1/exe
Разрешения, контейнеры и пространства имён влияют на результат. Команда внутри контейнера показывает PID 1 этого пространства имён, а не обязательно init хоста. Определив систему, используйте её собственные инструменты состояния и журналов, не смешивая команды разных семейств init.
Почему исследование PID 1 надёжнее проверки существования каталога устаревших сценариев?
Урок завершён
Вы завершили Процесс загрузки: Init
Теперь вы умеете объяснять init как роль, а не единственную обязательную реализацию.
Связывать PID 1 с инициализацией служб, сбором процессов и завершением работы.
Распознавать уровни System V как режимы работы, заданные дистрибутивом.
Связывать ресурсы и зависимости systemd с юнитами.
Исследовать живой PID 1 в нужном пространстве имён перед выбором инструментов.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт