Как мы уже узнали, процесс init является первым процессом, запускаемым во время загрузки Linux. Он является родителем всех остальных процессов и отвечает за запуск основных служб, которые приводят вашу систему в рабочее состояние. Но как он этого добивается?
Существует три основные реализации системы инициализации Linux, каждая из которых имеет свой подход к управлению службами.
System V Init
System V init, часто называемый sysvinit, — это традиционная система инициализации для Linux. Он следует последовательной процедуре запуска, определяемой скриптами. Состояние системы управляется через уровни выполнения (runlevels), где каждый уровень выполнения (например, однопользовательский режим, многопользовательский режим с сетью) имеет определенный набор служб для запуска или остановки. Долгое время это был стандарт в классическом процессе загрузки Linux.
Upstart
Upstart, который использовался в старых версиях Ubuntu, — это система инициализации, основанная на событиях. Она отошла от строгой последовательной модели System V. Вместо этого Upstart запускает и останавливает службы (называемые заданиями) в ответ на системные события, например, когда сетевое устройство становится доступным. Это обеспечивает более гибкое и быстрое время загрузки.
systemd
Современным стандартом для системы инициализации Linux является systemd. Это система, ориентированная на цели (goals), которая агрессивно управляет зависимостями. Вместо простого запуска списка служб вы определяете целевое состояние (например, графический интерфейс), и systemd работает над удовлетворением всех зависимостей для этой цели, часто запуская службы параллельно, чтобы значительно ускорить процесс загрузки.
У нас есть целый курс по системам инициализации, где мы подробно рассмотрим каждую из этих систем.