Zoeken op website

Het verhaal achter 'init' en 'systemd': waarom 'init' vervangen moest worden door 'systemd' in Linux


Ik ben geabonneerd op verschillende mailinglijsten met betrekking tot verschillende Linux-distributies en -applicaties, gewoon om mezelf op de hoogte te houden van wat er waar gebeurt. Wat zijn de nieuwe bugs? Wat zijn de uitgebrachte patches? Wat wordt er verwacht in de volgende release? en nog een heleboel andere spullen. Tegenwoordig is de mailinglijst zwaar gevuld met “Kies jouw kant op Linux Divide”, voornamelijk op de Debian mailinglijst, samen met een paar andere.

Waar gaat “Kies jouw kant op Linux Divide” over?

De init daemon zal op sommige Linux-distributies worden vervangen door daemon systemd, terwijl veel daarvan deze al hebben geïmplementeerd. Dit creëert/zal een enorme kloof creëren tussen traditionele Unix/Linux Guard en New Linux Guard – programmeurs en systeembeheerders.

In dit artikel zullen we alle vragen één voor één bespreken en oplossen.

  1. Wat is init?
  2. Wat is systemisch?
  3. Waarom moest init vervangen worden?
  4. Welke functies systemd zal bezitten.

Wat zit erin?

In Linux is init een afkorting voor Initialisatie. De init is een daemon-proces dat start zodra de computer opstart en blijft draaien totdat deze wordt afgesloten. In feite is init het eerste proces dat start wanneer een computer opstart, waardoor het de ouder wordt van alle andere actieve processen, direct of indirect, en daarom wordt er doorgaans “pid=1“ aan toegewezen.

Als init daemon op de een of andere manier niet kan starten, zal er geen proces worden gestart en zal het systeem een fase bereiken genaamd “Kernel Panic“. init wordt meestal Systeem V init genoemd. Systeem V is het eerste commerciële UNIX-besturingssysteem dat is ontworpen en het gebruik van init op de meeste Linux-distributies van vandaag is identiek met System V OS met een paar uitzonderingen zoals Slackware die BSD-stijl gebruikt en Gentoo die aangepaste init gebruikt .

De noodzaak om init te vervangen door iets perfecters werd al lange tijd gevoeld en er werden van tijd tot tijd verschillende alternatieven ontwikkeld, waarvan sommige de oorspronkelijke init-vervanging van de distributie werden, waarvan sommige zijn:

  1. Upstart – Een init-vervangende daemon geïmplementeerd in Ubuntu GNU/Linux en ontworpen om het proces asynchroon te starten.
  2. Epoch – Een init-vervangende daemon gebouwd rond eenvoud en servicebeheer, ontworpen om processen met één thread te starten.
  3. Mudar – Een init-vervangende daemon geschreven in Python, geïmplementeerd op Pardus GNU/Linux en ontworpen om het proces asynchroon te starten.
  4. systemd – Een init-vervangende daemon ontworpen om processen parallel te starten, geïmplementeerd in een aantal standaarddistributies – Fedora, OpenSuSE, Arch, RHEL, CentOS, enz.

Wat is systemisch?

Een systemd is een systeembeheerdaemon met de naam volgens UNIX-conventie om 'd' toe te voegen aan het einde van de daemon. Zodat ze makkelijk te herkennen zijn. Aanvankelijk werd het uitgebracht onder de GNU General Public License, maar nu worden de releases gemaakt onder de GNU Lesser General Public License. Net als init is systemd de ouder van alle andere processen, direct of indirect, en is het eerste proces dat begint bij het opstarten en krijgt daarom doorgaans de waarde “pid=1“ toegewezen.

Een systemd kan verwijzen naar alle pakketten, hulpprogramma's en bibliotheken rondom daemon. Het is ontworpen om de tekortkomingen van init te ondervangen. Het is zelf een achtergrondproces dat is ontworpen om processen parallel te starten, waardoor de opstarttijd en de rekenkundige overhead worden verminderd. Het heeft veel andere functies vergeleken met init.

