Debian vs. Devuan

Devuan (читается как DevOne) является производным от Debian GNU/Linux дистрибутивом. Принципиальное отличие между Debian и Devuan заключается в отсутствии привязки к systemd у последнего. Несмотря на то, что дистрибутиву уже три года, все еще остается много вопросов относительно его появления и назначения. После того как наша команда добавила возможность кастомизации Devuan сначала в Pieman, а затем в CusDeb, я наконец хочу немного рассказать об этом дистрибутиве в нашем блоге. Основным источником разногласий, которые вылились в работу над Devuan, является переход Debian и Ubuntu на использование системы инициализации systemd. Но обо всем по порядку.

Ускорение загрузки

В конце 2000-х несколько крупных производителей операционных систем на базе ядра Linux пришли к выводу, что необходимо ускорять время загрузки своих систем и, как следствие, брать на вооружение альтернативную систему инициализации. Так как именно система инициализации отвечает за загрузку операционной системы, то стало очевидно, что начинать нужно именно с нее. В течении долгого времени дистрибутивы GNU/Linux использовали для этих целей SysVinit, которая сейчас считается классической системой инициализации и в данной статье противопоставляется всем другим.

Компания Canonical, которая является основным разработчиком дистрибутива Ubuntu, начала работу над альтернативной системой инициализации под названием Upstart в середине 2000-х. Upstart дебютировала в Ubuntu 6.10 «Edgy Eft», заменив SysVinit, но окочательно новая система иницализации была интегрирована в дистрибутив только к выходу Ubuntu 9.10 «Karmic Koala». Затем на Upstart обратили внимание компании Google и Red Hat, интегрировав ее в свои продукты. Так, Upstart начала использоваться в ChromeOS и Red Hat Enterprise Linux 6. На новую систему инициализации даже планировал перейти Debian.

Upstart оказалась эффективней чем SysVinit благодаря событийно-ориентированной архитектуре. Системные сервисы стало возможным запускать и останавливать на основе событий, а не уровней запуска (runlevels), указанных в скриптах инициализации. Данный подход предполагал генерацию событий при запуске или остановке системных сервисов, что позволило организовать привязку к ним других сервисов. Таким образом, для определения последовательности запуска сервисов и оценки возможности их выполнения в параллельном режиме был взят на вооружение метод учета зависимостей. Работа в тандеме с ядром, которое также стало развиваться в сторону событийно-ориентированной архитектуры, благодаря чему появилась возможность асинхронной загрузки драйверов, заметно сократила время от нажатия кнопки включения до полной готовности всей системы.

Недостатки SysVinit мотивировали разработчиков Upstart приступить к созданию альтернативной системы инициализации, а достоинства launchd из Mac OS X и SMF из Solaris послужили основным источником ценных идей, которые помогли в решении поставленной задачи. Однако, по воле судьбы или случайному стечению обстоятельств, Upstart оказалась всего лишь трамплином для другой, более совершенной системы инициализации. Так, компания Red Hat, при участии разработчиков из Novell, IBM, Intel и Nokia, поставила перед собой цель создать систему инициализации, нацеленную на более интенсивную параллелизацию выполнения сервисов на этапе загрузки. Проект получил название systemd и отличался более радикальным подходом к решению некоторых задач. К примеру, если Upstart была совместима со скриптами инициализации SysVinit, то systemd предлагала для этих целей новый синтаксис и, таким образом, не была завязана ни на Bash, ни на любую другую оболочку. Тем не менее, на этам этапе все было хорошо. Волна критики накатила на проект немного позднее, когда стало очевидно, что акцент разработчиков немного сместился в сторону, отличную от первоначальных целей. Так, в один прекрасный момент проект под названием systemd стал позиционироваться не как «альтернативная система инициализации», а как «системный менеджер». Система инициализации в этом проекте стала одним из многочисленных компонентов, а весь проект стал нацелен на управление различными аспектами работы системы. Также стоит заметить, что немалая доля критики свалилась на systemd из-за того, что лидером проекта является не кто иной, как сам Леннарт Поттеринг (Lennart Poettering), в прошлом разработчик звукового сервера PulseAudio, который в начале своего пути не отличался стабильностью работы (в основном из-за аудиодрайверов, а не ошибок в коде PulseAudio), что и является причиной ненависти как к проекту, так и к его автору.

Появление Devuan

Наконец, я подобрался к основным мотивам, которые заставили разработчиков Devuan форкнуть Debian с целью его альтернативного развития. В конце 2013-го – начале 2014-го Debian в очередной раз вернулся к актуальной для себя задаче – переходу на более современную систему инициализации. В качестве кандидатов рассматривались Upstart и systemd, и по результатам голосования победила последняя. Следом за Debian пошла Ubuntu. Стоит заметить, что выбор стоял между системой инициализации и системным менеджером, одним из компонентов которого являлась система инициализации. По итогам интеграции systemd в Debian дистрибутив не только перешел на новую систему инициализации, но и оказался сильно завязанным на системном менеджере, который был призван управлять всеми аспектами работы системы. В итоге, systemd был поставлен в один ряд с ядром и стандартной библиотекой языка C, для которых в дистрибутиве не предусмотрены альтернативы. Jessie стал первым выпуском Debian, который не мог функционировать без systemd. Поэтом группа разработчиков Veteran Unix Admins, несогласная с этой политикой, выпустила в рамках проекта Devuan свободную от systemd версию Jessie. Для того чтобы этого добиться, разработчикам потребовалось внести изменение в 381 пакет. Так появился первый выпуск Devuan, позволивший пользователям Debian использовать или не использовать systemd в зависимости от их желания.

Заключение

Я написал эту статью в первую очередь для того, чтобы помочь нашим пользователям разобраться в причинах появления еще одного производного от Debian дистрибутива. При этом я не являюсь противником ни systemd, ни Леннарта Поттеринга, и остаюсь пользователем Debian (рабочая станция) и Ubuntu (ноутбук). Тем не менее, я считаю, что безальтернативная поставка systemd в крупнейших дистрибутивах является крайностью. В связи со всем этим я попытался сделать статью как можно более беспристрастной. Но теперь наконец я могу сказать, что я восхищаюсь разработчиками Devuan и ценю проделанную ими работу, и рад заявить, что CusDeb поддерживает этот дистрибутив.

Leave a Reply

Your email address will not be published. Required fields are marked *