systemd
| Systemd | |
|---|---|
| | |
| | |
| Тип | демон, управляющий демоном[вд] |
| Разработчики | Леннарт Пёттеринг[2], Кай Зиверс[вд][2] и Харальд Хойер[вд] |
| Написана на | Си[3][4][…] |
| Операционная система | Linux[5] |
| Первый выпуск | 30 марта 2010 |
| Последняя версия |
|
| Репозиторий | github.com/systemd/syste… |
| Лицензия | LGPLv2.1+[вд][6] |
| Сайт | systemd.io (англ.) |

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 установлен по умолчанию:
- Debian GNU/Linux версии 8 и выше;
- RHEL версии 7 и выше[13];
- CentOS версии 7 и выше;
- Ubuntu версии 15.10 и выше; (с 16.04 — по умолчанию[14]; с 16.10 — единственная система инициализации)
- Fedora версии 15 и выше[15];
- Mageia 2[16];
- Mandriva 2011[17];
- Rosa
- openSUSE 12.1 и выше[18];
- Arch Linux 12.11[19][20][21] (предоставляет возможность использования как самописной системы инициализации (более не поддерживается[22]), так и любой другой (также без официальной поддержки со стороны дистрибутива));
- Sabayon 13.08[23].
- Gentoo предоставляет пакеты systemd в стабильной ветке[24][25].
- Sailfish OS (мобильная операционная система)
Многие дистрибутивы сохраняют традиционные системы инициализации как опциональные. Другие могут использовать только отдельные компоненты systemd. Так, например, Ubuntu с 13.04 по 14.10 использовала только hostnamed, localed и timenamed[26].
Подсистема принципиально не используется в дистрибутивах Slackware, Alpine, Void, Devuan (ответвление от Debian в связи с переходом его systemd).
Критика
Несмотря на широкую поддержку, разработка systemd вызвала жаркие дебаты в сообществе Linux. Критики обращают внимание на излишнюю сложность и раздутость функциональности systemd из-за поглощения других служб Linux. Среди публичных критиков systemd есть также Патрик Фолькердинг, основатель проекта Slackware, который в своей критике архитектуры systemd подчеркнул, что «попытка контролировать службы, сокеты, устройства, монтирование и т. д. в рамках единого демона противоречит философии Unix, которая заключается в том, чтобы делать одну вещь и делать ее хорошо»[27], при этом в интервью 2012 года он не исключал, что однажды в дистрибутив systemd всё же будет включён (по состоянию на 2024 год этого не произошло). Systemd предназначен для запуска основных программ, однако его возможности выходят далеко за пределы обязанностей системы инициализации, поскольку он также обрабатывает управление питанием, управление устройствами, точки монтирования, шифрование диска, планировщик задач типа cron, сокет API/inetd, конфигурацию сети, управление входом/сессией, readahead, обнаружение разделов GPT, регистрацию контейнеров, управление именем хоста/локализация/временем и другими вещами[28]. Кроме того, критики systemd утверждают, что широкий спектр функций systemd создает большую поверхность атаки[29].
Также существует озабоченность, что systemd делает популярное программное обеспечение (например, GNOME) несовместимым с «классическими» дистрибутивами Linux, что ставит под вопрос их будущее (похожая ситуация наблюдается и для другого проекта Пёттеринга — службы PulseAudio)[30][31].
Отдельные аспекты подсистемы и подходы к разработке критиковал Линус Торвальдс (в частности, за «бесцеремонность в вопросах обратной совместимости»), однако в целом он последовательно поддерживает проект.
Помимо прочего, независимые разработчики и пользователи критикуют systemd и его разработчиков, в частности, за кнцептуальные проблемы, плохой дизайн, раздутые функциональные возможности, плохое знание фундаментальных концепций операционной системы и пассивную реакцию разработчиков на сообщения об ошибках, которые игнорируются или отрицаются[32]. Например, главный разработчик systemd Леннарт Поттингер получил награду Pwnie Awards 2017 в номинации «Самая глупая реакция разработчика» за отказ[33] исправить уязвимость systemd, которая впоследствии получила индекс CVE-2017-1000082[34].
Летом 2024 года пользователи начали сталкиваться со случаями удаления домашних каталогов пользователей из-за ошибки, вызванной systemd, когда пользователи пытались очистить систему от временных файлов[[35][36][37].
Примечания
- ↑ systemd v259 — 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 года.
- ↑ Lennart Poettering (21 апреля 2012), systemd Status Update, Архивировано 27 августа 2015, Дата обращения: 28 апреля 2012 Источник. Дата обращения: 16 августа 2012. Архивировано 27 августа 2015 года.
- ↑ Sievers, Kay, Commit importing udev into systemd, systemd, Архивировано 8 июля 2012, Дата обращения: 25 мая 2012 Источник. Дата обращения: 16 августа 2012. Архивировано 8 июля 2012 года.
- ↑ Lennart Poettering (30 апреля 2010), systemd FAQ, Архивировано 15 января 2017, Дата обращения: 14 декабря 2011 Источник. Дата обращения: 16 августа 2012. Архивировано 15 января 2017 года.
- ↑ Jake Edge (27 июля 2011), Debian debates systemd, Архивировано 15 мая 2012, Дата обращения: 14 декабря 2011 Источник. Дата обращения: 16 августа 2012. Архивировано 15 мая 2012 года.
- ↑ Lennart Poettering (18 мая 2011), systemd as an external dependency, desktop-devel mailing list, GNOME, Архивировано 10 октября 2014, Дата обращения: 26 мая 2011 Источник. Дата обращения: 16 августа 2012. Архивировано 10 октября 2014 года.
- ↑ What’s new in Red Hat Enterprise Linux 7, Архивировано 17 июля 2014, Дата обращения: 15 июля 2014 Источник. Дата обращения: 15 июля 2014. Архивировано 17 июля 2014 года.
- ↑ Ubuntu Linux переходит на systemd, следом за Debian. Дата обращения: 14 февраля 2014. Архивировано 22 февраля 2014 года.
- ↑ Dj Walker-Morgan (24 мая 2011), Fedora 15’s Lovelock released, The H, Архивировано из оригинала 12 июля 2012, Дата обращения: 26 мая 2011 Источник. Дата обращения: 16 августа 2012. Архивировано 12 июля 2012 года.
- ↑ Fabian Scherschel (23 мая 2012), Mageia 2 arrives with GNOME 3 and systemd, The H, Архивировано из оригинала 8 декабря 2013, Дата обращения: 26 мая 2012 Источник. Дата обращения: 16 августа 2012. Архивировано 8 декабря 2013 года.
- ↑ Dj Walker-Morgan (29 августа 2011), Mandriva 2011 arrives with systemd, The H, Архивировано из оригинала 9 июля 2012, Дата обращения: 29 августа 2011 Источник. Дата обращения: 16 августа 2012. Архивировано 9 июля 2012 года.
- ↑ Chris von Eitzen (16 ноября 2011), openSUSE 12.1 arrives with systemd and Btrfs, The H, Архивировано из оригинала 20 апреля 2012, Дата обращения: 16 ноября 2011 Источник. Дата обращения: 16 августа 2012. Архивировано 20 апреля 2012 года.
- ↑ systemd, Archlinux Wiki, Архивировано 23 мая 2011, Дата обращения: 9 марта 2011 Источник. Дата обращения: 16 августа 2012. Архивировано 23 мая 2011 года.
- ↑ 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 года.
- ↑ 【Engineering】Unix Philosophy (амер. англ.). 西维蜀黍. Дата обращения: 24 декабря 2025.
- ↑ Linus Torvalds and others on Linux's systemd | ZDNet (англ.). ZDNet. Дата обращения: 24 декабря 2025. Архивировано 25 февраля 2015 года.
- ↑ Freedesktop Systemd : Security vulnerabilities, CVEs (англ.). www.cvedetails.com. Дата обращения: 24 декабря 2025.
- ↑ 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 года.
- ↑ Arguments against systemd - Without Systemd (англ.). without-systemd.org. Дата обращения: 25 декабря 2025. Архивировано 10 июля 2015 года.
- ↑ systemd can't handle the process previlege that belongs to user name startswith number, such as 0day · Issue #6237 · systemd/systemd (англ.). GitHub. Дата обращения: 25 декабря 2025. Архивировано 18 октября 2017 года.
- ↑ Pwnie Awards (англ.). pwnies.com. Дата обращения: 25 декабря 2025. Архивировано 24 октября 2017 года.
- ↑ Пользователи systemd столкнулись с проблемой, приводившей к удалению домашних каталогов. www.opennet.ru. Дата обращения: 25 декабря 2025.
- ↑ dept, EditorDavid from the init-to-win-it. Systemd 256.1 Addresses Complaint That 'systemd-tmpfiles' Could Unexpectedly Delete Your /home Directory - Slashdot (англ.). slashdot.org (22 июня 2024). Дата обращения: 25 декабря 2025.
- ↑ Systemd 256.1 Fixes "systemd-tmpfiles" Unexpectedly Deleting Your /home Directory (англ.). www.phoronix.com. Дата обращения: 25 декабря 2025.
Литература
Книги
- Денис Колисниченко. 11.4 Система инициализации systemd // Командная строка Linux и автоматизация рутинных задач. — 2 изд. — БХВ-Петербург, 2014. — С. 195—203. — 369 с. — ISBN 9785977533195.
- Боб Мосс. Что за штука… SystemD? // LinuxFormat. — 2010. — Ноябрь (№ 11 (137)). — С. 48—49.
- Крис Браун. Реформы процесса загрузки // LinuxFormat. — 2011. — Апрель (№ 4 (143)). — С. 48—49.
- Битва за будущее: Fedora против Ubuntu § Upstart и SystemD // LinuxFormat. — 2010. — Декабрь (№ 12 (138)). — С. 24.
- Джон Лэй. Systemd: Скорее загружаемся // LinuxFormat. — 2013. — Февраль (№ 2 (167)). — С. 84—87.
- Нейл Ботвик. Systemd: Идем на переход // LinuxFormat. — 2014. — Июнь (№ 6 (184)). — С. 76—79.
- Нейл Ботвик. Systemd. Связи налаживаются // LinuxFormat. — 2014. — Октябрь (№ 10 (188)). — С. 62—63.
- Шон Конвей. Journald: Логи для Systemd // LinuxFormat. — 2015. — Январь (№ 1 (191-192)). — С. 66—67.
- Нейл Ботвик. Systemd: Нырнем в journalctl // LinuxFormat. — 2015. — Июль (№ 7 (198)). — С. 64—65.
- Джонни Бидвелл. Systemd // LinuxFormat. — 2015. — Август (№ 8 (199)). — С. 54—57.
Ссылки
- Домашняя страница Systemd.
- systemd, Lennart Poettering
- systemd project, Fedora
- The road forward for systemd, LWN
- cgit, freedesktop
- Противники использования и их причины (англ.)








