De ce sistemul Linux este încă dezbinat după toți acești ani

systemd are 10 ani, dar sentimentele cu privire la el în comunitatea Linux nu s-au atenuat – este la fel de divizor acum ca oricând. Deși este folosit de multe distribuții majore de Linux, opoziția hardcore nu a cedat.

Secvența de pornire Linux

Când porniți computerul, hardware-ul pornește și apoi (în funcție de tipul de sectorul de boot computerul dvs. folosește) fie înregistrarea de pornire principală (MBR) execută sau Interfață Firmware Extensibilă Unificată (UEFI) rulează. Ultima acțiune a ambelor este să pornească Nucleul Linux.

Nucleul este încărcat în memorie, se decomprimă și se inițializează. A sistem de fișiere temporare este creat în RAM, de obicei de un utilitar numit initramfs sau initrd. Acest lucru permite determinarea și încărcarea driverelor necesare. Aceasta, la rândul său, permite sistemului de fișiere din spațiul utilizatorului să se încarce și să se pregătească pentru a stabili mediul spațiului utilizator.

Crearea mediului de spațiu utilizator este gestionată de procesul init, care este primul proces lansat de kernel într-un spațiu utilizator. Are o ID proces (PID) de 1. Toate celelalte procese sunt copii directe sau indirecte ale procesului init.

Înainte de systemd, standardul standard pentru procesul de init era o reelaborare a Unix System V init. Au existat alte opțiuni disponibile, dar System V init a fost opțiunea standard în majoritatea non-urilor.Berkeley Software Distribution (BSD) distribuții derivate. Deoarece a venit direct de la System V Unix – strămoșul spiritual al Linuxului – mulți oameni îl consideră „modul oficial” de a face init.

Procesul de init începe toate demonii și serviciile necesare pentru ca sistemul de operare să funcționeze într-un mod semnificativ, interactiv. Acești demoni se ocupă de lucruri precum stiva de rețea, permițând alt hardware în interiorul computerului și oferind un ecran de pornire.

Multe dintre aceste procese de fundal continuă să ruleze după ce pornesc. Ei fac lucruri precum înregistrarea informațiilor despre evenimente, urmăresc modificările hardware pe măsură ce inserați sau eliminați dispozitive și gestionează conectările utilizatorilor. Deloc surprinzător, sistemul init include și funcții de gestionare a serviciilor.

Putem folosi ps pentru a vedea procesul care are PID 1. Vom folosi opțiunile f (lista în format complet) și p (PID):

ps -fp 1

Vedem că procesul cu PID 1 este systemd. Rularea aceleiași comenzi pe Manjaro Linux a dat un rezultat diferit. Procesul cu PID 1 a fost identificat ca /sbin/init. O privire rapidă la acel fișier arată că este o legătură simbolică către systemd:

ps -fp 1
ls -hl /sbin/init

Folosind opțiunea ppid (ID proces părinte) cu ps, putem vedea ce procese au fost lansate direct de systemd:

ps -f --ppid 1

Este o listă destul de lungă, așa cum puteți vedea în imaginea de mai jos.

Alternativele

Mai multe proiecte au încercat să producă o alternativă la sistemul tradițional System V init. Una dintre principalele probleme este, cu System V init, toate procesele sunt pornite în serie, unul după altul. Pentru a îmbunătăți eficiența secvenței de pornire, multe proiecte alternative folosesc paralelismul pentru a porni procesele simultan și asincron.

  Cum se generează coduri de autentificare cu doi factori pe Linux cu Authenticator

Iată câteva informații despre unele dintre acestea:

Parvenit: Dezvoltat de Canonic, a fost folosit în Ubuntu 9.10, palarie rosie, Red Hat Enterprise Linux (RHEL) 6, CentOS 6, și Fedora 9.
Rulați-l: Merge mai departe FreeBSD și alte derivate BSD, macOS și Solaris, precum și sistemele Linux. Este, de asemenea, sistemul de init implicit activat Vidul Linux.
s6-linux-init: Acest înlocuitor pentru System V init a fost conceput pentru a urmări îndeaproape Filosofia Unix, care se reduce adesea la sunetul „fă un lucru și fă-l bine”.

Există multe altele cu funcționalități și design diferite. Cu toate acestea, niciunul dintre ei a creat furora systemd a făcut-o.

Calea de sistem

systemd a fost lansat în 2010 și a fost folosit în Fedora în 2011. De atunci, a fost adoptat de multe distribuții. A fost dezvoltat de Lennart Poettering și Kay Sievers, doi ingineri software de la RedHat.

systemd este mult mai mult decât o înlocuire init. Mai degrabă, este o suită de aproximativ 70 de binare care se ocupă de inițializarea sistemului, demonii și serviciile, jurnalizarea și jurnalizarea și multe alte funcții care erau deja gestionate de modulele dedicate în Linux. Majoritatea acestora nu au nimic de-a face cu inițializarea sistemului.

