> Почему все остальные системы инициализации могут прекрасно обходиться без хаков в ядре?Не systemd требует хаков в ядре, а развитие ядра требует systemd.
К тому же, systemd - это не только система инициализации. Это base layer of linux userspace.
> Программы вообще ничего о системе инициализации знать не должны.
Спорно. Опыт классических UNIX-систем (Mac OS X и Solaris) показывает, что тесная интеграция инита и демонов дает определенные плюсы (сокет-активация, удобный мониторинг, перезапуск без закрытия соединений и т.д.).
> Ну и чего не может busybox? И почему все раньше работало, а с приходом systemd оказалось что не могло оно работать?
Что не может телега? Почему раньше все работало, а с приходом автомобилей оказалось, что не могло оно работать?
systemd более удобен и технологичен, только и всего. Попробуйте построить десктопный дистрибутив на основе busybox - проникнетесь ;)
> Я уже писал длинный пост о systemd vs init, с разбором конкретных реальных ситуаций:
> http://www.opennet.ru/openforum/vsluhforumID3/100356.html#394
В том посте вы весьма жестко критикуете модель ядра Linux
> Полностью согласен. Рассмотрим дальше: systemd заменяет собой ряд стандартных компонентов, добавляет часть новых. Их нужно использовать (иначе зачем добавлять?) и рано или поздно программы начнут их задействовать. Само по себе это правильно. Но эти компоненты не унифицированы. Я не могу поставить отдельный понравившийся мне компонент, а остальное взять от других проектов. Почему нет претензий к другим системам инициализации? Потому что они заменяют один конкретный компонент и прекрасно взаимодействуют с остальными. Если заменяется несколько компонентов, то это как правило компоненты слабо связаны (могут работать друг без друга) и часто выделяются в отдельные проекты. Стратегия opensource основана на сотрудничестве и разделении труда - каждый сосредотачивается на своем компоненте и использует чужие.
Все это можно применить и к ядру Linux. Кроме того, утверждение
> Почему нет претензий к другим системам инициализации? Потому что они заменяют один конкретный компонент и прекрасно взаимодействуют с остальными.
весьма демагогично. Попробуйте заменить в Gentoo OpenRC на SysVinit. Подсказка: OpenRC использует свой формат скриптов, несовместимых с SysV, поэтому вам придется переписать скрипты для всех демонов.
> Посмотрите пример с сеткой
Где?
> Тогда почему я могу использовать только mdev, заменив весь остальной busybox другими
> *nix utils (хоть gnu, хоть bsd).
Потому что в наборе утилит командной строки интеграция не такая сильная, как в модулях ядра или базовой системы.
> iptables - frontend для сетевой части ядра. Проблема же logind и прочих *d - они не могут работать друг без друга.
Проблема iptables - то, что оно не может работать без netfilter :)
> Ну да - rmmod xxx, modprobe myCoolXxx :)
Окей, дайте мне модуль, заменяющий netfilter. Ядро 3.2.63, есличо.
> Также как я могу заменить gnu ls на ls из busybox или еще какой.
Поздравляю, хот что-то вы можете заменить в своей "неблоатварной" системе :)