Miért van még mindig megosztó a Linux rendszere ennyi év után?

A systemd 10 éves, de a Linux-közösség érzései nem enyhültek vele kapcsolatban – most épp olyan megosztó, mint valaha. Bár sok nagyobb Linux disztribúció használja, a kemény ellenzék nem engedett.

A Linux rendszerindítási sorrendje

Amikor bekapcsolja a számítógépet, a hardver elindul, majd (a típusától függően rendszerindító szektor számítógépe használja) vagy a master boot rekord (MBR) végrehajtja vagy a Egységes bővíthető firmware interfész (UEFI) fut. Mindkettő utolsó művelete az, hogy felgyújtja a Linux kernel.

A kernel betöltődik a memóriába, kicsomagolja magát és inicializálódik. A ideiglenes fájlrendszer a RAM-ban jön létre, általában az initramfs vagy initrd nevű segédprogram segítségével. Ez lehetővé teszi a szükséges illesztőprogramok meghatározását és betöltését. Ez viszont lehetővé teszi a felhasználói terület fájlrendszerének betöltését és felkészülését a felhasználói terület környezet létrehozására.

A felhasználói tér környezet létrehozását az init folyamat kezeli, amely az első folyamat, amelyet a kernel elindít egy felhasználói térben. Van egy folyamatazonosító (PID) az 1-ből. Minden más folyamat az init folyamat közvetlen vagy közvetett gyermeke.

A systemd előtt az init folyamat fő alapértelmezése a feldolgozás átdolgozása volt Unix System V init. Voltak más választási lehetőségek is, de a System V init a standard opció volt a legtöbb nemBerkeley szoftverterjesztés (BSD) származtatott eloszlások. Mivel közvetlenül a System V Unix-tól – a Linux szellemi ősétől – származott, sokan úgy tekintenek rá, mint a „hivatalos módszerre”.

Az init folyamat elindítja az összes démonok és az operációs rendszer értelmes, interaktív működéséhez szükséges szolgáltatások. Ezek a démonok olyan dolgokat kezelnek, mint a hálózati verem, más hardverek engedélyezése a számítógépen belül, és rendszerindító képernyőt biztosítanak.

E háttérfolyamatok közül sok az indulás után is fut. Olyan tevékenységeket végeznek, mint az eseményinformációk naplózása, figyelik a hardver változásait az eszközök behelyezése vagy eltávolítása közben, és kezelik a felhasználói bejelentkezéseket. Nem meglepő, hogy az init rendszer szolgáltatáskezelési funkciókat is tartalmaz.

Tudjuk használni ps az 1-es PID-vel rendelkező folyamat megtekintéséhez. Az f (teljes formátumú lista) és p (PID) opciókat fogjuk használni:

ps -fp 1

Látjuk, hogy a PID 1-es folyamat rendszerezett. Ugyanennek a parancsnak a futtatása Manjaro Linuxon más eredményt hozott. A PID 1-es folyamatot a /sbin/init néven azonosították. Egy gyors pillantás a fájlra azt mutatja, hogy ez egy szimbolikus hivatkozás a systemd-hez:

ps -fp 1
ls -hl /sbin/init

A ppid (parent process ID) opció használatával ps-sel láthatjuk, hogy a systemd mely folyamatokat indította el közvetlenül:

ps -f --ppid 1

Elég hosszú a lista, ahogy az alábbi képen is látszik.

Az alternatívák

Számos projekt próbált alternatívát készíteni a hagyományos System V init helyett. Az egyik fő probléma az, hogy a System V-inittel minden folyamat sorosan indul el, egymás után. A rendszerindítási sorrend hatékonyságának javítása érdekében sok alternatív projekt párhuzamosságot használ a folyamatok párhuzamos és aszinkron indításához.

  A Linux képernyőparancsának használata

Íme néhány információ ezek közül:

Kezdő: Által kifejlesztett Kánoni, az Ubuntu 9.10-ben használták, piros kalap, Red Hat Enterprise Linux (RHEL) 6, CentOS 6, és Fedora 9.
Futtasd: Fut tovább FreeBSD és egyéb BSD származékok, macOS és Solaris, valamint Linux rendszereken. Ez az alapértelmezett init rendszer is Üres Linux.
s6-linux-init: A System V init cseréjét úgy tervezték, hogy szorosan kövesse a Unix filozófia, ami gyakran a „csinálj egy dolgot, és csináld jól” hangharapásra redukálódik.

Sok más, eltérő funkcionalitású és kialakítású. Azonban egyik sem keltette a furort systemd tette.

A rendszeres út

A systemd 2010-ben jelent meg, és 2011-ben használták a Fedorában. Azóta számos disztribúció átvette. Ezt fejlesztette ki Lennart Poettering és Kay Sievers, két szoftvermérnök a RedHatnál.

A systemd sokkal több, mint egy init csere. Inkább egy körülbelül 70 binárisból álló csomag, amely kezeli a rendszer inicializálását, a démonokat és a szolgáltatásokat, a naplózást és a naplózást, és sok más olyan funkciót, amelyeket már a Linux dedikált moduljai kezeltek. Ezek többségének semmi köze a rendszer inicializálásához.

