Что такое Systemd?
Systemd — это система инициализации (init system) и менеджер служб по умолчанию для большинства современных дистрибутивов Linux. Он отвечает за правильную последовательность инициализации системы после загрузки ядра. Простой способ проверить, используете ли вы его, — это проверить наличие каталога /usr/lib/systemd. Если он существует, ваша система, скорее всего, управляется systemd.
Процесс загрузки Systemd
Вместо жестко заданных последовательных скриптов systemd использует концепцию «целей» (goals) для приведения вашей системы в рабочее состояние. Он определяет основную цель, или target, и работает над удовлетворением ее зависимостей. Такой подход обеспечивает большую гибкость и распараллеливание во время запуска. Типичный процесс загрузки, управляемый systemd, включает следующие шаги:
- systemd сначала загружает свои конфигурационные файлы из таких каталогов, как
/etc/systemd/systemи/usr/lib/systemd/system. - Затем он определяет цель загрузки по умолчанию, которая обычно представляет собой символическую ссылку с именем
default.target. - Наконец, systemd разрешает все зависимости для этой цели и активирует необходимые юниты для достижения желаемого состояния системы.
Понимание целей Systemd (Systemd Targets)
Цели в systemd аналогичны уровням выполнения (runlevels) в старой системе инициализации SysV. Они представляют различные состояния, в которых может находиться система. К распространенным целям относятся:
poweroff.target: Выключение системы.rescue.target: Загрузка в однопользовательскую оболочку для обслуживания.multi-user.target: Стандартная многопользовательская среда с сетью, но без графического интерфейса.graphical.target: Полноценная многопользовательская среда с сетью и графическим пользовательским интерфейсом (GUI).reboot.target: Перезагрузка системы.
default.target — это символическая ссылка, указывающая на цель, в которую система загрузится по умолчанию, часто это graphical.target в десктопных системах.
Основная концепция: Юниты Systemd
Фундаментальные объекты, которыми управляет systemd, называются «юнитами». Юнит — это конфигурационный файл, описывающий ресурс или службу. Сила архитектуры system d заключается в его способности управлять различными типами ресурсов, а не только службами. Тип каждого юнита определяется его расширением файла. Наиболее распространенные типы:
- Сервисные юниты (
.service): Управляют системными демонами или службами, такими как веб-сервер или база данных. - Юниты монтирования (
.mount): Управляют точками монтирования файловой системы. - Целевые юниты (
.target): Используются для группировки других юнитов, создавая точки синхронизации во время загрузки.
Например, когда система загружается в graphical.target, этот юнит цели гарантирует, что все его зависимости, такие как multi-user.target и различные сервисные юниты, например network.service, будут запущены первыми.