Tenzij je onder een steen hebt geleefd, of erger - je geeft niet zoveel om hoe Linux werkt, je hebt vast wel eens van systemd gehoord, het (relatief) nieuwe init-systeem dat het oude en verouderde SysV-init vervangt dat onlangs is overgenomen door de meeste grote Linux-systemen distributies.

Wat is een init-systeem?

Wanneer je Linux-machine opstart, zal het eerst wat "ingebouwde" code uitvoeren, eerst geladen vanuit het BIOS of UEFI, gevolgd door de bootloader, die volgens de configuratie een Linux-kernel laadt. De kernel laadt drivers op, en als zijn allereerste job start het init-proces, waarbij de eerste de PID (Process ID) 1 toegewezen krijgt.

Vanuit het oogpunt van de gebruiker lijkt dit op het opstarten van netwerken en databases, enz., Maar in werkelijkheid vindt er een vrij complex proces plaats onder de motorkap. Services worden gestart, gestopt en opnieuw gestart, vaak parallel aan elkaar. Sommige worden met andere rechten uitgevoerd dan andere, servicestatussen worden gerapporteerd en vastgelegd en er worden veel andere taken uitgevoerd die ervoor zorgen dat het andere deel van uw systeem werkt en in staat is om te communiceren met zijn gebruikers en omgeving.

Hoe dit wordt geïmplementeerd, is echter verre van uniform, en dit is echt waar het niet langer gebruikelijk en goed gedefinieerd is.

Het oude init-systeem

Het init-systeem dat door de meeste mainstream Linux-distro's tot voor kort werd gebruikt, was System V init (of kortweg SysV init), dat zijn naam heeft ontleend aan UNIX System V (Uitgesproken "System Five"), het eerste commercieel beschikbare UNIX-systeem. System V OS heeft een specifieke manier gehad om zijn init-proces uit te voeren, en SysV init is er door de jaren heen trouw aan gebleven.

En het is vele jaren geleden. UNIX System V werd oorspronkelijk in 1983 uitgebracht, waardoor het init SysV init een meer dan 30 jaar oude benadering voor het opstarten van Linux-machines is.

De behoefte aan verandering

Zoals opgemerkt, is SysV init verouderd en moet het al veel eerder zijn vervangen. Enkele van de redenen hiervoor zijn:

  • SysV init gebruikt / sbin / init om het init-proces te starten, maar init zelf heeft een zeer beperkte rol. init doet weinig meer dan het starten van /etc/init.d/rc, volgens de configuratie gelezen door / etc / inittab, die op zijn beurt scripts zal uitvoeren om het echte werk van het init-proces te doen. Dit, tenzij expliciet paneldiscussiëren (zoals met startpar op Debian), gebeurt sequentieel, het ene na het andere script start, waardoor het hele proces traag verloopt, omdat elk script moet wachten totdat het vorige voltooid is.
  • SysV init heeft geen toegang tot de PID of de processen die het (indirect) is gestart. Het leest alleen PID's en koppelt deze aan feitelijke processen op een indirecte, gecompliceerde manier.
  • Voor systeembeheerders die proberen de omgeving te wijzigen waaronder een bepaald proces zou starten, is het vrij moeilijk met SysV init. (Om dit te bereiken zullen ze de init strcipt moeten aanpassen die verantwoordelijk is om het gegeven proces te starten.)
  • Er is bepaalde functionaliteit die elke service gemeen heeft die SysV niet implementeert, maar elk proces zou zichzelf moeten implementeren, zoals zelf 'daemoniseren' (een systeemdaemon worden), wat een uitgebreid en langdurig proces is. In plaats van deze stappen eenmaal uit te voeren, vereist SysV dat elk proces het werk zelf doet.
  • SysV laat ook bepaalde functionaliteit over aan externe programma's en weet niets van de services die door die programma's zijn gestart.

Al het bovenstaande, en nog veel meer ontwerpfouten, of liever het verouderde systeemontwerp van SysV, heeft de creatie van een modern init-systeem lang achterhaald.

Voer systemd in

