Если вы не жили под камнем или, что еще хуже, вас не особо заботит, как работает Linux, вы наверняка слышали о системный , (относительно) новой системе инициализации, заменяющей старую. и устаревший метод инициализации SysV, недавно принятый большинством основных дистрибутивов Linux.
Что такое система инициализации?
Когда ваша машина с Linux запускается, она сначала запускает некоторый «встроенный» код, загружаемый сначала из BIOS или UEFI, а затем загрузчик, который в соответствии со своей конфиг
Contents
Что такое система инициализации?
ужает драйверы и в качестве своего первого задания запускает процесс инициализации, которому первым присваивается PID (идентификатор процесса) 1.С точки зрения пользователя это выглядит как запуск сети, баз данных и т. д., но на самом деле под капотом происходит довольно сложный процесс. Службы запускаются, останавливаются и перезапускаются, часто параллельно друг другу. Некоторые из них запускаются с другими привилегиями, чем другие, статусы служб сообщаются и регистрируются, а также выполняется множество других задач, которые заставят разные части вашей системы работать и смогут взаимодействовать с ее пользователями и средой.
Однако то, как это реализовано, далеко не единообразно, и именно здесь все перестает быть общим и четко определенным.
Старая система инициализации
До недавнего времени в большинстве основных дистрибутивов Linux использовалась система инициализации System V (или сокращенно SysV init), название которой получило форму UNIX-система V (произносится как «System Five»), первая коммерчески доступная система UNIX. ОС System V имеет особый способ запуска процесса инициализации, и SysV init остается верным этому на протяжении многих лет.
И прошло много лет. UNIX System V была первоначально выпущена в 1983 году, что делает init SysV init более чем 30-летним подходом к запуску машин с Linux.
Необходимость перемен
Как уже отмечалось, инициализация SysV устарела и давно пора ее заменить. Вот некоторые из причин:
- SysV init использует /sbin/init для запуска процесса инициализации, но сам init играет очень ограниченную роль. init делает немного больше, чем запускает /etc/init.d/rc, в соответствии с кон
Старая система инициализации
, который, в свою очередь, запускает сценарии, выполняющие реальную работу процесса инициализации. Если это не указано явно (как в случае с startpar в Debian), это будет происходить последовательно, один сценарий запускается за другим, что замедляет весь процесс, поскольку каждый сценарий должен ждать завершения предыдущего. - SysV init не имеет доступа к PID или процессам, которые он (косвенно) запустил. Он только считывает PID и связывает их с реальными процессами сложным и обстоятельным образом.
- Для системных администраторов, пытающихся изменить среду, в которой будет запускаться определенный процесс, это довольно сложно с помощью SysV init. (Для этого им придется изменить строку инициализации, отвечающую за запуск данного процесса.)
- Существует определенная функциональность, общая для каждой службы, которую SysV не реализует, но вместо этого каждый процесс должен реализовать себя, например, «демонизировать» себя (стать системным демоном), что является сложный и долгий процесс . Вместо
Необходимость перемен
один раз, SysV требует, чтобы каждый процесс выполнял работу самостоятельно. - SysV также оставляет определенные функции внешним программам и ничего не знает о службах, запускаемых ими.
Все вышеперечисленное, а также многие другие недостатки конструкции, или, скорее, устаревшая конструкция системы SysV, сделали создание современной системы инициализации давно назревшим.
Введите systemd
Было много попыток создать альтернативную систему инициализации, и systemd — лишь одна из них. Раньше в Ubuntu использовалась собственная система инициализации под названием выскочка . Gentoo по-прежнему использует OpenRC . Другие системы инициализации включают инициализация , занятая инициализация , запустить его , Мудур и другие.
Причина, по которой systemd является явным победителем, заключается в том, что он принят большинством основных дистрибутивов. RHL и CentOS, естественно, пошли по пути systemd, поскольку Fedora была первым дистрибутивом, официально принявшим systemd в 2011 году. Но systemd действительно стала единственной системой инициализации, управляющей ими всеми, когда Debian 8 официально перешел на systemd, принеся с собой Ubuntu и производные., преодолевая первоначальная оппозиция у Canonical (или, точнее, у Марка Шаттлворта) в сторону systemd.
Чем отличается systemd?
- Systemd стремится предоставить единый централизованный способ управления процессом инициализации от начала до конца.
- Он запускает и останавливает процессы и службы, отслеживая их зависимости. Он может даже запустить процесс в ответ на требование зависимости другого процесса.
- Помимо запуска и остановки процессов во время загрузки, Systemd также может запускаться в любое время, когда система работает в ответ на определенные триггерные события, например, когда устройство подключено.
- Также не требуется, чтобы процессы демонизировали себя. В отличие от инициализации SysV, systemd может обрабатывать запущенные службы без необходимости проходить долгий процесс превращения в демона.
- В отличие от инициализации SysV, systemd знает и отслеживает все процессы, включая PID, и получать информацию о процессах системным администраторам под systemd гораздо проще.
- Systemd поддерживает контейнеры, которые по сути представляют собой изолированные сервисные среды без необходимости использования виртуальных машин. Это имеет большой потенциал для создания более безопасных и простых систем в будущем.
Введите systemdsystemd-контейнеры">
Конечно, это лишь некоторые из основных преимуществ. Для полного обсуждения преимуществ systemd вам следует прочитать « Заявление о позиции Systemd » Debian 8.
Споры
Конечно, не все приветствовали systemd. На самом деле, многие используют и до сих пор используют недовольство этим , называя его монолитным и громоздким, а некоторые даже обвиняют его в том, что он идет «по пути окон», когда все централизовано. Многие утверждают, что это не «путь Linux», и, конечно же, systemd не соответствует стандартам POSIX, и если мы рассматриваем systemd как набор инструментов (помимо просто двоичного файла), это определенно огромная проблема.
Тем не менее, systemd явно является шагом вперед, и хотя он не идеален, большая часть критики, которую он получил, исходила от адресован первоначальным автором и разработчика Леннарта Поеттеринга. Это определенно очень необходимое усовершенствование и шаг вперед по сравнению со старой системой инициализации. Линусу Торвальдсу, создателю Linux, кажется, не против systemd слишком много, и кто мы такие, чтобы спорить с «Создателем».
Заключение
Система, принятая во всех основных дистрибутивах Linux, никуда не денется. Что бы ни говорили некоторые системные администраторы по какой-либо причине, systemd — это будущее массового Linux, нравится это отдельным пользователям или нет, что, учитывая его явные преимущества, не обязательно является чем-то плохим.
Для обычного пользователя это обеспечивает более быструю загрузку и, возможно, более надежную систему, а в будущих дистрибутивах, использующих его, он может стать более «