О злокозненности systemd’а

Алексей Федорчук

Было время, когда сочинял я памфлеты о злокозненности Windows, и в мыслях не держал, что придётся писать в том же жанре о злокозненности Linux’а — по крайней мере, в некоторых его проявлениях. Тех самых, которые нынче считаются остриём прогресса. К сожалению, тенденции развития этой ОСи продолжают давать к тому повод.

Однако этот памфлет был вызван более непосредственным поводом — послужила заметка Сергея Голубева О бедном systemd… С Сергеем всегда приятно подискутировать, так что не мог отказать себе в удовольствии прокомментировать некоторые его высказывания и попытаться ответить на поставленный им вопрос. Ибо на самом деле он куда шире, чем можно подумать, читая обсуждения всяких мелочей типа квадратиков в русской консоли или скорости загрузки системы.

Но для начала, естественно, комментарии. Сергей цитирует мою сентенцию о важности системы инициализации для применителя, сопровождая её словами:

Её можно истолковать таким образом, что применитель непременно почувствует разницу между systemd, upstart и sysvinit. Но тогда одно из двух — либо я не применитель, либо я куда-то не туда смотрю.

Нет, всё верно. Просто у Сергея, к счастью для него, пока не было повода посмотреть «туда». Потому что при рутинной работе в штатном режиме применителю действительно не важно, каким образом этот штатный режим инициировался. По крайней мере, так ему может казаться. Ибо

Ничто не бывает без начала, и всё начинается с дороги!

Правда, это сказал уже не Сергей, а Ахмеждан Абу-Бакар устами дяди героя своей повести «Ожерелье для моей Серминаз». В нашем же случае всё начинается с системы инициализации. Которую действительно можно не замечать, пока работа действительно рутинная и пока она происходит в штатном режиме. А вот когда хочется или требуется за пределы рутины выйти, или когда происходит незапланированный сбой в работе — тут-то и приходится вспомнить, с чего всё начинается. Что можно рассмотреть на примере всё тех же квадратиков вместо русских букв в текстовой консоли — как бы он ни набил оскомину, от этого менее показательным не становится.

Редкий применитель нынче выполняет практическую работу в «голой» консоли — в большинстве случаев те же действия куда проще выполнять в терминальном окне графического режима. Однако иногда это оказывается или более комфортным (например, на маленьких экранах ультра- с позволения сказать, буков), или необходимым — когда графическая система работает не должным образом, или просто даёт сбой. И тут корректная кириллизация консоли оказывается не лишней. Тем более что в общем случае эта задача была решена лет 15 назад для восьмибитных кодировок, и повторно решилась тому уже лет десять как — после всеобщего распространения UTF-8.

Всем известна шутка о том, что компьютерные технологии призваны решать те проблемы, которых без них просто не было. В случае с systemd в доля шутки в ней очень небольшая. Потому что действительно, до внедрения этой системы инциализации такой проблемы, как я уже сказал, не было много лет. Но вот что разработчики systemd эту проблему в общем случае пытаются решить — этого нет тоже (о существовании разного рода «костылей» для случаев частных мне известно). Более того, они утверждают, что эту проблему и решать не надо. Более того, её нужно спрятать поглубже — незаметной для применителя. По поводу чего слово опять предоставляется Сергею:

Что касаемо квадратиков. Только что захотел проверить и узнал, что из загруженной РОСА в консоль вообще нельзя переключиться известным мне способом.

Так что если проблему нельзя решить… Или просто лениво это делать? Скорее таки простым способом нельзя — ведь она касается не только кириллицы, но и любых наборов символов не на основе латиницы. Так вот, если решить проблему не получается, нужно просто сделать вид, что её нет. И, со свойственной всем апологетам systemd неаристотелевой логикой добавить, что и решать её не нужно, только вот глупые пользователи этого не понимают.

Квадратики — это, конечно, мелочь, но… Разработчики systemd хвастаются тем, какую замечательную систему они разработали. Только вот для пользователей разбираться вней не нужно, да они и не смогут. Да, в деталях не смогут. Но те из применителей, которые привыкли доверять своим глазам, увидев квадратики в консоли, начинают терзаться смутными подозрениями: если разработчики допускают такие ляпы, лежащие на поверхности и заметные даже ни разу не программистам, может, они и в более серьёзных вещах допускают более серьёзные ошибки? Которые рано или поздно скажутся на их, применителей, работе…

Так что слова Сергея, что

с практической точки зрения никакой разницы между Ubuntu с upstart и РОСА с systemd я не вижу

не вполне соответствуют действительности. Вы будете смеяться, но, вот уже почти год как довольно плотно окунулся в мир Ubuntu — и не имею почти ни малейшего представления об её upstart. Почему? Не только потому, что, наученный опытом общения с devfs и HAL’ом, ныне в бозе почившими, ленюсь влезать в то, чему место, возможно, в той же братской могиле. Но и по более простой причине: за всё это время у меня ни разу не возникло необходимости в этот ваш upstart залазить. Всё работает и так — квадратиков в консоли не наблюдается, консольная мышь включается простой установкой пакета gpm, без всяких дополнительных телодвижений, и так далее.

В systemd же, за куда более короткий срок общения с ним (в рамках openSUSE после того, как в ней переключение на sysvinit перестало нормально работать), мне приходилось залазить неоднократно. И причина тому прямо противоположная: те самые мелкие, но важные для меня вещи должным образом не работали.

Вот и ответ на вопрос Сергея:

Не может ли кто-нибудь привести конкретный пример влияния системы инициализации на привлекательность десктопа для применителя.

Не это ли конкретный пример? С одной стороны, система, пусть не идеал с точки зрения технического совершенства, но практически беспроблемная — не только из-за upstart, но и благодаря ему тоже. А что Ubuntu вместе со своими сородичами и клонами — нынче самая беспроблемная система, я за последний год имел много случаев убедиться. Или, если угодно, наименее проблемная — про «осенний баг» с раскладками я помню, но ведь это тяжёлое наследие царского гномошелловского режима.

А с другой стороны — серия дистрибутивов, многие из которых технически совершенней Ubuntu, а отдельные представители, как openSUSE, просто лучшие по ряду параметров. Но — никогда не застрахованные от неожиданных проблем, возникающих на ровном месте, или от того, что чукча-хирург в очередной раз отрезал скальпелем что-то не то. И вот в этом отрезании и ломании как раз роль systemd переоценить трудно.

И какая же система оказывается более привлекательной для применителей — от ветеранов движения до племени младого, пришедшего по велению комсомольской души? Ответ вполне очевиден: применителю, решающему практические задачи, предсказуемость системы важнее её абстрактного совершенства. В отличие от потребителя, для которого система — не более чем источник развлечений. Включающих в себя, в том числе, и доказательство собственной крутизны и уникальности.

Впрочем, про привлекательность Ubuntu для применителя, похоже, надо привыкать говорить в прошедшем времени. Если высказывание Шаттлворта о systemd — не шутка в духе анекдотов о Ходже Насреддине, то и этот дистрибутив рано или поздно будет подгребён под systemd‘ову гребёнку. А то и просто прекратит своё существование. И тогда вольным братьям-казакам останется путь к последним рубежам — на BSD-системы. Автор этих строк такой путь, в направлении DragonFly, уже присматривает.

Впрочем, тут вступает в действие второй момент злокозненности systemd — её пресловутая непереносимость. Но это — предмет другого разговора. К которому я, возможно, ещё вернусь, если тема мне не осточертеет окончательно. Потому что, поверьте, копаться во внутренностях DragonFly гораздо интересней, чем пережёвывать вещи, пройденные за последние пятнадцать лет неоднократно…