В данной статье я попытаюсь комплексно проанализировать причины неприязни к systemd, что заставляет людей от него отказываться и есть ли для этого какие то веские основания.
Повествование будет разделено на главы и подпункты, чтобы было легче понимать хронологию событий и логику рассуждений. Могу упустить многие вещи, потому если вы бы хотели поделится тем как сами ушли от systemd, исторические моменты для справки, факты и так далее - можно написать в комментарии.
Глава 1. Рождение
1) Ситуация с системами инициализации до появления systemd
Когда-то давно, а точнее в 1979 году, в UNIX 7 был введен init. init выполнял /etc/rc и создавал процессы инициализации терминала и входа для юзера. Спустя время init обрастал новыми функциями (например, монтирование файловых систем, автоматическая очистка /tmp и многое другое). Прогресс не стоял на месте, и к середине 80-х init начал устаревать. Одним из его недостатков была "прямолинейность" и невозможность, к примеру, перезагрузить один из демонов.
Ситуация изменилась с выходом UNIX System V, которая предложила SysVinit, внёсшую понятие уровня выполнения, позволяющее управлять группами демонов одновременно.
Linux перенял SysVinit у UNIX System V, и большинство дистрибутивов использовали его как основной в течение следующих 20 лет.
Однако, стоит понимать, что с ростом влияния интернета и развитием железа требовался все больший функционал. К середине 2000-х годов у многих разработчиков возник вопрос о замене SysVinit и написании для него новой и функциональной альтернативы.
2) Появление и первое внедрение systemd
30 марта 2010 года Леннарт Пёттеринг и Кай Зиверс из корпорации Red Hat представили миру новую подсистему инициализации и управления службами - systemd. Сам продукт был опубликован под лицензией GNU LGPL (Lesser General Public License) версии 2.1.
Огромным плюсом systemd, по сравнению с SysVinit, было распараллеливание запуска служб при старте системы, что значительным образом ускоряло загрузку операционной системы. Также было введено понятие - "модуль", как основная единица для управления СИ. Каждый модуль отвечал за отдельную службу, точку монтирования, файл подкачки и так далее.
Также systemd позволял контролировать состояние службы, ввёл cgroups для отслеживания системных процессов и многие революционные, на 2010 год, моменты.
Сообщество хорошо приняло новый продукт от Red Hat, так как многие пользователи хотели перемен и свежего воздуха в подходе к управлению системой.
Первый дистрибутив, начавший использование systemd, - Fedora. Уже в июле 2010 года его взяли за основу в Fedora Rawhide. Проблемы были, и их было довольно много. Некоторые разработчики были обеспокоены обратной совместимостью с некоторыми программными компонентами. Однако боевой характер Пёттеринга убедил команду Fedora выпустить Fedora 14 с systemd.
Глава 2. Тотальный захват
После выхода Fedora 14 в мае 2011 года, разработчики других дистрибутивов начали рассматривать переход на новую систему инициализации, хотя она имела множество проблем. Сообщество верило в скорейшее исправление и стабилизацию ситуации.
Так, в августе 2012 года один из известнейших дистрибутивов Linux, Arch Linux, перешёл на systemd, тем самым дав зелёный свет другим разработчикам. В период с сентября 2012 большая часть дистрибутивов отказалась от SysV.
Ближе к концу 2013 года оставались 2 последних, самых распространённых дистрибутива в то же время - Debian и его дериватив Ubuntu. Важно отметить, что в период с октября 2013 по февраль 2014 года были попытки, можно сказать, насильного внедрения systemd в Debian. Огромный пласт разработчиков, работающих, зачастую, в коммерческих корпорациях, таких как Red Hat, Microsoft, Google, очень активно выступали за внедрение нового системного компонента. Забавный факт, что в будущем практически те же люди проголосуют за отстранение Ричарда Столлмана с поста в совете FSF (Фонда свободного программного обеспечения).
В итоге, один из важнейших дистрибутивов, 11 февраля 2014 года, официально принял systemd как основную систему инициализации. Следующий релиз Debian вышел уже с systemd в качестве менеджера системы, и вслед за ним также поступила Ubuntu.
На начало 2024 года самыми популярными дистрибутивами с systemd являются:
1. Arch Linux
2. Fedora
3. Debian
4. openSUSE
5. Ubuntu
Смотря на этот небольшой список, можно понять, что основной пласт использует systemd. Хорошо это или плохо, мы попробуем узнать дальше, но в любом случае такое агрессивное внедрение, как минимум, напрягает.
Глава 3. Причины неприязни
1) Недоверие продукту Red Hat
Red Hat, пожалуй, компания, которая внесла самый большой вклад в развитие Linux. Они занимаются как поддержкой существующего софта, так и разработкой нового, например: PipeWire, Wayland (благодаря команде GNOME, многие участники которой работают в Red Hat).
Однако, по мнению некоторых фанатиков, это не причина для уважения. Есть факт, что корпорация Red Hat является одним из главных подрядчиков АНБ (Агентство национальной безопасности США) и часто берёт у них заказы на выполнение. Например, продажи лицензий на RHEL, разработка определенного вида софта и так далее. Это может создать впечатление, что Red Hat - компания, полностью подвластная правительству Соединённых Штатов. По интернету гуляет мнение, что systemd был разработан в качестве бэкдора для Linux систем, чтобы следить за каждым пользователем свободного ПО. Эти опасения особенно подогрели опубликованные Эдвардом Сноуденом данные о тотальной слежке за гражданами практически любой страны мира. К сожалению, полностью отрицать такой расклад событий нельзя. Но меня всё же смущает то, что systemd имеет полную открытую лицензию, что позволяет провести полный анализ системы инициализации вручную. Такие ужасные подозрения ни разу не подтвердились, конечно же, но можем ли мы вообще кому-то доверять?
2) Раздутость кодовой базы и общая неповоротливость
systemd очень часто критикуют за раздутость кодовой базы. Некоторые даже называют её "специально раздутой". В ней содержится более 2 миллионов строк кода, что увеличивает вероятность ошибок. Проведение аудита безопасности и выявление ошибок становится довольно трудоемким процессом. Например, OpenRC имеет значительно более компактный размер (около 500 тысяч строк кода), что упрощает процедуру аудита.
Также systemd очень раздут функциональностью. Он управляет журналированием, монтированием, отслеживанием и многими другими вещами, которые система инициализации обычно не должна осуществлять самостоятельно. Его превратили в огромный комбайн, который контролирует множество аспектов системы. Это может быть удобно для кого-то, но для меня система инициализации должна в первую очередь инициализировать userspace, после чего может оставаться в стороне. Но это всего лишь мои размышления.
3) Скорость запуска
Это аргумент, который часто упоминают особенно при работе на старых машинах. systemd действительно не самый быстрый, но и OpenRC не сильно опережает его. Поскольку systemd содержит в себе множество компонентов, их запуск требует определенного времени. В сравнении с другими, он действительно один из самых медленных.
По результатам моих тестов, список скорости примерно такой:
1. s6 и dinit
2. runit и OpenRC
3. systemd
4. SysVinit
Я проводил сравнения на Artix и Arch Linux, соответственно. На моей машине разница не так заметна, но на слабых системах лучше выбрать что-то более легковесное.
4) "Бородатый скрипты" или нежелание сис.админов что то менять
Многие системные администраторы очень привыкли работать с SysVinit или подобными системами. В процессе эксплуатации они создают собственные скрипты, настраивают систему, проводят оптимизации. У людей уже сложилась привычка к развёртыванию серверов, и переход на systemd может потребовать значительной переработки их наработок. Поэтому они часто выбирают Gentoo или Devuan, где можно без проблем использовать свои собственные подходы без необходимости перестраивать всё под systemd.
5) Слишком высокие полномочия и дыры в безопасности
Часть пользователей высказывает недоверие из-за слишком больших привилегий системного менеджера. По умолчанию systemd имеет слишком привилегированные права, что может позволить злоумышленнику, например, запускать вредоносные программы под рутом, создавать демоны для кражи данных пользователя и тому подобное.
В течение жизненного срока systemd было обнаружено колоссальное количество ошибок. Только на официальном гитхабе закрыто около 9 тысяч ошибок, и ещё 2 тысячи остаются открытыми.
Главный разработчик systemd, Ленарт Пёттеринг, очень чувствительно реагирует на замечания, и случались обвинения пользователей в "неблагодарности" со стороны Пёттеринга. Многие ошибки остаются незакрытыми очень долгое время, что вызывает недоумение у сообщества.
6) Отступление от UNIX-way
Как писал выше - systemd очень раздули. Это полностью противоречит эфимерной философии UNIX - "Делай одну вещь и делай её хорошо". Очень много фанатов, так называемого UNIX-wa'я, твердят про эту эту проблему. Команда suckless (разработчики такие) вообще предложила свой sinit, который по их мнению полностью соответствует философии UNIX. Ни в каком дистрибутиве не представлен, но если интересно, то можете поизучать и поставить в условный Артикс.
Глава 4. Альтернативы
1) Какие бывают системы инициализации?
На первый взгляд альтернатив systemd нет, но это далеко не так. Самыми простыми, по моему мнению, являются OpenRC или dinit. Последний по синтаксису очень схож с systemd (вместо systemctl - dinitctl). Если хотите что-то более уникальное, то можно попробовать s6 или runit. SysVinit неплохо представлен в Devuan и MX Linux, потому там его можно заценить на полную, так скажем.
2) В каких дистрибутивах пробовать другие системы инициализации?
Есть наверное 4 мастодонта в мире non-systemd:
1. Gentoo и gentoo-based (OpenRC)
2. Devuan (SysVinit, runit, OpenRC)
3. Artix (dinit, OpenRC, runit, s6)
4. Void (runit)
Эти дистрибутивы предоставляют самый приятный опыт работы без systemd. Можно, конечно, попробовать Slackware или Crux, но там опыт будет явно посложнее чем в Devuan.
3) Стоит оно того?
Сложно сказать. В данной статье я попытался задеть хотя бы часть об истории этого программного компонента, а решать использовать его или нет - ваше право.
Если у вас есть что то дополнить, то прошу писать в комментарии. Так мы сможем создать полную картину. Спасибо за прочтение!
Комментарии
10:03
10:28
10:53
11:00
11:01
SystdmD - это вопрос религиозный или философский, если хотите.
Скорость? А как Вы её измеряли? Настроенная SysD может оказаться быстрее любого иного init'a.
Linux не существует в вакууме. И появление sysd вдохновлено Джобсом, который такой подход к инициализации давно привнес в macos.
Непринятие? Бородатые админы, которые занимаются поддержкой действительно больших серверов и кластеров, молятся на SysD, потому как скрипты - это костыли, а изучать чужие костыли - хуже нет (да и свои то упомнить не всегда).
Размер? Так это не только инициализация. Часть, отвечающая за инициализацию сопоставима с иными современными решениями. Другое дело, что "писать код" в миллиард строк стало модно (доходно) во всей сфере it (и не только it).
Из nonsystemd выделил бы void и slackware.
А желающих пользоваться чистым Linux'ом, полностью приверженным принципам UNIX-way, я лично не знаю. Слышал о них, но это какой-то очень редкий вид! Потому как уже давно подавляющее большинство прикладного софта забило на эту идеологию)
11:16
Например, если кто-то утверждает, что программный код сильно раздут, то необходимо привести куски этого "лишнего" кода и грамотно пояснить за их содержание и назначение: научно обосновать нецелесообразность и тд. Только такой подход имеет место, иначе всё превращается в балаган и бессмысленное повторение одних и тех же предложений.
11:24
11:51
12:15
Сидел с секундомером, да не супер объективно, но все же. s6 и dinit показали примерно 7 секунд после старта ядра и выхода к tty. runit загрузился за 7.5 секунд, OpenRC приблизительно за 8.2 секунды. Сисда загрузилась за 10.4, а SysV аж за 12. Понятно, что это какие-то секунды, и практического толку от таких "ускорений" мало.
2. Неприятие.
Общался на форумах с системными администраторами. Многие говорили, дескать, "всё с этой сисдой поломали, вот и сижу на генту", "у меня туча скриптов и твиков было, а переписывать заново не вижу смысла". Однако было и мнение, что systemd принес прежде всего унификацию, но и, как по мне, демонов там проще всего писать.
3. По размеру. Да, это уже давно не только система инициализации. Вопрос: нужен ли мне компонент, который заправляет половиной системы? Мне кажется, всё должно быть прежде всего простым, логичным, легкочитаемым.
4. А фанаты "UNIX-way" не так сильно распространены, это правда. Это скорее фанатики, а не реально ищущие рационализм люди.
По итогу - я в целом тоже не считаю systemd злом или то, что все таки должны от него отказаться - нет, конечно. Все зависит от человека и нужен ли ему тот функционал, который оный предлагает. Кому-то да, кому-то нет, это как футболки, кому что по душе.
13:00
Это я к тому, что аргумент для одного, то может не заметить другой.
13:42
13:55
С systemd я могу установить какой-либо пакет и его разработчик уже позаботился о том, чтобы интегрировать службу и ее варианты использования в систему. Мне уже не нужно коллекционировать портянки и забивать ими автозапуск и тд. В этом, похоже, и был смысл systemd как системного менеджера, а не просто СИ.
Думаю, что пользователям нужно смотреть с этих позиций.
18:10
2. Гнать мокрой тряпкой таких администраторов! Они не ценят ни свое время, ни деньги работодателя. Еще и не пользуются ansible.
3. Простота хуже воровства. А унификация и переносимость явно важней.
11:03
11:06
1. Не читал, но осуждаю. Всё понятно - просто не хочется.
2. Читал и принял. Здесь большая группа квалифицированных участников.
3. Не читал, но принял. Это доверие к группе 2.
4. Читал и не принимаю. Почему? Напиши баг-репорт, их уже было много обработано.
11:28
https://ibb.co/NTXh0wZ
12:00
12:09
12:16
12:25
12:29
А кто тогда играет на разных инструментах? Или они не нужны? А как работает тот же xfce, если он создаётся с опорой на systemd? Нужна прослойка совместимости? Или другие СИ обрабатывают совместимость? Т.е. всё равно нанимаются сторонние музыканты или используется фонограмма.
А аргумент да, вполне понятно изложен.
12:48
Про чтение написал свой комментарий
Нужны ли — вопрос риторический …
Xfce работает на Devuan и Artix упомянутых, и на Gentoo (Calculate). Наверно, от части благодаря тому, что сисДа стала де-факто стандартном и написаны слои совместимости. В том же LM, например, при удалении systemd сносится половина системы (на это мне, по-моему, Slavik заметил, с ним согласен). Ещё там есть вещи типа "systemd openrc" "systemd sysv". Как я понимаю, для совместимости и обработки скриптов.
Это же относится и к Манджаро, там аналогично при удалении в pamac systemd идут под нож другие компоненты. Распутывание клубка зависимостей приведёт к системным компонентам.
Про зависимость опять:
у меня в OpenRC есть вот такие штуки. No comments.
https://wiki.gentoo.org/wiki/OpenRC#systemd_compatibility
13:32
18:34
12:15
12:26
Прочёл с интересом.
12:36
Андроид тоже открыт, но там 2 миллиона строк. Это как многотомное произведение, где в одном месте ты решаешь изменить погоду с солнечной на дождливую, а потом выясняется, что у тебя в другом месте умирает персонаж. Как это связано?
Про неприязнь: согласен с пунктами 1 и 5. Остальное меня, как пользователя домашнего ПК, не особо волнует. Но теперь пункт 1 сменился на "Недоверие с Microsoft".
12:39
https://nosystemd.org/
16:14
Да и остальные не особо. Ну разве только пятый... ох уж этот пятый пункт...
13:22
А теперь придерусь по пунктам.
1. "Забавный факт, что в будущем практически те же люди проголосуют за отстранение Ричарда Столлмана с поста в совете FSF"
Подобное происходит не в первый и не в последний раз. Творческие разногласия, деньги и т.п..
2. "Скорость запуска"
Лично меня это совершенно не интересует, хотя бы потому, что в автозапуске всегда с десяток программ с отложенным стартом, плюс свои сценарии.
3. "нежелание сис.админов что то менять"
И это правильно. Если есть свои работающие! сценарии, зачем изучать чужие? Может, это и изобретение велосипеда, но почему бы и нет?
4. "Главный разработчик systemd, Ленарт Пёттеринг, очень чувствительно реагирует на замечания... "
А вот это зря. Неприятие конструктивной критики не есть хорошо. Тут можно было бы порассуждать с точки зрения психологии, но я, к счастью, не психолог.
Поттерингу лично от меня третий минус. Почему третий? Ссылка в п.6.1..
5. "полностью противоречит эфимерной философии UNIX - "Делай одну вещь и делай её хорошо". "
Философия эта не такая уж и эфемерная, а даже совсем наоборот. Чем проще устройство, тем меньше вероятность его поломки, да и разобраться в нём проще.
Применимо к механическим изделиям. И не только.
6. В общем по systemd
6.1. Исторически так сложилось (что не удивительно, а вполне естественно), что я пользуюсь systemd-дистрибутивами.
Ежели не вникать в подробности, как-то совершенно без разницы, что под капотом — работает и ладно. Однако:
https://pingvinus.ru/news/5032
https://pingvinus.ru/news/5032#c96723
6.2. Я не ушёл с systemd, но...
Некоторые компании (корпорации, разработчики) проводят (меняют) свою политику странным (это сугубо субъективно) образом.
И реакция некоторых пользователей может быть совсем не такой, как ожидают эти самые компании (корпорации, разработчики).
6.3. Ещё добавлю про ширпотреб: если большинство ест, то это не значит, что это прям уж так съедобно (вкусно).
Выбор. Или его отсутствие. Незнание о наличии выбора равно его отсутствию. Для неразбирающихся (начинающих).
И это я про себя.
7. Конкретно по статье: см п.0.
16:07
https://ibb.co/fdsh4Kt
17:46
Очевидно, что компетенция нужна самая высокая, достичь её трудно, социальные подходы гораздо проще. Поэтому дыры в безопасности для домашнего пользователя как квантовая физика - интересно обсуждать на досуге в общих чертах.
А про недоверие корпорациям всё просто: не нравится быть покорным клиентом - постоянно торгуйтесь на тему "сколько и какие данные в обмен на какие сервисы". Старайтесь контролировать собираемое, уменьшайте его по возможности, а обнаглевшие сервисы пусть покрутятся без вас, ведь скоро могут появиться аналоги-конкуренты.
18:10
Мы же не может этим постоянно заниматься. Аналоги-конкуренты зачастую уже есть, но их надо найти, встаёт вопрос доступности.
18:23
Они готовы предоставлять бесплатные сервисы в обмен на наши данные, а нам интересно, какие данные и можно ли регулировать их сбор.
Кто не хочет это отслеживать, тот становится лояльным клиентом, такие нравятся корпорациям. Каждый сам решает, а они намерены заниматься этим постоянно.
22:01
00:46
08:44
11:36
Android, yandex, сбер, маркетплайсы... Все собирают и продают Ваши данные.
А Fedora пока ничего не продаёт и Вы даже не знаете, что и как они будут собирать в 40 выпуске)
12:39
В который раз убеждаюсь, что понятия свободы и частной жизни для примитивных людей сводятся лишь к возможности сменить иконки на рабочем столе и убрать безобидные трекеры, используемые для контекстной рекламы. Вот если этого нет, то такое положение дел они считают «несвободой». При этом им абсолютно не важно как обстоят дела с политическими, гражданскими и экономическими свободами, определяющими жизнь. Эти люди могут жить в тоталитарных государствах, где попраны все возможные права, а закон превращен в репрессивный аппарат, но они не замечают этого, поскольку заняты игрушками со сменными иконками. Частные компании, выпускающие продукцию на свободном рынке и не принуждающие никого к приобретению, именуются ими «корпорациями зла», а государственные чиновники, единолично распоряжающиеся деятельностью людей и их жизнями - заботливыми благодетелями…
12:52
13:37
13:50
Кто захочет изменить что-то, тот перейдёт на RiseUp и Disroot, а кому и так норм, тот продолжит использовать Спёрмегамаркет и яндекс.
11:02
13:34
1. Systemd медленный (для меня и моего компьютера)
2. systemd слишком перегружен. Зачем так много утилит?
3. Systemd нарушает центральную фил... Ладно-ладно, кого это останавливает?
Я решил, что буду стараться использовать дистрибутивы без systemd. Сейчас я выбрал своего фаворита - Slackware .
07:35
В других системах инициализации всё идеально и нет проблем, ошибок, недоработок и т.д.? Можно найти много всего и в других альтернативах, нужно поискать в поисковике.
Нужно сообщить Линусу Торвальдсу, пусть полностью поломает наработки и все технические решения с момента создания Linux, основанные на устаревшей идеи и технических параметров из семидесятых годов прошлого века. Пора уже полностью заново с чистого листа создать Linux на основе достижений сегодняшнего дня, без ядра, систем инициализации, защитой от взлома, вредных программ, интерфейсом 8К и 6D (у куба шесть сторон), и т.д.
Все новые разработки должны внедряться постепенно и после тестирования, исправления ошибок и недоработок, а не навязывать недоработанную систему сразу после создания.
Моё скоромное мнение :)
16:28