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.
- Wat is init?
- Wat is systemisch?
- Waarom moest init vervangen worden?
- 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:
- Upstart – Een init-vervangende daemon geïmplementeerd in Ubuntu GNU/Linux en ontworpen om het proces asynchroon te starten.
- Epoch – Een init-vervangende daemon gebouwd rond eenvoud en servicebeheer, ontworpen om processen met één thread te starten.
- Mudar – Een init-vervangende daemon geschreven in Python, geïmplementeerd op Pardus GNU/Linux en ontworpen om het proces asynchroon te starten.
- 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
- Strak, state-forward en efficiënt ontwerp.
- Eenvoudiger opstartproces.
- Gelijktijdige en parallelle verwerking bij het opstarten.
- Betere API.
- Eenvoudige eenheidsyntaxis.
- Mogelijkheid om optionele componenten te verwijderen.
- Lage geheugenvoetafdruk.
- Verbeterde techniek om afhankelijkheden uit te drukken.
- Initialisatie-instructie geschreven in configuratiebestand en niet in shellscript.
- Maak gebruik van Unix Domain Socket.
- Taakplanning met behulp van systematische kalendertimers.
- Gebeurtenisregistratie met journald.
- Keuze uit het loggen van systeemgebeurtenissen met zowel systemd als syslog.
- Logboeken worden opgeslagen in een binair bestand.
- systemd-status kan worden bewaard om later in de toekomst te worden aangeroepen.
- Volg het proces met behulp van de cgroup van de kernel en niet met PID.
- Gebruikerslogin beheerd door systemd-logind.
- Betere integratie met Gnome voor interoperabiliteit.
Knelpunten gesystematiseerd
- Alles op één plek.
- 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.