Er waren veel pogingen om een ​​alternatief init-systeem te maken, waarvan systemd slechts een van hen is. Ubuntu had een eigen init-systeem dat upstart heet. Gentoo gebruikt nog steeds OpenRC. Andere init-systemen omvatten initng, busybox-init, runit en Mudur en anderen.

De reden waarom systemd een duidelijke winnaar is, is dat het is geadopteerd door de meeste grote distributies. RHL en CentOS gingen van nature vanzelf, omdat Fedora de eerste distro was die officieel systemd in 2011 adopteerde. Maar systemd is echt het enige init-systeem geworden om ze allemaal te regeren, toen Debian 8 officieel naar systemd overschakelde, waardoor Ubuntu en derivaten mee werden genomen, het overwinnen van de aanvankelijke oppositie van Canonical (of beter gezegd Mark Shuttleworth) tegenover systemd.

Hoe is het systeem anders?

  • Systemd streeft naar één gecentraliseerde manier om het init-proces van begin tot eind af te handelen.
  • Het start en stopt processen en services terwijl ze hun afhankelijkheden bijhouden. Het kan zelfs een proces starten als een reactie op de afhankelijkheidseis van een ander proces.
  • Naast het starten en stoppen van processen tijdens het opstarten, kan Systemd ook op elk moment starten wanneer het systeem is geactiveerd als reactie op bepaalde triggergebeurtenissen, zoals wanneer een apparaat is aangesloten.
  • Het vereist ook geen processen om zichzelf te daemoniseren. In tegenstelling tot SysV init kan systemd overweg met services die worden uitgevoerd zonder het lange proces van daemons te hoeven doorlopen.
  • In tegenstelling tot SysV init, systemd kent en volgt alle processen, inclusief PID's, en het verkrijgen van informatie over processen is veel eenvoudiger voor systeembeheerders onder systemd.
  • Systemd ondersteunt containers die feitelijk geïsoleerde servicemilieus zijn zonder de eis van virtuele machines. Dit heeft een groot potentieel voor veiligere en eenvoudigere systeemontwerpen in de toekomst.

Natuurlijk zijn dit slechts enkele van de belangrijkste voordelen. Voor een volledige bespreking van de voordelen van systemd, zou u de "Systemd Positie Verklaring" van Debian 8 moeten lezen

Controverse

Natuurlijk was systemd niet door iedereen verwelkomd. Sterker nog, velen hebben het nog steeds en fronsen het, noemen het monolithisch en omslachtig, sommigen beschuldigen het zelfs van het gaan van de "windows way" van alles gecentraliseerd te hebben. Velen beweren dat het niet "de Linux-manier" is, en zeker lijkt systemd niet in overeenstemming te zijn met POSIX-standaarden, en als we systemd als een toolkit beschouwen (meer dan alleen het binaire bestand), is het absoluut hugae.

Niettemin is systemd duidelijk een stap voorwaarts, en hoewel het niet perfect is, is veel van de kritiek die het heeft ontvangen, aangepakt door de oorspronkelijke auteur en ontwikkelaar Lennart Poettering. Het is absoluut een veelgevraagde vooruitgang en een stap omhoog van het oude init-systeem. Linus Torvalds, de maker van Linux, lijkt systematisch niet teveel op hem te letten, en wie zijn wij om ruzie te maken met 'The Creator'.

Conclusie

Na de goedkeuring door alle grote Linux-distributies, is systemd hier om te blijven. Wat sommige systeembeheerders ook zeggen om welke reden dan ook, systemd is de toekomst van mainstream Linux, of individuele gebruikers het leuk vinden of niet, en dat, gezien de verschillende voordelen, niet per se slecht is.

Voor de gemiddelde gebruiker leidt dit tot snellere opstarttijden en waarschijnlijk betrouwbaardere systemen, terwijl distributies in de toekomst meer "compatibel" kunnen worden met elkaar. Aan de gebruikerskant zullen we zeker profiteren van het meer actuele en hedendaagse systeemontwerp dat het naar onze desktops brengt.