A systemd által biztosított démonok közül néhány:

systemd-udevd: Fizikai eszközöket kezel.
systemd-logind: Kezeli a felhasználói bejelentkezéseket.
systemd-resolved: Hálózati névfeloldást biztosít a helyi alkalmazások számára.
systemd-networkd: Kezeli és észleli a hálózati eszközöket, valamint kezeli a hálózati konfigurációkat.
systemd-tmpfiles: Létrehozza, törli és megtisztítja az illékony és ideiglenes fájlokat és könyvtárakat.
systemd-localed: Kezeli a rendszer területi beállításait.
systemd-machined: észleli és figyeli a virtuális gépeket és tárolókat.
systemd-nspawn: Indíthat egy parancsot vagy más folyamatot egy könnyű névtértárolóban, amely hasonló funkcionalitást biztosít chroot.

És ez csak a jéghegy csúcsa, ami egyben a dolog lényege is. A systemd már régen felülmúlta az init rendszertől elvártakat, ami ellenfelei szerint a hatókör-kúszás definíciója.

„Ez túl nagy. Túl sokat tesz.”

A systemd ellenzői rámutatnak a benne rejlő funkciók széles körű, különös keverékére. Mindezek a szolgáltatások már léteztek a Linuxban, és talán néhányuk frissítésre vagy új megközelítésre szorult. Mindazonáltal, hogy mindezt a funkcionalitást egy kezdeti rendszernek nevezett rendszerbe csomagoljuk, építészetileg rejtélyes.

A systemd-t túl sok kritikus funkció egyetlen hibapontjának nevezték, de ez nem tűnik indokoltnak. Igaz, dobja a Unix filozófia hogy olyan kis eszközöket hozzon létre, amelyek együtt működnek a nagy szoftverdarabok helyett, amelyek mindent az ablakon kívül végeznek. Noha a systemd nem szigorúan monolitikus (sok binárisból áll, nem pedig egyetlen hatalmasból), sok különböző felügyeleti eszközt és parancsot tartalmaz egy ernyő alatt.

Bár lehet, hogy nem monolitikus, de nagy. Ahhoz, hogy képet kapjunk a léptékről, megszámoltuk a szövegsorokat a kernel 5.6.15 kódbázisában és a systemd master ágban a GitHub adattárból.

Ez egy viszonylag durva mérőszám volt. Szövegsorokat számolt, nem csak kódsorokat. Tehát ez magában foglalta a megjegyzéseket, a dokumentációt és minden mást. Ez azonban egy hasonló összehasonlítás volt, és egy egyszerű mércét adott nekünk:

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

A kernelben közel 28 millió (pontosabban 27 784 340) sornyi szöveg volt. Ezzel szemben a systemd-nél 1 349 969, azaz közel 1,4 millió volt. A mi boldog-go-lucky mérőszámunkkal a systemd körülbelül 5%-kal akkora, mint a kernel, ami őrültség!

  Hogyan lehet ellenőrizni a CPU-t Linux alatt

Egy másik összehasonlításként az Arch Linux disztribúcióhoz készült System V-init modern implementációjának sorszáma 1721 sor volt.

Poettering nyilvánvalóan nincs tekintettel a Villamos és Elektronikai Mérnöki Intézet (IEEE) Computer Society, sem a Hordozható operációs rendszer interfész (POSIX) szabvány. Valójában ő arra ösztönözte a fejlesztőket, hogy hagyják figyelmen kívül a POSIX-et:

„Tehát szerezzen magának egy példányt a The Linux Programming Interface-ből, hagyja figyelmen kívül mindazt, amit a POSIX-kompatibilitásról mond, és törje fel elképesztő Linux-szoftverét. Nagyon megnyugtató!”

Voltak olyan vádak, hogy a systemd egy Red Hat-projekt, amely csak a Red Hat számára előnyös, mégis a Linux-világ tágabb körébe kényszerítik. Igen, a Red Haten született, és ez irányítja és irányítja. Az 1321 közreműködő közül azonban csak egy töredék dolgozik a Red Hatnél.

Tehát milyen előnyökkel jár a Red Hat?

Jim Whitehurst, az IBM elnöke, aki volt egyszer a Red Hat vezérigazgatója azt mondta:

„A Red Hat számos rendelkezésre álló lehetőséget mérlegelt, és még a Canonical Upstart-ját is használta a Red Hat Enterprise Linux 6-hoz. Végül a systemd-et választottuk, mert ez a legjobb architektúra, amely biztosítja a bővíthetőséget, az egyszerűséget, a méretezhetőséget és a jól definiált interfészeket a látott problémák megoldására. ma és előre látod a jövőt.”

Whitehurst azt is elmondta, hogy a beágyazott rendszerek előnyeit is látják. A Red Hat „a világ legnagyobb beágyazott szállítóival működik együtt, különösen a távközlési és autóiparban, ahol a stabilitás és a megbízhatóság az első számú szempont”.

