Освен ако не сте живели под скала, или по-лошо - не ви е много интересно как работи Linux, сигурно сте чували за системната, (сравнително) нова система за начални системи, заместваща стария и остарял SysV init, дистрибуции.

Какво представлява системата за начало?

Когато машината ви за Linux започне, ще стартира първо "вграден" код, зареден първо от BIOS или UEFI, последван от буутлоудъра, който според конфигурацията си зарежда ядрото на Linux. Ядрото зарежда драйвери и като първа задача започва процесът на иницииране, който е първият, получил PID (Process ID) 1, присвоен на него.

От гледна точка на потребителя това изглежда като стартиране на мрежи и бази данни и т.н., но в действителност има доста сложен процес, който се извършва под капака. Услугите се стартират, спират и рестартират, често успоредно една с друга. Някои се изпълняват под различни права от други, състоянията на услугите се отчитат и се регистрират и се изпълняват много други задачи, които ще направят различната част от вашата система да работи и ще могат да взаимодействат със своите потребители и околна среда.

Това обаче, както се прилага, далеч не е еднакво и това наистина е мястото, където всичко спира да бъде обща и добре дефинирана.

Старата система за инициали

Първоначалната система, използвана от повечето дистрибуции на Linux, беше System V init (или SysV init накратко), която извлече името си от UNIX System V (произнася се "System Five"), първата достъпна в търговската мрежа система UNIX. Системата V OS е имала специфичен начин да стартира своя процес на иницииране и SysV init е поддържал лоялни към това през годините.

И това са много години. Системата UNIX V първоначално е била пусната през 1983 г., което прави init SysV init над 30-годишен подход към стартирането на Linux машини.

Необходимостта от промяна

Както беше отбелязано, SysV init е остарял и отдавна трябва да бъде заменен. Някои от причините за това включват:

  • SysV init използва / sbin / init за стартиране на процеса на иницииране, но самото начало има много ограничена роля. init прави малко повече от стартиране /etc/init.d/rc, според конфигурацията, прочетена от / etc / inittab, която на свой ред ще изпълнява скриптове, за да направи истинската работа на процеса на иницииране. Това, освен ако не е изрично панелизирано (като стартиране на Debian), ще се извърши последователно, като един скрипт започва след другия, правейки целия процес бавен, тъй като всеки скрипт трябва да изчака предишния да завърши.
  • SysV init няма достъп до PID или процесите, които е (непряко) стартира. Тя само чете PIDs и ги свързва с действителните процеси по сложен, сложен начин.
  • За системните администратори, които се опитват да променят средата, в която ще започне даден процес, това е доста трудно с SysV init. (За да се постигне това, те ще трябва да променят първоначалната структура, която е отговорна за започване на даден процес.)
  • Съществува определена функционалност, която е обща за всяка услуга, която SysV не изпълнява, но вместо това всеки процес ще трябва да се внедри в себе си, като сами "демонстрират" (стават демонен система), което е сложен и продължителен процес. Вместо да изпълнява тези стъпки веднъж, SysV изисква всеки процес да извърши самата работа.
  • SysV също така оставя определени функции на външни програми и не знае нищо за услугите, започнати от тези.

Всички от горепосочените и много повече дизайнерски недостатъци, или по-скоро остарелият системен дизайн на SysV, направиха създаването на модерна система за инициалите, която отдавна е закъсняла.

Влезте в системата

Имаше много опити да се създаде алтернативна система за начало, която да е само една от тях. Убунту използваше собствената си система за инициали, наречена "старт". Gentoo все още използва OpenRC. Другите начални системи включват initng, busybox-init, runit, Mudur и други.

Причината, поради която системата е ясен победител, е, че е приета от повечето големи дистрибуции. RHL и CentOS естествено преминаха системния път, тъй като Fedora беше първият дистрибутор, който официално бе приет през 2011 г. Но Systemd наистина се превърна в единствената система, която да ги управлява, когато Debian 8 официално превключи на systemd, като доведе Ubuntu и дериватите, преодолявайки първоначалната опозиция на Canonical (или по-точно на Mark Shuttleworth) към systemd.

Как е различно системата?

  • Systemd цели да осигури един централизиран начин да се справи с процеса на начало от началото до края.
  • Той стартира и спира процесите и услугите, като същевременно следи зависимостта им. Той може дори да започне процес като отговор на изискването за зависимост на друг процес.
  • В допълнение към стартирането и спирането на процесите по време на стартиране, Systemd може също така да стартира по всяко време, когато системата е в отговор на определени събития на задействане, например когато устройството е включено.
  • Той също така не изисква процеси да се демонстрират. За разлика от SysV init, systemd може да обработва услуги, работещи, без да се налага да премине през дългия процес на ставане на демони.
  • За разлика от SysV init, systemd знае и следи всички процеси, включително PID, и получаване на информация за процесите е много по-опростена за системните администратори в systemd.
  • Systemd поддържа контейнери, които са основно изолирани сервизни среди без изискване за виртуални машини. Това има голям потенциал за по-сигурен и опростен дизайн на системата в бъдеще.

Разбира се, това са само някои от основните предимства. За пълно обсъждане на предимствата на Systemd, трябва да прочетете Дебиан 8 "Systemd Position Statement"

полемика

Разбира се, системата не беше посрещната от всички. Всъщност мнозина имат и все още го гледат, като го наричат ​​монолитна и тромава, а някои дори я обвиняват в "прозореца", че всичко е централизирано. Мнозина твърдят, че това не е "начинът на Linux" и със сигурност systemd не изглежда да е в съответствие с POSIX стандартите и ако считаме, че systemd като инструментариум (извън двоичния), то определено е hugae.

Независимо от това, systemd е явно крачка напред и макар че не е перфектен, голяма част от критиките, които е получила, са обсъдени от неговия оригинален автор и разработчик Lennart Poettering. Определено е, че е много необходимо напредък и стъпка от старата система. Линус Торвалдс, създателят на Линукс, сякаш не се интересува от системите и кои сме ние да спорим с "Твореца".

заключение

След като бъде приет от всички големи дистрибуции на Linux, Systemd е тук, за да остане. Каквото и да кажат някакви системни администратори по каквато и да е причина, systemd е бъдещето на mainstream Linux, независимо дали го харесват или не, и което, разглеждайки неговите различни предимства, не е непременно лошо нещо.

За средния потребител той носи по-бързи времена за зареждане и вероятно по-надеждни системи, докато в бъдещите дистрибуции той може да стане по-съвместим един с друг. На края на потребителя определено ще се възползваме от по-модерния и съвременния дизайн на системата, който той носи на нашите настолни компютри.