Waarom het systeem van Linux na al die jaren nog steeds verdeeldheid zaait

Een Linux-terminal met groene tekst op een laptop.
fatmawati achmad zaenuri / Shutterstock

systemd is 10 jaar oud, maar de gevoelens erover in de Linux-gemeenschap zijn niet verzacht – het is nu net zo verdeeld als het ooit was. Hoewel het door veel grote Linux-distributies wordt gebruikt, heeft de hardcore oppositie niet toegegeven.

De Linux-opstartvolgorde

Wanneer u uw computer aanzet, start de hardware en vervolgens (afhankelijk van het type opstartsector dat uw computer gebruikt) wordt ofwel de master boot record (MBR) uitgevoerd of de Unified Extensible Firmware Interface (UEFI). De laatste actie van beide is het opstarten van de Linux-kernel.

De kernel wordt in het geheugen geladen, decomprimeert zichzelf en wordt geïnitialiseerd. Er wordt een tijdelijk bestandssysteem gemaakt in het RAM, meestal door een hulpprogramma genaamd initramfs of initrd. Hierdoor kunnen de benodigde stuurprogramma’s worden bepaald en geladen. Hierdoor kan het gebruikersruimtebestandssysteem op zijn beurt laden en voorbereiden om de gebruikersruimteomgeving tot stand te brengen.

Het creëren van de gebruikersruimte-omgeving wordt afgehandeld door het init-proces, het eerste proces dat door de kernel in een gebruikersruimte wordt gestart. Het heeft een proces-ID (PID) van 1. Alle andere processen zijn ofwel directe of indirecte onderliggende items van het init-proces.

Voordat systemdwas de standaardinstelling voor het init-proces een herwerking van het Unix System V init. Er waren andere keuzes beschikbaar, maar System V init was de standaardoptie in de meeste niet van Berkeley Software Distribution (BSD) afgeleide distributies. Omdat het rechtstreeks van System V Unix kwam – de spirituele voorouder van Linux – beschouwen veel mensen het als “de officiële manier” om init te doen.

Het init-proces start alle daemons en services die nodig zijn om het besturingssysteem op een zinvolle, interactieve manier te laten werken. Deze daemons behandelen zaken als de netwerkstack, maken andere hardware in uw computer mogelijk en bieden een opstartscherm.

Veel van deze achtergrondprocessen blijven draaien nadat ze zijn gestart. Ze doen dingen zoals het vastleggen van gebeurtenisinformatie, kijken naar hardwarewijzigingen terwijl u apparaten invoegt of verwijdert, en beheren gebruikersaanmeldingen. Het is niet verwonderlijk dat het init-systeem ook functies bevat om services te beheren.

We kunnen gebruiken ps om het proces te zien dat PID 1 heeft. We gebruiken de f (volledige lijst) en p (PID) opties:

ps -fp 1

ps -fp 1 in een terminalvenster.

We zien het proces met PID 1 is systemd. Het uitvoeren van hetzelfde commando op Manjaro Linux leverde een ander resultaat op. Het proces met PID 1 werd geïdentificeerd als /sbin/init. Een snelle blik op dat bestand laat zien dat het een symbolische link is naar systemd:

ps -fp 1
ls -hl /sbin/init

ps -fp 1 in een terminalvenster.

De … gebruiken ppid (bovenliggende proces-ID) optie met pskunnen we zien welke processen direct zijn gestart door systemd:

ps -f --ppid 1

ps -f --ppid 1 in een terminalvenster.

Het is een behoorlijk lange lijst, zoals je kunt zien in de onderstaande afbeelding.

ps -f --ppid 1 in een terminalvenster.

De alternatieven

Verschillende projecten hebben geprobeerd een alternatief te vinden voor het traditionele System V init. Een van de grootste problemen is dat met System V init alle processen serieel worden gestart, de een na de ander. Om de efficiëntie van de opstartvolgorde te verbeteren, gebruiken veel alternatieve projecten parallellisme om processen gelijktijdig en asynchroon te starten.

Hier is wat informatie over enkele van deze:

  • Parvenu: Het is ontwikkeld door Canonical en werd gebruikt in Ubuntu 9.10, Red Hat, Red Hat Enterprise Linux (RHEL) 6, CentOS 6 en Fedora 9.
  • Voer het uit: Draait op FreeBSD en andere BSD-derivaten, macOS en Solaris, evenals Linux-systemen. Het is ook het standaard init-systeem op Void Linux.
  • s6-linux-init: Deze vervanging voor System V init is ontworpen om de Unix-filosofie nauwgezet te volgen, die vaak wordt gereduceerd tot de soundbite “doe één ding en doe het goed”.

Er zijn vele andere met verschillende functionaliteit en design. Geen van hen veroorzaakte echter de furore systemd deed.

De systematische manier

systemd werd uitgebracht in 2010 en werd in 2011 gebruikt in Fedora. Sindsdien is het door veel distributies overgenomen. Het is ontwikkeld door Lennart Poettering en Kay Sievers, twee software-engineers bij RedHat.