Unii dintre demonii furnizați de systemd sunt:

systemd-udevd: Gestionează dispozitivele fizice.
systemd-logind: Gestionează conectările utilizatorilor.
systemd-resolved: Oferă rezoluție nume de rețea aplicațiilor locale.
systemd-networkd: Gestionează și detectează dispozitivele de rețea și gestionează configurațiile rețelei.
systemd-tmpfiles: creează, șterge și curăță fișiere și directoare volatile și temporare.
systemd-localed: Gestionează setările locale ale sistemului.
systemd-machined: detectează și monitorizează mașinile virtuale și containerele.
systemd-nspawn: poate lansa o comandă sau alt proces într-un container ușor de spațiu de nume, oferind o funcționalitate similară cu chroot.

Și acesta este doar vârful aisbergului, care este, de asemenea, cheia problemei. systemd a depășit de mult ceea ce se cere unui sistem init, care, conform oponenților săi, este însăși definiția scope creep.

„E prea mare. Face prea mult.”

Oponenții systemd subliniază mixul mare și curios de funcționalități pe care îl cuprinde. Toate aceste caracteristici existau deja în Linux și, poate, unele dintre ele aveau nevoie de o reîmprospătare sau de o nouă abordare. Cu toate acestea, a grupa toate aceste funcționalități în ceea ce se presupune a fi un sistem init este derutant din punct de vedere arhitectural.

systemd a fost numit un singur punct de eșec pentru prea multe funcții critice, dar acest lucru nu pare să fie justificat. Desigur, aruncă Filosofia Unix de a crea instrumente mici care funcționează împreună în loc de bucăți mari de software care fac totul pe fereastră. Deși systemd nu este strict monolitic (este compus din multe binare, mai degrabă decât unul uriaș), include o mulțime de instrumente și comenzi de management disparate sub o singură umbrelă.

Deși s-ar putea să nu fie monolitic, este mare. Pentru a ne face o idee despre scară, am numărat liniile de text din baza de cod a nucleului 5.6.15 și ramura master systemd din depozitul GitHub.

Aceasta a fost o măsură relativ brută. Numărea linii de text, nu doar linii de cod. Deci, aceasta a inclus comentarii, documentație și orice altceva. Cu toate acestea, a fost o comparație asemănătoare și ne-a oferit o etapă simplă:

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

Nucleul avea aproape 28 de milioane (27.784.340, mai exact) de linii de text. În schimb, systemd a avut 1.349.969, sau aproape 1,4 milioane. Cu metricul nostru happy-go-lucky, systemd iese la aproximativ 5% din dimensiunea nucleului, ceea ce este o nebunie!

  6 jocuri de strategie gratuite de descărcat pe Linux

Ca o altă comparație, numărul de linii pentru o implementare modernă a System V init pentru distribuția Arch Linux a ajuns la 1.721 de linii.

Poetingul nu are în mod evident nicio atenție pentru Institutul de Ingineri Electricieni și Electronici (IEEE) Computer Society, nici Interfață portabilă a sistemului de operare standard (POSIX). De fapt, el a încurajat dezvoltatorii să ignore POSIX:

„Așadar, obțineți-vă o copie a interfeței de programare Linux, ignorați tot ce spune despre compatibilitatea POSIX și piratați-vă uimitor software Linux. Este destul de uşurator!”

Au existat acuzații că systemd este un proiect Red Hat de care beneficiază doar Red Hat, dar este alimentat forțat în lumea Linux mai largă. Da, a fost născut în Red Hat și este guvernat și condus de acesta. Cu toate acestea, dintre cei 1.321 de colaboratori, doar o fracțiune funcționează pentru Red Hat.

Deci, care sunt beneficiile Red Hat?

Jim Whitehurst, președintele IBM, care a fost odată directorul general al Red Hat, a spus:

„Red Hat a luat în considerare multe opțiuni disponibile și a folosit chiar și Upstart de la Canonical pentru Red Hat Enterprise Linux 6. În cele din urmă, am ales systemd deoarece este cea mai bună arhitectură care oferă extensibilitate, simplitate, scalabilitate și interfețe bine definite pentru a rezolva problemele pe care le vedem. astăzi și prevăd în viitor.”

Whitehurst a mai spus că au văzut beneficii și în sistemele încorporate. Red Hat colaborează cu „cei mai mari furnizori încorporați din lume, în special în industriile de telecomunicații și auto, unde stabilitatea și fiabilitatea sunt preocuparea numărul unu”.

Acestea par motive solide din punct de vedere tehnic. Puteți înțelege nevoia companiei de fiabilitate și nu este nerezonabil ca Red Hat să se îngrijească de propriile interese, dar ar trebui ca toți ceilalți să urmeze exemplul?

