Příběh za 'init' a 'systemd': Proč je 'init' potřeba nahradit 'systemd' v Linuxu
Jsem přihlášen k odběru několika e-mailových konferencí souvisejících s různými linuxovými distribucemi a aplikacemi, abych byl informován o tom, co se kde děje. Jaké jsou nové chyby? Jaké jsou vydané záplaty? Co se očekává v příštím vydání? a spoustu dalších věcí. V současné době je mailing list hojně zaplněn „Vyberte si svou stranu na Linux Divide“, hlavně na Debian Mailing listu spolu s několika dalšími.
O čem je „Vyberte si svou stranu na Linux Divide“?
Démon init bude nahrazen démonem systemd na některých linuxových distribucích, zatímco mnoho z nich jej již implementovalo. Toto je/bude vytvářet obrovskou propast mezi tradiční Unix/Linux Guard a New Linux Guard – programátory a správci systému.
V tomto článku budeme diskutovat a řešit všechny dotazy jeden po druhém.
- Co je to init?
- Co je systemd?
- Proč bylo potřeba vyměnit init?
- Jaké funkce bude mít systemd.
Co v tom je?
V Linuxu je init zkratka pro inicializaci. Init je proces démona, který se spustí, jakmile se počítač spustí, a běží až do jeho vypnutí. Ve skutečnosti je init prvním procesem, který se spustí při startu počítače, což z něj činí přímo nebo nepřímo rodiče všech ostatních běžících procesů, a proto je mu obvykle přiřazeno „pid=1“.
Pokud se nějakým způsobem nepodařilo spustit démona init, nespustí se žádný proces a systém se dostane do fáze zvané „Kernel Panic“. init se nejčastěji označuje jako Init System V. System V je první komerční operační systém UNIX navržený a použití init na většině dnešní distribuce Linuxu je totožné s OS OS V s několika výjimkami, jako je Slackware používající styl BSD a Gentoo používající vlastní init .
Potřeba nahradit init něčím dokonalejším byla pociťována již dlouhou dobu a čas od času bylo vyvinuto několik alternativ, z nichž některé se staly nativní náhradou init distribuce, z nichž některé jsou:
- Upstart – Démon nahrazující init implementovaný v Ubuntu GNU/Linux a navržený tak, aby spouštěl proces asynchronně.
- Epocha – Démon nahrazující init postavený na jednoduchosti a správě služeb, navržený tak, aby spouštěl proces s jedním vláknem.
- Mudar – Démon nahrazující init napsaný v Pythonu, implementovaný na Pardus GNU/Linux a navržený tak, aby spouštěl proces asynchronně.
- systemd – Démon nahrazující init určený pro paralelní spouštění procesu, implementovaný v řadě standardních distribucí – Fedora, OpenSuSE, Arch, RHEL, CentOS atd.
Co je systemd?
systemd je démon správy systému pojmenovaný podle konvence systému UNIX pro přidání „d“ na konec démona. Aby je bylo možné snadno rozpoznat. Původně byla vydána pod GNU General Public License, ale nyní jsou vydání provedena pod GNU Lesser General Public License. Podobně jako init je systemd přímo nebo nepřímo rodičem všech ostatních procesů a je prvním procesem, který začíná při bootování, a proto je mu obvykle přiřazeno „pid=1“.
systemd může odkazovat na všechny balíčky, nástroje a knihovny kolem démona. Byl navržen tak, aby překonal nedostatky init. Je to samo o sobě procesy na pozadí, které jsou navrženy tak, aby spouštěly procesy paralelně, čímž se zkracuje doba spouštění a výpočetní režie. Ve srovnání s init má mnoho dalších funkcí.
Proč bylo potřeba vyměnit init?
Proces init se spouští sériově, tj. jedna úloha se spustí až po úspěšném spuštění poslední úlohy a načtení do paměti. To často vedlo ke zpožděnému a dlouhému bootování. Systemd však nebyl navržen pro rychlost, ale pro to, aby se věci dělaly úhledně, což zase zamezilo veškerému zpoždění, které OSN potřebuje.
Vlastnosti systemd
- Čistý, pokrokový a efektivní design.
- Jednodušší proces spouštění.
- Souběžné a paralelní zpracování při spouštění.
- Lepší API.
- Jednoduchá syntaxe jednotek.
- Schopnost odstranit volitelné součásti.
- Nízké nároky na paměť.
- Vylepšená technika pro vyjádření závislostí.
- Inicializační instrukce zapsaná v konfiguračním souboru a ne ve skriptu shellu.
- Využijte Unix Domain Socket.
- Plánování úloh pomocí systémových kalendářových časovačů.
- Protokolování událostí pomocí journald.
- Volba protokolování systémových událostí pomocí systemd i syslog.
- Protokoly jsou uloženy v binárním souboru.
- stav systemd lze zachovat pro pozdější volání.
- Sledujte proces pomocí cgroup jádra a nikoli PID.
- Přihlášení uživatelů je spravováno systemd-logind.
- Lepší integrace s Gnome pro interoperabilitu.
Úzká místa systemd
- Vše na jednom místě.
- Není standardem POSIX.
Integrace Systemd a Distro
- Linux Distribution
Integrace
- Fedora
Ano, první distribuce, která přijala systemd
- Arch
Ano
- RedHat
Ano
- CentOS
Ano
- Debian
-
Ano, Debian 8 kódové jméno Jessie bude mít ve výchozím nastavení systemd
- Gentoo
Ano, ale je třeba stáhnout, nainstalovat a nakonfigurovat stranu s vlastním init
- OpenSUSE
Ano
- Slack
Ne (ačkoli dosud nebyl ve slackwaru přijat, Patric Volkerding neukázal žádný údaj, zda bude přijat nebo ne)
- Ubuntu
Ano, je třeba nainstalovat a nakonfigurovat pomocí Upstream.
Kontroverze
Linus Torvalds, hlavní architekt linuxového jádra, cítí přístup klíčového vývojáře systemd k uživatelům a hlášení o chybách se nezdají být v pořádku. Bylo také oznámeno, že filozofie systemd je zvláštní a cizí způsob, jak řídit systémové procesy. Totéž bylo zaznamenáno od Patrica Volkerdinga a dalších významných uživatelů a vývojářů Linuxu a také prostřednictvím online fóra, čas od času.
systemd vs init
Features | init | systemd |
DBus Dependency – Mandatory | No | Yes |
Device based Activation | No | Yes |
Device dependency configuration with udev | No | Yes |
Timer based Activation | Cron/at | Proprietary |
Quota Management | No | Yes |
Automatic Service Dependency Handling | No | Yes |
Kills users Process at logout | No | Yes |
Swap Management | No | Yes |
SELinux integration | No | Yes |
Support for Encrypted HDD | No | Yes |
Static kernle module loading | No | Yes |
GUI | No | Yes |
List all the child processes | No | Yes |
Sysv compatible | Yes | Yes |
Interactive booting | No | Yes |
Portable to non x86 | Yes | No |
Adopted on | Several Distro | Several Distro |
Parallel service startup | No | Yes |
Resource limit per service | No | Yes |
Easy extensible startup script | Yes | No |
Separate Code and Configuration File | Yes | No |
Automatic dependency calculation | No | Yes |
Verbose debug | Yes | No |
Version | N/A | V44+ |
Size | 560 KB | N/A |
Number of Files | 75 files | 900 files + glib + DBus |
Lines of code – LOC | 15000 (Approx) | 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code) |
Závěr
Nic, co běží jako pid=1, se nesmí rozbít, nesmí být nepořádek a musí to uživatelé efektivně a efektivně ovládat. Mnoho uživatelů věří, že nahrazení init za systemd není nic jiného než pokaždé znovuobjevení kola jako vedlejší efekt Linuxu. Ale to je různorodá povaha Linuxu. Je to proto, že Linux je tak mocný. Změna je dobrá a musíme ji ocenit, pokud je z dobrého důvodu.
To je prozatím vše. Budu tu znovu s dalším zajímavým článkem, který si lidé rádi přečtou. Do té doby zůstaňte naladěni a připojeni k Tecmint. Nezapomeňte nám v komentářích níže poskytnout svou cennou zpětnou vazbu.