История systemd

Что: a04a29f4e16dd3d5aad7c5309e0b10fb7bd5823e

Когда: 2020-05-30 20:25:16+03:00

Темы: systemd

История systemd

https://habr.com/ru/post/503816/
https://suckless.org/sucks/systemd/
https://www.opennet.ru/base/sys/systemd_myth.txt.html
Да уж, systemd как никто разделил людей на два лагеря: любителей этого,
и hater-ов этого.

Я стараюсь называть системы где он используется: systemdOS, ибо если там
что-то (по вопросам администрирования) выполняется не через systemd, то
значит вы что-то делаете неправильно. Десятилетия существования и
разработки рабочего софта выкинуты нафиг и заменяются написанным с нуля:
готовьтесь к тому, что даже DNS, NTP не будут работать запросто (история
это уже показала). Готовьтесь к тому, что поведение всей вашей системы
уже будет совершенно иным (например грохать tmux при вашем logout).
Любой компонент вашей ОС будет заменятся systemd-шным вариантом, уже не
раз доказавшем что он будет более ограниченным и более глюкавым. В
systemd в прошлом году было уже более 1.2M строк кода -- это тянет на не
одну полноценную ОС. 1.2M!!! Ещё с зависимостями, в том числе от Linux.

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

А ещё забавный факт про то, что в нём логи в бинарном виде. Тупейший
аргумент за это: для индексирования и поиска по ним. Как бы, а что
мешает индексировать обычные текстовые логи? Вот-вот, ничего, но я уже
сталкивался с тем, что люди банально не могут передать друг другу логи,
ибо читать то их нечем (на целевой системе без systemd). Я не против
индексирования логов -- текстовый формат как-то этому препятствует?
Хочется целостность и аутентичность данных в логе? В чём проблема,
бинарный формат то в этой задаче чем поможет и необходим?

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

На работе безусловно было много холиваров, но, благо они закончились,
так как все сошлись в одном: systemd это штука для desktop-а. Он
актуален и может быть полезен только для desktop-like вещей и desktop
пользователей, которые и не будут знать что такое IP-адрес или точка
монтирования. systemdOS это просто написание Windows/macOS-like системы,
не более. Монолитного, забагованного, ограниченного, невероятно
огромного и громоздкого, не отлаживаемого (ну кроме разработчиков
systemd, которые будут копаться в его C коде) blackbox-а. Ну а так как
компании хотят зарабатывать деньги, то создание аналогичной системы как
Windows/macOS, где пользователь готов терпеть любые баги, глюки,
нарушения приватности (systemd же по умолчанию в Google сливал DNS
запросы), беспомощность и возможность что-либо исправить только через
поддержку сторонних специалистов.

Очень много наездов, кстати, на init-систему запуска, адекватных, если
уж рассматривать systemdOS как систему запуска. Вот только под этой
"init-системой" подразумевают реально какое-то убожество из RedHat
систем, судя по всему, которое мало что умеет делать без сотен строк
shell-кода. В FreeBSD свой rc, удовлетворяющий тьме адекватных
требований и хотелок к системе запуске для сервера. В OpenBSD свой,
только попроще. В NetBSD свой. В Debian точно помню что отличный от
RedHat-овского. Я уверен что и в десятке других дистрибутивов свои
диалекты и версии. Поэтому, как минимум, уже безграмотно объединять
невероятно разные по возможностям системы запуска основанные (даже
неявно) на shell-скриптах. В той же FreeBSD я не помню написал ли хоть
одну строчку реально shell кода (ну чтобы там сохранение PID, lockrun,
if-ы какие-нибудь были) за последние десять лет -- всё делал в
декларативном простом и тупом стиле, ибо возможностей rc FreeBSD за
глаза хватает. При этом я вовсе не ратую и толкаю за использование
shell-скриптов и мол они наше всё. Просто shell вполне себе is good
enough адекватный выбор для задачи инициализации и настройки системы
(возможно кроме сильно других требований для "классических" desktop
систем).

И мне ещё очень нравится пример работы с systemd:

    Here is what happens on a stock Arch Linux system, powered by
    systemd, when a non-root user tries to restart the system:

        $ reboot
        Failed to set wall message, ignoring: The name org.freedesktop.PolicyKit1 was not provided by any .service files
        Failed to reboot system via logind: The name org.freedesktop.PolicyKit1 was not provided by any .service files
        Failed to talk to init daemon.

    In contrast, here is the equivalent error message on a system
    powered by runit:

        $ reboot
        init: fatal: unable to create /etc/runit/stopit: access denied

    And on the oldest and best, Slackware:

        $ reboot
        reboot: must be superuser.

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

Сгенерирован: SGBlog 0.34.0