Beți sistemul Kool-Aid?

Unii oponenți ai systemd spun că distribuțiile și oamenii urmăresc orbește exemplul lui Red Hat și îl adoptă.

Totuși, la fel ca și expresia „băutul Kool-Aid”, nu este chiar corect. A fost inventat în 1978 după lider de cult, Jim Jones, și-a constrâns cei peste 900 de adepți să se sinucidă bând un lichid cu aromă de struguri împletit cu cianură, expresia îl rușine în mod incorect pe Kool-Aid. Grupul a băut de fapt Flavour Aid, dar Kool-Aid a fost pătruns de acea perie de atunci.

În plus, distribuțiile Linux nu urmează orbește Red Hat; adoptă systemd după o deliberare serioasă. Dezbaterea a făcut furori asupra Debian liste de corespondență pentru o lungă perioadă de timp. Cu toate acestea, în 2014, comunitatea a votat pentru adoptarea systemd ca fiind sistem de inițializare implicit, dar pentru a sprijini și alternative.

Debian este un exemplu important deoarece nu este derivat din RedHat, Fedora sau CentOS. Nu există nicio conducere aplicată la Debian de la Red Hat. Și Debian, ca PID 1, are mulți descendenți, inclusiv Ubuntu și numeroasele sale spin-off.

  Cum se convertesc fișiere media pe Linux cu Curlew

Deciziile luate de comunitatea Debian sunt de mare anvergură. Ele sunt, de asemenea, dezbătute energic și votate pentru utilizare metoda de vot Condorcet. Nici comunitatea nu face astfel de alegeri cu ușurință.

A votat din nou în decembrie 2019 pentru a continua să se concentreze asupra systemd și să continue să exploreze alternative. Opusul urmăririi orbește, acesta este de fapt un exemplu manual de democrație și libertate de alegere la locul de muncă.

Limitările alegerii

În general, nu puteți alege dacă să utilizați systemd cu o anumită distribuție Linux. Mai degrabă, distribuțiile în sine aleg dacă doresc să-l folosească și puteți alege ce distribuție Linux preferați. Poate că o distribuție Linux pe care o adori a trecut la systemd. La fel ca un muzician preferat care schimbă genurile, acest lucru poate fi tulburător.

Persoanele care folosesc Debian, Fedora, CentOS, Ubuntu, Arc, Solus, și openSUSEși să se opună adoptării systemd, ar putea simți că nu mai folosesc distribuția pe care o alegeți. Dacă se simt suficient de puternic cu privire la oricare dintre alegerile arhitecturale, scăderea domeniului de aplicare sau nesocotirea pentru POSIX, ar putea găsi că este insuportabil să continue să folosească acea distribuție.

Există un spectru, desigur. La un capăt, ai oamenii cărora nu înțeleg problemele (sau nici măcar nu le pasă), iar la celălalt, ai obiectorii pasionați. Undeva la mijloc sunt cei cărora nu le plac schimbările, dar nu sunt suficient de deranjați pentru a sări nava. Dar cum rămâne cu refugiații de distribuție, care nu pot rămâne la distribuția aleasă din cauza preferințelor sau principiilor lor?

Din păcate, nu este la fel de ușor ca să instalați orice sistem de init doriți. Nu toată lumea are capacitatea tehnică de a face asta, indiferent de dificultățile care apar atunci când aplicațiile sau mediile desktop, cum ar fi GNOME, au dependențe de systemd.

Dar trecerea la o altă distribuție? Ceva ca Devuan, a apărut ca furcături de distribuții non-systemd (în acest caz, Debian) care adoptaseră systemd. Utilizarea Devuan ar trebui să fie similară cu distribuția părinte, dar acesta nu este cazul pentru toate fork-urile non-systemd. De exemplu, dacă părăsiți Fedora și treceți la AntiX, Gentoo, sau Slackware, vei avea o experiență foarte diferită.

Nu merge nicăieri

Îmi place ceva din ceea ce face systemd (mecanisme de control simple și standardizate pentru procese). Nu înțeleg motivul pentru unele dintre ceea ce face (jurnalele binare). De asemenea, nu-mi place ceva din ceea ce face (renovarea folderelor de acasă – cine a cerut asta?).

Distribuții precum Debian fac lucrul inteligent și investighează alternative pentru a-și menține opțiunile deschise. Cu toate acestea, systemd este în el pe termen lung.

Dacă administrați mașini Linux pentru alții, învățați systemd la fel de bine ca și System V init. În acest fel, indiferent de ce întâlniți, vă veți putea îndeplini sarcinile.

Folosești Linux acasă? Dacă da, alegeți o distribuție care să răspundă atât nevoilor dumneavoastră tehnice, cât și să vă completeze ideologia Linux.