Waarom was het nodig om init te vervangen?

Een init-proces start serieel, dat wil zeggen dat één taak pas start nadat de laatste taakstart succesvol was en in het geheugen werd geladen. Dit resulteerde vaak in een vertraagde en lange opstarttijd. Systemd is echter niet ontworpen voor snelheid, maar om de dingen netjes gedaan te krijgen, waardoor alle VN-noodzakelijke vertragingen worden vermeden.

Kenmerken van systemd
  1. Strak, state-forward en efficiënt ontwerp.
  2. Eenvoudiger opstartproces.
  3. Gelijktijdige en parallelle verwerking bij het opstarten.
  4. Betere API.
  5. Eenvoudige eenheidsyntaxis.
  6. Mogelijkheid om optionele componenten te verwijderen.
  7. Lage geheugenvoetafdruk.
  8. Verbeterde techniek om afhankelijkheden uit te drukken.
  9. Initialisatie-instructie geschreven in configuratiebestand en niet in shellscript.
  10. Maak gebruik van Unix Domain Socket.
  11. Taakplanning met behulp van systematische kalendertimers.
  12. Gebeurtenisregistratie met journald.
  13. Keuze uit het loggen van systeemgebeurtenissen met zowel systemd als syslog.
  14. Logboeken worden opgeslagen in een binair bestand.
  15. systemd-status kan worden bewaard om later in de toekomst te worden aangeroepen.
  16. Volg het proces met behulp van de cgroup van de kernel en niet met PID.
  17. Gebruikerslogin beheerd door systemd-logind.
  18. Betere integratie met Gnome voor interoperabiliteit.
Knelpunten gesystematiseerd
  1. Alles op één plek.
  2. Niet POSIX-standaard.

Systemd- en Distro-integratie

Linux Distribution

Integratie

Fedora

Ja, de eerste distributie die systemd adopteert

Arch

Ja

RedHat

Ja

CentOS

Ja

Debian

Ja, de Debian 8-codenaam Jessie heeft standaard systemd

Gentoo

Ja, maar moet worden gedownload, geïnstalleerd en geconfigureerd met aangepaste init

OpenSUSE

Ja

Slack

Nee (hoewel het tot nu toe nog niet in slackware is overgenomen, heeft Patric Volkerding geen enkele indicatie gegeven of het wel of niet zal worden overgenomen)

Ubuntu

Ja, moet worden geïnstalleerd en geconfigureerd met Upstream.

Controverse

Linus Torvalds, hoofdarchitect van de Linux-kernel, vindt de houding van de belangrijkste ontwikkelaar van systemd tegenover gebruikers en bugrapporten lijken niet oké. Er werd ook gemeld dat systeemfilosofie raar is en een vreemde manier om systeemprocessen te controleren. Hetzelfde is van Patric Volkerding en andere opmerkelijke Linux-gebruikers en -ontwikkelaars opgenomen, evenals van tijd tot tijd op een online forum.

systemd versus 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)

Conclusie

Alles wat als pid=1 draait, mag niet kapot gaan, mag geen rommel zijn en moet effectief en efficiënt door gebruikers worden beheerd. Veel gebruikers zijn van mening dat het vervangen van init voor systemd niets anders is dan het telkens opnieuw uitvinden van het wiel als neveneffect van Linux. Maar dit is de diverse aard van Linux. Dit komt omdat Linux zo krachtig is. Verandering is goed en we moeten het op prijs stellen als het om een goede reden is.

Dat is het voor nu. Ik zal hier weer zijn met nog een interessant artikel dat jullie graag zullen lezen. Blijf tot die tijd op de hoogte en verbonden met Tecmint. Vergeet niet om ons uw waardevolle feedback te geven in de reacties hieronder.