systemd is veel meer dan een init-vervanging. Het is eerder een suite van ongeveer 70 binaire bestanden die systeeminitialisatie, daemons en services, logboekregistratie en journaling en vele andere functies afhandelen die al werden afgehandeld door speciale modules in Linux. De meeste hiervan hebben niets te maken met systeeminitialisatie.

Enkele van de daemons die door systemd zijn:

  • systemd-udevd: Beheert fysieke apparaten.
  • systemd-logind: Beheert gebruikersaanmeldingen.
  • systemd-opgelost: Biedt netwerknaamresolutie voor lokale applicaties.
  • systemd-networkd: Beheert en detecteert netwerkapparaten en beheert netwerkconfiguraties.
  • systemd-tmp-bestanden: Creëert, verwijdert en ruimt vluchtige en tijdelijke bestanden en mappen op.
  • systemd-gelokaliseerd: Beheert de landinstellingen van het systeem.
  • systemd-machinaal: Detecteert en bewaakt virtuele machines en containers.
  • systemd-nspawn: Kan een commando of ander proces starten in een lichtgewicht naamruimtecontainer, wat een functionaliteit geeft die vergelijkbaar is met chroot.

En dat is nog maar het topje van de ijsberg, dat is ook de crux van de zaak. systemd heeft al lang overtroffen wat vereist is van een init-systeem, wat volgens zijn tegenstanders de definitie is van scope creep.

“Het is te groot. Het doet te veel. “

Tegenstanders van systemd wijs op de grote, merkwaardige mix van functionaliteit die het omvat. Al deze functies bestonden al in Linux, en misschien hadden sommige ervan een opfrisbeurt of een nieuwe aanpak nodig. Het is echter architectonisch raadselachtig om al deze functionaliteit te bundelen in een zogenaamd init-systeem.

systemd wordt voor te veel kritieke functies een single point of failure genoemd, maar dit lijkt niet te rechtvaardigen. Toegegeven, het gooit de Unix-filosofie weg van het maken van kleine tools die samenwerken in plaats van grote stukjes software die alles uit het raam doen. Terwijl systemd is niet strikt monolithisch (het bestaat uit veel binaire bestanden in plaats van een enkele grote), het bevat wel veel verschillende beheertools en opdrachten onder één paraplu.

Hoewel het misschien niet monolithisch is, is het groot. Om een ​​idee te krijgen van de schaal, hebben we de regels tekst in de kernel 5.6.15 codebase en de systemd master branch van de GitHub-repository.

Dit was een relatief ruwe maatstaf. Het telde regels tekst, niet alleen regels code. Dit omvatte dus opmerkingen, documentatie en al het andere. Het was echter een gelijkwaardige vergelijking en gaf ons een eenvoudige maatstaf:

( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l

De kernel had bijna 28 miljoen (27.784.340, om precies te zijn) regels tekst. Daarentegen, systemd had 1.349.969, of bijna 1,4 miljoen. Met onze ‘happy-go-lucky’-statistiek, systemd komt uit op ongeveer 5 procent van de grootte van de pit, wat gek is!

Als een andere vergelijking: het aantal regels voor een moderne implementatie van System V init voor de Arch Linux-distributie kwam uit op 1.721 regels.

Poettering heeft duidelijk geen oog voor de Computer Society van het Institute of Electrical and Electronics Engineers (IEEE), noch voor de Portable Operating System Interface (POSIX) -standaard. Hij moedigde ontwikkelaars zelfs aan POSIX te negeren:

“Dus, koop een exemplaar van The Linux Programming Interface, negeer alles wat het zegt over POSIX-compatibiliteit en hack je geweldige Linux-software weg. Het is best een opluchting! “

Er zijn beschuldigingen dat systemd is een Red Hat-project dat alleen Red Hat ten goede komt, maar het wordt gedwongen gevoed aan de bredere Linux-wereld. Ja, het werd geboren in Red Hat en wordt er door bestuurd en gestuurd. Van de 1.321 bijdragers werkt echter slechts een fractie voor Red Hat.

Dus, wat zijn de voordelen voor Red Hat?

Jim Whitehurst, de president van IBM, die ooit de CEO van Red Hat was, zei:

“Red Hat overwoog veel beschikbare opties en gebruikte zelfs Canonical’s Upstart voor Red Hat Enterprise Linux 6. Uiteindelijk hebben we gekozen voor systemd omdat het de beste architectuur is die uitbreidbaarheid, eenvoud, schaalbaarheid en goed gedefinieerde interfaces biedt om de problemen die we zien aan te pakken. vandaag en voorzien in de toekomst. “

Whitehurst zei ook dat ze ook voordelen zagen in embedded systemen. Red Hat werkt samen met “de grootste embedded vendors ter wereld, met name in de telecom- en auto-industrie waar stabiliteit en betrouwbaarheid de belangrijkste zorg zijn.”

Dit lijken technisch goede redenen. U begrijpt de behoefte van het bedrijf aan betrouwbaarheid, en het is niet onredelijk dat Red Hat op zijn eigen belangen let, maar moeten alle anderen dit voorbeeld volgen?

Het systemd Kool-Aid drinken?

Enkele tegenstanders van systemd zeggen dat distributies en mensen blindelings de leiding van Red Hat volgen en adopteren.

Maar net als de uitdrukking “de Kool-Aid drinken”, is dat niet helemaal juist. Bedacht in 1978 nadat sekteleider Jim Jones zijn meer dan 900 volgelingen dwong zelfmoord te plegen door een vloeistof met druivensmaak te drinken die met cyanide was doorspekt, de uitdrukking schaamt Kool-Aid ten onrechte. De groep dronk eigenlijk Flavour Aid, maar Kool-Aid wordt sindsdien door dat penseel geteerd.

Bovendien volgen Linux-distributies Red Hat niet blindelings; ze adopteren systemd na ernstig beraad. Het debat woedde lange tijd op de mailinglijsten van Debian. In 2014 stemde de gemeenschap echter om te adopteren systemd als het standaard init-systeem, maar om ook alternatieven te ondersteunen.

Debian is een belangrijk voorbeeld omdat het niet is afgeleid van RedHat, Fedora of CentOS. Er is geen steerage toegepast op Debian vanuit Red Hat. En Debian heeft, net als PID 1, veel nakomelingen, waaronder Ubuntu en zijn vele spin-offs.

Beslissingen genomen door de Debian-gemeenschap zijn verreikend. Er wordt ook heftig over gedebatteerd en er wordt gestemd over het gebruik van de Condorcet-stemmethode. De gemeenschap maakt dergelijke keuzes ook niet lichtvaardig.

Het stemde opnieuw in december 2019 om zich op te blijven concentreren systemd en om alternatieven te blijven onderzoeken. Het tegenovergestelde van blindelings volgen, dit is eigenlijk een schoolvoorbeeld van democratie en keuzevrijheid op het werk.

De beperkingen van keuze

U kunt over het algemeen niet kiezen of u systemd met een bepaalde Linux-distributie. In plaats daarvan kiezen de distributies zelf of ze het willen gebruiken, en je kunt kiezen welke Linux-distro je verkiest. Misschien is een Linux-distributie waar je dol op bent, overgeschakeld systemd. Net als een favoriete muzikant die van genre verandert, kan dit schokkend zijn.

Mensen die Debian, Fedora, CentOS, Ubuntu, Arch, Solus en openSUSE gebruiken en bezwaar hebben tegen de acceptatie van systemd, kunnen het gevoel hebben dat ze worden uitgesloten van het gebruik van hun favoriete distributie. Als ze een sterk genoeg gevoel hebben bij een van de architecturale keuzes, scoop van de reikwijdte of het negeren van POSIX, vinden ze het misschien onhoudbaar om die distributie te blijven gebruiken.

Er is natuurlijk een spectrum. Aan de ene kant heb je de mensen die de problemen niet begrijpen (of er zelfs maar om geven), en aan de andere kant heb je de gepassioneerde tegenstanders. Ergens in het midden zijn degenen die niet van veranderingen houden, maar er niet genoeg moeite mee hebben om van boord te springen. Maar hoe zit het met de verdeling vluchtelingen, die vanwege hun voorkeuren of principes niet op de gekozen verdeling kunnen blijven?

Helaas is het niet zo eenvoudig als het installeren van het gewenste init-systeem. Niet iedereen heeft de technische bekwaamheid om dat te doen, ongeacht de moeilijkheden die zich voordoen wanneer applicaties of desktopomgevingen, zoals GNOME, afhankelijk zijn van systemd.

Hoe zit het met verhuizen naar een andere distributie? Sommige, zoals Devuan, leken als niet-systemd vorken van distributies (in dit geval Debian) die systemd. Het gebruik van Devuan zou vergelijkbaar moeten zijn met de bovenliggende distributie, maar dat is niet het geval voor alle niet-systemd vorken. Als je bijvoorbeeld Fedora verlaat en naar AntiX, Gentoo of Slackware gaat, zul je een heel andere ervaring hebben.

Het gaat nergens heen

Ik hou van wat systemd does (eenvoudige en gestandaardiseerde controlemechanismen voor processen). Ik begrijp de reden niet voor een deel van wat het doet (binaire logboeken). Ik hou ook niet van wat het doet (thuismappen vernieuwen – wie heeft daar om gevraagd?).

Distributies zoals Debian doen het slimme en onderzoeken alternatieven om de opties open te houden. Echter, systemd zit erin voor de lange termijn.

Als u Linux-machines voor anderen beheert, leer dan systemd evenals u System V init kent. Op deze manier, wat u ook tegenkomt, kunt u uw taken uitvoeren.

Gewoon thuis Linux gebruiken? Kies dan een distributie die zowel aan uw technische behoeften voldoet als uw Linux-ideologie aanvult.

VERWANT: Systemd zal veranderen hoe uw Linux-homedirectory werkt

Nieuwste artikelen

spot_img

Related Stories

Leave A Reply

Vul alstublieft uw commentaar in!
Vul hier uw naam in