> 1. В нормальных init есть все модули и симлинки на них в
> каталогах с уровнями запуска, соответственно дергаются только необходимые. У Поттеринга
> дергаются все(причем из нескольких мест) и для отмены загрузки необходимо в
> каталоги с "более высоким приоритетом" создавать симлинк на /dev/null - что
> он курил, когда это придумывал остается загадкой.Благодаря такому механизму systemd хорошо взаимодействует с пакетными менеджерами. Есть дефолтная конфигурация от майнтайнеров, которую приносит пакет, в виде как посчитал правильным майнтайнер. А есть админская локальная, в /etc - на случай если майнтайнерские умолчания не нравятся. Локальная конфигурация имеет приоритет.
Зачем так? Затем, что при этом не надо беспокоиться угробит ли пакетный менеджер при обновлении пакеты локальный конфиг майнтайнерским и придумывать всякие подпорки и хаки. Пакет может менять свой дефолтный конфиг как хочет. Но админские изменения в /etc, если они есть - трогать никто не будет. Удобно и логично.
> 2. Огромное число различных опций и проверок в Unit файлах жестко упирается
> в функционал systemd(потому он такой раздутый), если systemd чего проверять не
> умеет, но придется в unit файле городить sh костыль с абсолютно
> нечитаемой структурой.
В юнит-файле нельзя использовать скрипты. Но можно вызвать в ExecStart (ExecPre или где там еще) скрипт... который будет столь же (не)читаем как обычные sysv init скрипты. Просто этого счастья будет одно на сто пакетов. А не в каждом первом пакете. PROFIT.
Бонусом - ну попробуй указать какие системные вызовы использует твоя програма через shell script. Или там bounding set CAPS'ам задать. Что, ты даже таких слов не знаешь? А мы этим уже во всю пользуемся, урезая права сервисам до минимальных и настраивая всякие шедулеры и приоритеты. А много ли скриптов отслеживает таймаут старта подшефного сервиса? Кому-то конечно нравится молчаливый факап без диагностики, но не все же такие.
> 3. Поттеринг любит вносить координальные изменения, но дабы у пользователя ничего не
> домалось добавляет костыли которые отличают unit-файлы до и после прихода новой версии.
Покажешь какой-нибудь суровый убедительный пример?