Меню
Главная
Случайная статья
Настройки
|
systemd — подсистема инициализации и управления службами в Linux, фактически вытеснившая в 2010-е годы традиционную подсистему init. Основная особенность — интенсивное распараллеливание запуска служб в процессе загрузки системы, что позволяет существенно ускорить запуск операционной системы. Основная единица управления — модуль, одним из типов модулей являются «службы» — аналог демонов — наборы процессов, запускаемые и управляемые средствами подсистемы и изолируемые контрольными группами.
Первые версии были созданы в результате сотрудничества Леннарта Пёттеринга и Кая Зиверса[англ.], с середины 2010-х годов проект развивается в основном силами Пёттеринга и других сотрудников Red Hat[7]. Опубликован как свободное программное обеспечение под условиями лицензии GNU Lesser General Public License версии 2.1 или позднее[8].
Содержание
Архитектура
Подсистема оперирует специально оформленными файлами конфигурации — модулями (англ. unit). Каждый модуль отвечает за отдельно взятую службу, точку монтирования, подключаемое устройство, файл подкачки, виртуальную машину и тому подобные ресурсы. Существуют специальные типы модулей, которые не несут функциональной нагрузки, но позволяют задействовать дополнительные возможности systemd, к ним относятся модули типа target, slice, automount и ряд других. На октябрь 2016 года systemd поддерживает следующие типы модулей:
- .target — позволяет группировать модули, воплощая концепцию уровней запуска;
- .service — отвечает за запуск сервисов (служб), также поддерживает вызов интерпретаторов для исполнения пользовательских скриптов;
- .mount — отвечает за монтирование файловых систем;
- .automount — позволяет отложить монтирование файловых систем до фактического обращения к точке монтирования;
- .swap — отвечает за подключение файла или устройства подкачки;
- .timer — позволяет запускать модули по расписанию;
- .socket — предоставляет службам поддержку механизма сокет-активации;
- .slice — отвечает за создание контейнера cgroups;
- .device — позволяет реагировать на подключение устройств;
- .path — позволяет запускать модули при появлении пути в файловой системе.
По сравнению с традиционной системой инициализации в стиле System V, systemd даёт преимущества в следующем:
- контроль состояния службы, реакция на изменения состояния;
- сокет-активные и шино-активные службы, которые иногда приводят к лучшему распараллеливанию взаимозависимых служб;
- использование cgroups для отслеживания служебных процессов вместо идентификаторов процессов (PID), это означает, что демоны не будут потеряны даже после разветвления в другие процессы.
В апреле 2012 года исходные коды менеджера устройств udev были объединены с systemd[9].
Подсистема изначально разработана только для Linux и опирается на специфичные для него функции, такие как cgroups и fanotify[нем.][10]. По этой причине Debian как дистрибутив, работающий на различных ядрах (не только Linux), не полностью использует systemd[11].
Возможности
Помимо простого запуска и контроля служб, systemd предлагает некоторые другие удобные функции, для использования которых ранее системным администраторам приходилось прибегать к помощи дополнительных программ-демонов. Среди таких функций:
- сокет-активация служб (заменяет inetd);
- запуск сервисов по расписанию (заменяет cron);
- работа с аппаратным сторожевым таймером (заменяет watchdog);
- смена корня (заменяет chroot);
- автомонтирование томов и сетевых ресурсов (заменяет mount и fstab);
- служба журналирования systemd-journald (заменяет или служит обёрткой для традиционных служб журналирования, таких, как syslog-ng[англ.] и rsyslog[англ.]);
- systemd-analyze — анализ скорости запуска служб;
- systemd-boot — UEFI-загрузчик (заменяет GRUB).
Использование
Подсистема была предложена как внешняя зависимость для GNOME 3.2 автором проекта[12]; это фактически потребовало от всех дистрибутивов, использующих GNOME, использовать systemd или, по крайней мере, включить его в качестве настраиваемой опции. GNOME версии 3.8 и выше уже нельзя установить без systemd.
Дистрибутивы, в которых systemd установлен по умолчанию:
Многие дистрибутивы сохраняют традиционные системы инициализации как опциональные. Другие могут использовать только отдельные компоненты systemd. Так, например, Ubuntu с 13.04 по 14.10 использовала только hostnamed, localed и timenamed[26].
Подсистема принципиально не используется в дистрибутивах Slackware, Alpine, Void, Devuan (ответвление от Debian в связи с переходом его systemd).
Критика
Несмотря на широкую поддержку, разработка systemd вызвала в сообществе Linux жаркие дебаты. Критики обращают внимание на излишнюю сложность и раздувание функциональных возможностей systemd за счёт поглощения других служб Linux, отмечая, что такой подход противоречит «философии Unix», отрицающей концентрацию различных функций в одной программе («пусть каждая программа делает что-то одно, но делает это хорошо»).
Также существует озабоченность, что systemd делает популярное программное обеспечение (например, GNOME) несовместимым с «классическими» дистрибутивами Linux, что ставит под вопрос их будущее (похожая ситуация наблюдается и для другого проекта Пёттеринга — службы PulseAudio)[27][28].
Среди публичных критиков systemd — основатель Slackware Патрик Фолькердинг, при этом в интервью 2012 года он не исключал, что однажды в дистрибутив systemd всё же будет включён (по состоянию на 2024 год этого не произошло).
Отдельные аспекты подсистемы и подходы к разработке критиковал Линус Торвальдс (в частности, за «бесцеремонность в вопросах обратной совместимости»), однако в целом он последовательно поддерживает проект.
Примечания
- Release systemd v258 — 2025.
- 1 2 README - systemd/systemd - System and Session Manager (англ.)
- systemd/systemd - System and Session Manager (англ.)
- The systemd Open Source Project on Open Hub: Languages Page — 2006.
- README - systemd/systemd - System and Session Manager (англ.)
- README - systemd/systemd - System and Session Manager (англ.)
- Lennart Poettering, FAQs, systemd, 0pointer, Архивировано 15 января 2017, Дата обращения: 16 июня 2011 Источник (неопр.). Дата обращения: 16 августа 2012. Архивировано 15 января 2017 года.
-
-
-
-
-
-
- Ubuntu Linux переходит на systemd, следом за Debian (неопр.). Дата обращения: 14 февраля 2014. Архивировано 22 февраля 2014 года.
-
-
-
-
-
- systemd is now the default on new installations, 13 октября 2012, Архивировано 18 октября 2012, Дата обращения: 13 октября 2012 Источник (неопр.). Дата обращения: 13 октября 2012. Архивировано из оригинала 18 октября 2012 года.
- Arch Linux перешёл на systemd, 13 октября 2012, Архивировано 17 октября 2012, Дата обращения: 13 октября 2012 Источник (неопр.). Дата обращения: 13 октября 2012. Архивировано 17 октября 2012 года.
- End of initscripts support, 4 ноября 2012, Архивировано 15 января 2013, Дата обращения: 9 января 2013 Источник (неопр.). Дата обращения: 9 января 2013. Архивировано 15 января 2013 года.
- Press Release: Sabayon 13.08, Архивировано из оригинала 7 января 2015, Дата обращения: 12 августа 2013 Источник (неопр.). Дата обращения: 12 августа 2013. Архивировано из оригинала 7 января 2015 года.
- sys-apps/systemd, Gentoo Packages, Архивировано 3 июня 2016, Дата обращения: 7 мая 2016 Источник (неопр.). Дата обращения: 7 мая 2016. Архивировано 3 июня 2016 года.
- Источник, Gentoo's Documentation, Архивировано 26 июня 2011, Дата обращения: 5 июля 2011 Источник (неопр.). Дата обращения: 16 августа 2012. Архивировано 26 июня 2011 года.
- 100 областей, systemd в upstart, фазовое обновление и ядро 3.8 в Ubuntu 13.04 (неопр.). Дата обращения: 12 ноября 2012. Архивировано 16 ноября 2012 года.
- Vaughan-Nichols, Steven. Linus Torvalds and others on Linux's systemd (неопр.). ZDNet. CBS Interactive (19 сентября 2014). Дата обращения: 24 февраля 2015. Архивировано 25 февраля 2015 года.
- 1345661 - PulseAudio requirement breaks Firefox on ALSA-only systems (неопр.). Bugzilla. Mozilla (3 сентября 2021). Дата обращения: 3 октября 2021. Архивировано 3 октября 2021 года.
Литература
Книги
LinuxFormat
Ссылки
|
|