Чем хорош SystemV?
Как известно, SystemV и systemd представляют собой два разных метода запуска операционной системы Linux. Но сценарий запуска SystemV и демона init — это, все же, старый метод, тогда как юниты target в systemd — метод более новый. Не секрет, что сегодня большая часть современных дистрибутивов применяют для запуска, управления процессами и завершения работы именно подсистему systemd, присутствующую почти в каждом аспекте современного Линукса. Однако есть и те, кто так не делает. Дело в том, что до сих пор ряд сисадминов и создателей дистрибутивов предпочитают «старый добрый» SystemV. В принципе, их можно понять, ведь преимущества существуют у обоих методов.
Что же не так с systemd?
Почему systemd порой вызывает противоречивые реакции у технических специалистов и системных администраторов? Проблема в том, что systemd является ответственным за очень большое количество различных процессов и задач. А такая универсальность, как считают некоторые сисадмины и разработчики, уже является нарушением главного принципа, который говорит о том, что программы должны быть небольшими, каждая должна делать что-то одно и делать это хорошо. В результате некоторые высказываются против этого демона и отказываются от его использования, отдавая предпочтение классическим решениям.
Фактически, systemd представляет собой комплексную систему больших исполняемых файлов, причем их логику не понять, не имея доступа к исходному коду. Конечно, systemd — open-source проект, поэтому проблемы с доступом к коду отсутствуют, однако все это не очень удобно.
И все же, как считают некоторые, systemd своим появлением отчасти опровергает базовые принципы Linux-философии. В качестве бинарного файла systemd закрыт от прямого редактирования/просмотра системными администраторами. Ну и, повторим: эта подсистема пытается «делать все», к примеру, управлять запущенными службами. Хотя, конечно, если сравнивать с SystemV, systemd предоставляет намного больше информации о состоянии.
Так чем же хорош SystemV?
Во-первых, SystemV является более доступным. Запуск осуществляется посредством bash-скриптов. После запуска ядром init, скомпилированный бинарный файл init выполняет запуск скрипт rc.sysinit, выполняющий много задач в целях инициализации системы. Далее, после завершения rc.sysinit, init выполняет запуск /etc/rc.d/rc, который уже запускает разные демоны. Эти демоны определяются сценариями запуска SystemV в /etc/rc.d/rcX.d, причем «X» здесь — это уровень выполнения (runlevel).
Во-вторых, кроме самого init, все эти демоны и скрипты являются открытыми и легкочитаемыми. На практике не составляет большого труда эти скрипты изучить, чтобы понять, как каждый из них работает, и что конкретно происходит в процессе запуска ОС (но вряд ли кто-либо из сисадминов очень часто этим занимается).
В-третьих, каждый запускаемый скрипт нумеруется таким образом, чтобы запускать нужную службу в конкретной последовательности. Что касается служб, то они запускаются последовательно и по одной за один раз.
Два слова о муках выбора
Да, между SystemV и systemd существуют противоречия, однако основная причина этому следующая: между ними нельзя выбирать на уровне системного администрирования. Почему? Да потому, что выбор уже сделали за вас создатели дистрибутивов и упаковщики. И сделали они это не без веских оснований: например, у замены init по причине его слишком инвазивной природы, очень много трудностей и последствий, а справиться со всеми ими весьма сложно вне создания дистрибутива.
По материалам tproger.ru.