Несколько дней назад вышла в свет с опережением графика очередная версия классической Unix/Linux системы инициализации sysvinit 2.92. Предыдущий выпуск 2.91 вышел чуть больше месяца назад.
Что же примечательного в выходе минорной версии старинной системы инициализации (СИ), от которой отказались почти все современные дистрибутивы Linux, и какая от этого радость сообществу сторонников открытого кода и пользователям Debian Linux?
Интересен же данный эпизод тем, что релиз состоялся совместными усилиями двух антагонистических групп разработчиков Debian и Devuan, которые 4 г. тому назад раскололись из-за ситуации вокруг systemd. Но давайте по порядку.
Тройное голосование по systemd
За несколько месяцев до выхода Debian Jessie лидеры проекта встали перед необходимостью определиться с системой инициализации. В то время systemd уже набирал популярность и был одним из главных претендентов. Всего в забеге участвовали четыре СИ.
- systemd;
- upstart;
- openrc;
- sysvinit.
В голосовании также имелся выбор «требуется дальнейшее обсуждение».
Результаты первого тура показали равновесие между upstart и systemd, каждый из них получил по 4 голоса. Для принятия решения необходимо было соотношение голосов 2:1.
Через 2 недели после этого в начале февраля 2014 г. прошел второй тур, в котором ничего нового по сути не произошло. Голоса разделились в той же пропорции и было принято решение о дальнейших дебатах.
В пользу systemd проголосовали:
- Bdale Garbee — председатель Технического Комитета;
- Don Armstrong;
- Keith Packard — гуру иксов, в данный момент работает в Valve;
- Russ Albery.
За upstart проголосовали:
- Colin Watson;
- Steve Langasek;
- Ian Jackson;
- Andreas Barth.
И в третий раз проголосовал ТК, значительно упростив регламент и постановку вопроса. Исключив из повестки все вторичные вопросы и снизив порог принятия решения до простого большинства, комитет с третьего захода проголосовал в пользу systemd
Нет, никто из сторонников upstart не переметнулся в противоположный лагерь, итог голосования решил дополнительный голос председателя Технического Комитета Бидейла Гарби, и с перевесом всего в один голос вопрос СИ для Debian Linux был решен при прежнем балансе мнений 4:4.
Линус бреет Бидейла Гарби на LinuxConf 2009 г.
Итог голосования вызвал резкое чувство горечи, разочарования и несправедливости у противников systemd. В списках рассылки Debian страсти разыгрались не на шутку.
Ian Jackson призвал Бидейла Гарби подать в отставку с поста председателя ТК. Затем выпустив пар, решил на время отойти от участия в делах ТК.
Через пару дней 11 февраля стало ясно, что решение для Debian Linux окончательно принято и в обозримым будущем основной системой инициализации дистрибутива будет systemd.
Devuan
Разработчики дистрибутива Debian Linux, несогласные с таким положением дел, недолго горевали и за полгода до выхода той самой 8-й версии уже на основе systvinit создали свой форк и назвали его Devuan, отталкиваясь от словосочетания Dev one.
Изюминкой дистрибутива и его главным отличие от материнской ОС стало то, из-за чего затеяли весь сыр-бор. Devuan Linux выбрал sysvinit в качестве СИ. В целом рождение развитие дистрибутива, было встречено с большим энтузиазмом в среде пользователей Linux, не исключая русскоязычной его части.
В июне вышла уже вторая версия дистрибутива на пакетной базе последней версии своего предка — Debian Stretch. Помимо sysvinit в качестве СИ можно также выбрать openrc.
Попробуем разобраться из-за чего произошел такой раскол в среде разработчиков Debian, да и в целом среди большого количества пользователей различных вариаций ОС Linux. Ведь и раньше бывали трудные решения и опасные повороты в истории развития GNU/Linux: GPLv3 или нет, UEFI SecureBoot и пр. Почему же в этот раз все слетели с катушек?
Споры вокруг systemd
Если свести суть всех споров к одному тезису, то можно сказать, что systemd подразумевает размен наиболее полноценного управления инициализацией системы и ее службами на тотальный отказ от философии Unix.
Причем первое яростно оспаривают противники systemd, но второе никто не оспаривает. Не все согласны с тем, что systemd делает жизнь админа проще, но мало кто может оспорить то, что systemd и Unix Way это две крайности.
systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию D-Bus для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи контрольных групп Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций.
Откуда возникла потребность в такой всеобъемлющей системе управления инициализацией ОС и ее процессами? Я не верю в теории заговора и поэтому полагаю, что причины были в недостатках sysvinit и прочих СИ.
Созданная в 1983 г. sysvinit не умела решать ряд важных задач, таких как:
- параллельный запуск процессов;
- обнаружение съемных носителей;
- активизация сервисов на основе сокетов;
- надежно контролировать зависимости между различными процессами и службами;
- раннее логирование событий через
/dev/log
.
Все эти и многие другие неудобства были наконец-то решены в systemd. Стандартизация файлов конфигурации, унификация синтаксиса и управление зависимостями служб на основе cgroups
предположительно позволили вендорам коммерческих дистрибутивов Linux облегчить жизнь админам и снизить затраты управление серверным парком.
Но какова была цена? По какому-то странному дизайну детище Леннарта Поттеринга прошло путь от обычной СИ до «набора строительных блоков для Линукс системы». Цитата с главной страницы проекта. Эдакое государство в государстве, управляющее подключением устройств, точек входа файловых систем, сетевыми соединениями, системной службой времени, пользовательскими сеансами, системным журналами и пр.
Одновременно с этим многие разработчики DE, в особенности Gnome, стали привязывать элементы графического окружения к systemd:
- управление питанием;
- управление пользовательскими сеансами;
- просмотр журнала;
- если захлопнуть экран ноутбука, то события не будут обработаны;
- Wayland.
Все это не взлетит в Gnome без специальных патчей, если выбрать иную СИ кроме systemd.
Причина же такого положения дел в том, что слишком сложно поддерживать два варианта для множества наборов программ: один с systemd, а другой — без. В результате создается такая ситуация, когда в дистрибутиве Linux нет возможности выбрать другую СИ.
Облако тэгов ключевых слов вокруг systemd в Твиттере.
Ну хорошо, нет возможности выбора СИ, так ли это важно на самом деле? Не думаю, что меня сильно огорчит, если не будет возможности выбора загрузчика ОС, или клиента DHCP.
Как оказывается многих пользователей systemd раздражает уйма вещей. Раннее и полное логирование системных событий с самого момента запуска это конечно хорошо, но как можно себе представить Linux систему с бинарными лог-файлами?
Леннарт Поттеринг может быть хорошим программистом, но стиль его общения и реакция на обнаруженные дефекты, на критику — ниже всякой критики. Вот его реакция на дефект 5644.
Сам дефект.
# mkdir -p /foo/dir{1,2}
# touch /foo/.bar{1,2}
# cat /etc/tmpfiles.d/test.conf
R! /foo/.* - - - - -
Reboot.
Комментарий Леннарта Поттеринга.
I am not sure I'd consider this much of a problem. Yeah, it's a UNIX pitfall, but "rm -rf /foo/.*" will work the exact same way, no?.
Это не единичный случай, такой стиль общения снискал ему недобрую славу с среде гиков. И это только часть претензий к systemd и его автору. В силу своего размаха, масштаба и сложности система может быть хрупкой в качестве СИ — своей основной функции.
Пусть так, systemd превосходит все основные СИ по своим возможностям, однако все равно остается вопрос. Почему обычные админы localhost-а не имеют возможности выбрать для Debian Linux и других дистрибутивов, более простую в эксплуатации и отладке СИ? Ведь далеко не каждому нужен параллельный запуск процессов и управление квотами.
Мое понимание ситуации с systemd в том, что более совершенную, но вместе с тем для многих неоправданно сложную и непрозрачную СИ навязали тем, кому это было нужно и тем кому нет. Многим пользователям Linux это не понравилось и они стали сетовать на то, что теперь Linux стал как Windows, но только с открытым исходным кодом.
DnD совместно работают над sysvinit
И теперь наконец-то хорошие новости! В последнее время наметились подвижки между группами разработчиков СИ Debian и Devuan. Решено объединить усилия по нескольким направлениям.
- Поддерживать на плаву sysvinit для тех, кто готов использовать Debian Linux со всеми ограничениями, в т. ч. без графического окружения. Требуется помощь Devuan-цев в подготовке 10-й версии Debian, получившей название Buster.
- В результате подобного «перекрестного опыления» Debian-щики помогли коллегам из Devuan в подготовке выпуска sysvinit 2.92. Благодаря этому сроки сократились и выпуск состоялся до НГ, как было сказано в начале поста.
Если здравый смысл возобладает то обе группы разработчиков смогут поставить и реализовать более актуальные для всех пользователей Debian/Devuan цели — добиться полноценной поддержки нескольких СИ для Devuan Linux: openrc
, s6
, runit
, nosh
и т. д. Так же и Debian Linux полноценная поддержка хотя бы одной отличной от systemd СИ несомненно пошла бы на пользу.
P. S. В Амсдердаме 5-7 апреля 2019 г. пройдет первая конференция Devuan Linux.
Дополнительное чтение
- Init system support in Debian
- Why ‘init’ Needed to be Replaced with ‘systemd’ in Linux
- Collaboration between Devuan and Debian leads to new sysvinit release
- GNOME Without Systemd
Автор: temujin