Co je dobré vědět o systemd

sd1Pokud nežijete v hlubokých temných lesích, nebo hůře – nezajímá vás, jak Linux funguje, tak jste již museli slyšet o systemd, (relativně) novém init systému, jež postupně nahrazuje starší a zastaralé init systémy, a na který poslední dobou přechází většina hlavních linuxových distribucí.

Co je to init systém?

Když zapnete váš počítač s Linuxem, pravděpodobně se nejprve spustí kód „built-in„, načtený z BIOSu nebo UEFI, následuje bootloader, který podle své konfigurace načte linuxové jádro. Jádro pak načte ovladač a jeho první prací je spuštění procesu init, kterému je jako první přidělen PID (ID procesu) 1.

Z uživatelského pohledu to vypadá, že startuje jen síť, databáze atd.. Ve skutečnosti je to poměrně složitý skrytý proces. Služby se spouští, zastavují a restartují, často souběžně. Některé z nich se spouští pod jinými právy než ostatní, stavy jednotlivých služeb jsou logovány a nahlašovány a je prováděna celá řada dalších úkolů tak, aby byly všechny části vašeho systému schopny pracovat a komunikovat se svým uživatelem a okolním prostředím.

Samotná realizace má však daleko od jednotnosti a opravdu je to místo, kde není nic společné a správně definované.

Starý init systém

Init systém, dosud používaný většinou hlavních linuxových distribucí, byl System V init (zkráceně SysV init), který má svůj název odvozen od Unix System V (vyslovovat „System Five“), prvního komerčně dostupného UNIX systému. System V OS má specifický způsob, jak spouštět svůj init proces a SysV init k tomu zůstává v průběhu let loajální.

sd2

A že je to už hodně let. UNIX System V byl původně vydán v roce 1983, což znamená, že SysV init je už více než 30 let starý přístup ke spuštění zařízení s Linuxem.

Potřeba změny

Jak již bylo řečeno, SysV init je zastaralý a již dávno měl být nahrazen. Důvody pro změnu jsou zejména:

  • SysV init používá k zahájení procesu init /sbin/init, ale init sám o sobě má velmi omezenou roli. Init však dělá něco více než jen start z /etc/init.d/rc – podle konfigurace načtené z /etc/inittab spouští různé skripty. To se ale děje postupně, jeden skript je spouštěn za druhým, takže celý proces je pomalý, protože každý skript musí čekat až je dokončen ten předchozí.
  • SysV init nemá přístup k PID, aby jednotlivé procesy (nepřímo) spustil. Pouze čte PID a spojuje je s aktuálními procesy nepřímo a dost komplikovaným způsobem.
  • Pro systémové administrátory, kteří se snaží změnit prostředí, v němž by se určitý proces zahájil, je to v SysV init docela obtížné. (Za účelem dosažení tohoto cíle musí upravovat init strcipt, který je odpovědný za spuštění daného procesu).
  • Funkce společné pro více služeb SysV init neimplementuje, ale každý proces je musí provádět sám, „démonizuje“ je (používá systémové démony), což je komplikovaný a zdlouhavý proces . Místo toho, aby tyto kroky provedl jednou, SysV init vyžaduje, aby každý proces měl tuto funkci pro sebe.
  • SysV init také ponechává určité funkce na externích programech a neví nic o službách, které tyto programy spustí.

Všechny výše uvedené a i mnoho dalších nedostatků nebo spíše zastaralých systémových řešení u SysV init přineslo nutnost vytvoření moderního init systému.

Příchod systemd

V minulosti proběhlo už mnoho pokusů vytvořit alternativní init systém, systemd je pouze jedním z nich. Ubuntu používá ke spuštění vlastní init systém zvaný upstart. Gentoo stále používá OpenRC. Další init systémy jsou initng, busybox-init, runit, Mudur a další.

Systemd se ale stal jasným vítězem, byl zařazen do většiny velkých distribucí. RHL a CentOS mu prošlapaly cestu, Fedora pak byla první distrem, kam byl systemd v roce 2011 oficiálně zařazen. Systemd se tedy postupně stává jednotným init systémem pro všechny distra i přes počáteční odpor Canonicalu (přesněji Marka Shuttlewortha).

Jaké jsou rozdíly v systemd?

  • systemd si klade za cíl zajistit jednotný, centralizovaný způsob, jak projít init procesem od začátku do konce.
  • Startuje a zastavuje procesy a služby, přičemž sleduje jejich závislosti. Dokonce může spustit proces jako reakci požadavku závislosti na jiném procesu.
  • Kromě spouštění a zastavování procesů při bootování, lze také systemd spustit kdykoliv, kdy má systém reagovat na určité spouštěcí události tak, jako když je počítač zapnut.
  • systemd také nevyžaduje „démonizaci“ jednotlivých procesů. Na rozdíl od SysV init, systemd zvládá už běžící služby, aniž by museli procházet dlouhým procesem použití systémových démonů.
  • Na rozdíl od SysV init, systemd zná a sleduje všechny procesy, včetně PID a získávání informací o procesech, čímž je mnohem jednodušší pro systémové administrátory.
  • Systemd podporuje „zásobníky“, jsou to v podstatě izolovaná prostředí, kde služby nepožadují virtuálních stroje. A to má velký potenciál pro větší bezpečnost a jednodušší projektování systému.

sd3

Samozřejmě to jsou jen některé z hlavních výhod. Celou diskusi o výhodách systemd si můžete ZDE.

Polemika

Samozřejmě, systemd nebyl zdaleka všemi přivítán. Ve skutečnosti se řada uživatelů mračí, nazývá jej monolitickým a těžkopádným, někteří jej dokonce obvinili, že jde „cestou Windows“, kde je snaha mít všechno centralizované. Argumentují tím, že to není „linuxová cesta“, a že systemd rozhodně není v souladu se standardy POSIX a pokud vezmeme systemd jako soubor nástrojů (není binární), je prostě „obrovský“.

sd4

Nicméně, systemd je jednoznačně krokem kupředu. Hodně kritiky padlo na hlavu i jeho původnímu autorovi a vývojáři Lennartu Poetteringovi. Rozhodně je to ale velmi potřebný pokrok a krok dál od starého init systému. Linus Torvalds, tvůrce Linuxu, se domnívá, že příliš dohadování s jeho „stvořitelem“ ničemu neprospívá.

Závěr

Poté, co ovládl všechny velké linuxové distribuce, systemd je prostě zde a zůstává. A i když někteří administrátoři říkají něco jiného, systemd je budoucností hlavního proudu Linuxu, ať už se to někomu líbí nebo ne. Při pohledu na jeho nesporné výhody, není nutně špatnou věcí.

Pro běžného uživatele to přináší rychlejší bootování a pravděpodobně i spolehlivější operační systémy. Zařazení systemd i do dalších distribucí je může učinit navzájem „kompatibilnější“. Uživatel tak může těžit i z větší aktuálnosti, dodané do svého počítače.

Zdroj: https://www.linux-mint-czech.cz/2015/07/co-je-dobre-vedet-o-systemd/