Ezek technikailag megalapozott okoknak tűnnek. Megérthető, hogy a cégnek szüksége van a megbízhatóságra, és nem indokolatlan, hogy a Red Hat a saját érdekeit nézze, de mindenki más is kövesse ezt a példát?

Iszad a rendszeres Kool-Aid-et?

A systemd egyes ellenzői szerint a disztribúciók és az emberek csak vakon követik a Red Hat példáját és elfogadják azt.

Csakúgy, mint az „inni a Kool-Aid” kifejezés, ez nem egészen helyes. Ezt követően 1978-ban alkották meg kultuszvezér, Jim Jones, öngyilkosságra kényszerítette több mint 900 követőjét egy szőlő ízű, cianiddal megtűzdelt folyadék megivásával, a kifejezés helytelenül megszégyeníti a Kool-Aidet. A csoport valójában Flavour Aid-et ivott, de a Kool-Aid-et azóta is kátrányozta ez az ecset.

Ráadásul a Linux disztribúciók nem követik vakon a Red Hatet; komoly mérlegelés után fogadják el a systemd-et. A vita a Debian levelezőlisták hosszú ideig. 2014-ben azonban a közösség megszavazta a systemd mint a alapértelmezett init rendszert, hanem alternatívákat is támogat.

  Steam játékok streamelése Linux asztali számítógépére

A Debian fontos példa, mert nem a RedHat, a Fedora vagy a CentOS rendszerből származik. A Red Hattől nincs irányítás Debianra. És a Debiannak, akárcsak a PID 1-nek, sok leszármazottja van, köztük az Ubuntu és annak számos mellékterméke.

A Debian közösség döntései messzemenőek. Erőteljesen vitatkoznak, és szavaztak a használatukról a Condorcet szavazási módszer. A közösség sem hoz ilyen döntéseket könnyedén.

2019 decemberében ismét szavazott hogy továbbra is arra összpontosítson rendszert, és folytatni kell az alternatívák feltárását. A vakon követés ellentéte, ez tulajdonképpen a demokrácia és a munkahelyi választás szabadságának tankönyvi példája.

A választás korlátai

Általában nem választhatja meg, hogy használja-e a systemd-t egy adott Linux disztribúcióval. Inkább a disztribúciók maguk döntik el, hogy akarják-e használni, és Ön kiválaszthatja, hogy melyik Linux disztribúciót részesíti előnyben. Talán egy általad kedvelt Linux-disztribúció systemd-re váltott. Mint egy kedvenc zenész, aki műfajt vált, ez is felkavaró lehet.

Emberek, akik Debiant használnak, Fedora, CentOS, Ubuntu, Boltív, Solus, és openSUSE, és tiltakoznak a systemd átvétele ellen, úgy érezhetik, hogy kiszorulnak a választott terjesztésük használatából. Ha elég erősnek érzik a POSIX bármely építészeti választását, hatókör-kúszását vagy figyelmen kívül hagyását, akkor tarthatatlannak találhatják a disztribúció további használatát.

Természetesen van spektrum. Az egyik végén ott vannak az emberek, akik nem értik a problémákat (vagy nem is törődnek vele), a másik oldalon pedig a szenvedélyes ellenzők. Valahol középen vannak azok, akik nem szeretik a változásokat, de nem zavarják őket annyira, hogy hajót ugorjanak. De mi a helyzet az elosztó menekültekkel, akik preferenciáik vagy elveik miatt nem maradhatnak a választott elosztáson?

Sajnos ez nem olyan egyszerű, mint a kívánt init rendszer telepítése. Nem mindenkinek van meg erre a technikai lehetősége, nem is beszélve azokról a nehézségekről, amelyek akkor merülnek fel, amikor alkalmazások vagy asztali környezetek, például GNOME, függőségei vannak systemd.

Mi a helyzet egy másik disztribúcióra való áttéréssel? Néhány, mint Devuan, olyan disztribúciók (jelen esetben Debian) nem rendszerezett elágazásaként jelentek meg, amelyek a systemd-t alkalmazták. A Devuan használatának hasonlónak kell lennie a szülő disztribúcióhoz, de ez nem minden nem rendszeres fork esetében igaz. Például, ha elhagyja a Fedorát, és ide költözik AntiX, Gentoo, vagy Slackware, egészen más élményben lesz részed.

Nem megy sehova

Tetszik néhány, amit a systemd csinál (egyszerű és szabványosított vezérlőmechanizmusok a folyamatokhoz). Nem értem az indokát annak, amit csinál (bináris naplók). Azt is nem szeretem, amit csinál (az otthoni mappák felújítása – ki kérte ezt?).

Az olyan disztribúciók, mint a Debian, okosan tesznek, és alternatívákat keresnek, hogy nyitva tartsák a lehetőségeit. A systemd azonban hosszú távon benne van.

Ha Linux gépeket adminisztrál mások számára, tanulja meg a systemd-t, valamint a System V init-et. Így akármelyikkel is találkozik, képes lesz ellátni feladatait.

Csak Linuxot használ otthon? Ha igen, válasszon olyan disztribúciót, amely megfelel műszaki igényeinek és kiegészíti Linux ideológiáját.