Как я Void Linux ставил, жизнь без systemd

Автор: | 30.01.2020

Перед тем, как мигрировать на Void Linux, я пробежался по этим нашим интернетам, пытаясь найти хоть что-то, напоминающее детальный анализ данного дистрибутива. К большому сожалению, но ничего кроме восторга от того, что дистрибутив весь такой самобытный, я просто не нашёл. Так как Void позиционируется как ОС общего назначения, пришлось, интереса ради, попытаться на него полноценно мигрировать. Ну а эта статья — отчёт о превозмогании и выводы, которые я из этого сделал.

Зачем мне это?

Ну, во-первых, я не очень боюсь менять рабочее окружение. Был моложе, мог спокойно, развлечения ради, провозгласить месяц Gentoo (и неделю её собирать), чтобы потом, через отведённый месяц, радостно отползти обратно на уютненький Debian. Мог разжиться ноутбуком на arm, провозгласив его основным рабочим местом, заимев от этого очень много извращённой любви с debports и личной сборкой пакетов под armhf (во времена Debian Lenny, armhf ещё не был зачислен в основные поддерживаемые архитектуры, а armel работал неприлично плохо).

Во-вторых, systemd наступает, и надо с этим что-то делать. А тут ещё, внезапно, на глаза попался Void Linux, который использует runit как систему инициализации. А ещё у данного дистрибутива есть вариант, собранный с musl вместо glibc. Перспективно же! Кстати, это гораздо перспективней, чем сборка Gentoo с runit и дальнейшая пересборка всего с musl. Всё-таки готовый дистрибутив, пакеты которого сразу идут со скриптами под runit, быстрей можно довести до состояния рабочего места, нежели source-based дистрибутив, который придётся целиком пересобрать (возможно не раз), попутно переписав скрипты инициализации (потому что в том же Gentoo они под OpenRC, не под runit).

Void Linux

Ну вы сами быстро нагуглите и обзоры, основанные на том, что обзорщик установил дистрибутив, а потом пробежался по набору графических приложений, и даже записи стримов, где будет всё тоже, но на видео, с обязательной записью «реакции» — морды обзорщика, то во весь экран, то в углу экрана. Кстати, стримы по техническим тематикам достойны отдельного порицания за глупость и посредственность. Я же собираюсь поделится наблюдениями о самой сути Void’а.

Итак, Void — это про бедность. Это не порок, ведь Void, если верить источникам, начат был как «proof of concept» для пакетного менеджера. Задачи по строительству именно полноценной ОС не стояло, так что у Void’а нет отдельной тестовой ветки для предварительной обкатки пакетов свежих версий, нет утверждённых концепций построения дистрибутива, и это, фактически, привело к тому, что все пакеты собраны из свежего оригинального кода проектов. Это не от того, что Void старается быть «самым свежим из всех rolling-release дистрибутивов». Нет. Он не свежей debian testing (который сам по себе весьма rolling). Это от того, что в Void нет лишних ресурсов на ту деятельность, которую выполняют в Debian/Fedora/Gentoo и других, более «солидных», дистрибутивах. И именно поэтому Void использует GitHub для размещения сценариев сборки пакетов, правки документации и прочего… Для всего основного, короче. Сборочные же сервера — это арендованные сервера от Hetzner’а. И всё там автоматом. И дёшево. Эффективность же!

А ещё, Void — это про велосипеды. Собственно их wiki посвящена, в первую очередь, именно прикладному велосипедостроительству. Например, для работы сессии xfce4 с ConsoleKit нужно запускать startxfce4 с ключом «—with-ck-launch». Внезапно, если собирать из мейнстрим-исходников, то ярлык с доступно сессией будет без этого ключа. И так со всем подряд.

Можно взять, для следующего примера, вопрос логирования. Базовая установка Void’а не содержит syslog сервера. Как на мой взгляд, так это понятно, ведь сам runit имеет возможность обеспечить логирование stdout/stderr запущенных в нём программ. Но это никак не используется в Void’е. Более того, почти весь софт собран с поддержкой syslog’а. Зато в wiki дистрибутива есть статья, где предлагают таки накатывать syslog сервер, притом собственную костыльную реализацию на базе пары утилит от разработчика runit. Всё бы ничего, но… зачем делать половинчатые решения? То есть «runit может логирование, так что мы не ставим в базовую поставку syslog-сервер, но всё будет собрано под syslog, а run-файлы runit будут идти без логирования средствами runit».

Собственно я сначала боялся, что Void разрабатывают полторы калеки. Но нет. 50 человек активных коммитеров на GitHub! Но… без общего подхода и идеологии.

А что в итоге?

Void Linux позволяет вспомнить, за что любишь свой привычный инструмент. У меня это — Debian. И плевать, на самом деле, что там нынче systemd. Systemd такой ужасный и жирный в первую очередь почему? Потому что это — комбайн. Он те же сервисы умеет запускать как угодно. И управлять ими как угодно. Не надо менять что-либо в конфигурации демона, опиши просто его в .service-файле systemd! А вот по Void’у сейчас надо пройтись и напрячь мейнтейнеров пакетов переписывать скрипты запуска. Ибо runit может работать init’ом полноценно. И логирование может обеспечить, и отслеживание зависимостей запуска, но для этого надо что-то делать!

Нет, ну правда: не надо думать, что только в Void’е разработчики смотрели на runit. Нет. В том же Debian openssh-server идёт с зависимостью от runit-helper, который, сюрприз-сюрприз, содержит скрипты для запуска sshd как сервиса runit. И таки да, они больше похоже на то, как должно организовывать запуск сервиса.

Ну а что Void-то? А Void хорош тем, что в нём уже есть runit. И уже есть musl. И eudev… Много чего там есть, но нужно делать форк и доводить до ума. Это сделать проще, чем портировать Debian для работы с musl и runit.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *