Init rendszerek és szolgáltatás menedzsment

Amikor unix és linux alapú rendszerekről beszélünk, szinte minden esetben a disztrókra, programokra, driverekre és játékokra gondolunk, pedig az init és a rendszerfolyamatok kezelése a rendszerek alapvető építőkövei.

Ehhez viszont nem árt kicsit átnézni a linuxos rendszerindulás folyamatát egy hagyományos – BIOS -os gépen:

A Linux rendszerindítási folyamata

  1. BIOS.  A számítógép bekapcsolása után a BIOS inicializálja a képernyőt és billentyűzetet, majd teszteli a fő memóriát. Eddig a pontig a gép még semmilyen tömegtároló eszközhöz nem fért hozzá. Ezután az aktuális dátum és idő, illetve a legfontosabb perifériákra vonatkozó adatok betöltődnek a CMOS-ból. Az első merevlemez és annak geometriájának felismerése után a BIOS átadja a rendszervezérlést a rendszertöltőnek.
  2. Rendszertöltő.  Az első merevlemez első 512 bájtos fizikai adatszektora betöltésre kerül a fő memóriába és a szektor elején található rendszertöltő átveszi az irányítást. A rendszertöltő által végrehajtott parancsok határozzák meg az indítási folyamat további részét. Az első merevlemez első 512  bájtját éppen ezért Master Boot Record-nak (fő rendszertöltő rekord, MBR) hívjuk. A rendszertöltő ezután átadja az irányítást az aktuális operációs rendszernek, ebben az esetben a Linux-kernelnek.
  3. Kernel és initrd.  A rendszervezérlés átadásához a rendszertöltő betölti a memóriába a kernelt és egy kezdeti, RAM alapú fájlrendszert (initramfs). Az initramfs tartalmát a kernel közvetlenül képes használni. Az initramfs része egy kisméretű, init nevű végrehajtható fájlt, amelyik a valódi root fájlrendszer felcsatolását végzi. Ha speciális hardverillesztő programokra van szükség még a fő tárolóeszköz elérése előtt, akkor annak szerepelnie kell az initramfs -ben.
  4. init az initramfs -ben.  Ez a program végzi el a megfelelő root fájlrendszer felcsatolásához szükséges összes műveletet: pl. megfelelő kernelfunkciók biztosítása a használni kívánt fájlrendszerhez, illetve eszközillesztőprogramok biztosítása a tárolóvezérlőkhöz az eszközvezérlő segítségével, ez lehet edev, mdev, udev, eudev, bármelyik általunk választott device manager. Ha sikerült megtalálni, a root fájlrendszeren hibaellenőrzés történik, majd felcsatolja a rendszer. Ha ez is sikerült, akkor az initramfs törlődik és elindul a root fájlrendszeren lévő init program.
  5. init.  Az init kezeli a rendszer tényleges indítását és lehetővé teszi különböző funkcionalitást biztosító szintek használatát.

A démonok

Mindenkinek megvannak a maga démonai, ahogy a mondás tartja, jelen esetben viszont a szó  egy háttérben futó programot jelent, egy szolgáltatást végző alkalmazást, amit a rendszer újraindítása nélkül is le tudunk állítani, elindítani, konfigurálni. Ilyen démonok feladata a nyomtatás, a naplózás vagy akár a hálózati kapcsolat.

Az init folyamat

Amikor a kernel elindítja az init programot és az egyes számmal látja el a folyamatot ( PID:1 ) lényegében ezt hívjuk a rendszerünk valódi inicializációjának (initialization), innen a folyamat neve, egy rövidítés: init. Ez a folyamat a számítógép kikapcsolásáig jelen van és meghatározza a különféle  alkalmazások és szolgáltatások betöltési módját,  szokás szuperdémonnak is hívni, ami igen csak furcsa és mókás lehet kezdő linuxosok számára, de a fentiek ismeretében immáron teljesen érthető, hiszen minden folyamat, processz felett áll, így a démonok felett is.

Fontos, amennyiben a kernel nem találja az initet, akkor kernel pánikkal elszáll, mint a győzelmi zászló !

"Kernel panic - not syncing - attempted to kill init!"

Ezzel el is érkeztünk írásunk lényegi részéhez, hogy milyen init rendszerek és folyamatvezérlők vannak.

Init rendszerek és folyamatvezérlők, szolgáltatás menedzserek

  • SysV-init: Talán érdemes az egyik legősibb inittel kezdeni, ez pedig az AT&T System V operációs rendszerének inicializációs megoldása, ahol különböző futási szinteket lehetett definiálni, tehát nem egyesével indítgattunk a terminálból dolgokat, hanem a telinit parancsot használva meg lehetett adni, hogy milyen módon működjön a rendszer és mi induljon el.
    A rendszer futása közben a futási szint a telinit vagy az init paranccsal módosítható, a kívánt szint számát paraméterként megadva:
    telinit 1 vagy shutdown now A rendszer egyfelhasználós módba vált. Ez a mód rendszerkarbantartásra és -adminisztrációra használható.
    telinit 3 Elindul az összes lényeges program (a hálózat is), a normál felhasználók bejelentkezhetnek és X grafikus környezet nélkül használhatják a rendszert.
    telinit 5 A grafikus környezet is bekapcsolódik. Általában elindul egy képernyőkezelő, mint az XDM, GDM vagy KDM. Az automatikus bejelentkezés engedélyezése esetén a helyi felhasználó automatikusan bejelentkezik az előre kiválasztott ablakkezelőbe (GNOME, KDE, vagy bármely másik ablakkezelő).
    telinit 0 vagy shutdown -h now A rendszer leáll.
    telinit 6 vagy shutdown -r now A rendszer leáll, majd újraindul.
    A default értékek az alapértelmezett konfig fájlban találhatók meg: /etc/inittab
    A SYSTEM V a wikipédián:https://en.wikipedia.org/wiki/UNIX_System_V
  • BootScripts – A GoboLinux saját scriptekkel vezérli a rendszerindítást, példák a hivatalos dokumentációban: https://wiki.gobolinux.org/Documentation/Boot-script-tasks/
  • busybox-init – főként beágyazott rendszerekhez használják előszeretettel, kicsi, gyors és viszonylag egyszerű is
  • procd – az OpenWrt által használt megoldás, Wikipédia oldal: OpenWrt, hivatalos init scriptek: https://openwrt.org/docs/techref/initscripts
  • Dinit – szolgáltatás kezelő és init system. A Chimera Linux initje és  Artix Linux -ban boot opció.
  • Epoch – egy kicsi és gyors init és folyamatkezelő, GitHub: https://github.com/Subsentient/epoch
  • Initng – a következő generációs initként definiálják, aszinkron folyamatindítást tesz lehetővé többek között, GitHub: https://github.com/initng/initng
  • launchd – a meglévő Darwin/macOS/iOS/tvOS rendszerindítás cseréjének szánták a Mac OS X v10.4 -től kezdve, a hagyományos stílusú ‘rc.local’ scripteket futtat és a SystemStarter folyatmatot
  • OpenRC – Az Alpine Linux, Gentoo linuxokban használt folyamatvezérlő és init rendszer, a Devuan és Artix Linux -ban pedig boot opció, ami izolált folyamatokat és párhuzamos futtatást is lehetővé tesz, nekem személy szerint is nagy kedvencem
  • runit– egy olyan keresztplatformos, teljesértékű init rendszer, ami párhuzamos folyamatok kezelését is lehetővé teszi, a Void Linux alapértelmezett initje
  • Sun Service Management Facility (SMF) egy teljesen újraírt és újratervezett rendszer illumos/Solaris -hoz a Solaris 10 -től kezdődően, ugyanakkor a régi System V-init mintájára egyedüli service -ként fut
  • Shepherd – A GNU egy szolgáltatás- és démonkezelő, amely aszinkron, függőség-alapú inicializálást biztosít. Guile Scheme nyelven íródott, a projekt weboldala: https://www.gnu.org/software/shepherd/
  • s6 – Egy komplett szoftver csomag, amely init szolgáltatást is nyújt többek között, a projekt weboldala: https://skarnet.org/software/s6/
  • SystemStarter – A Mac OS X korábbi init rendszere a Mac OS X v10.4 verzióig
  • Upstart – A korábbi init rendszer teljesértékű cseréjének szánták az Ubuntu kezdeményezésére és használták is egészen 2014 -ig. A Fedora 9, Red Hat Enterprise Linux 6 és a Google’s Chrome OS is szintén használta.
  • finit – Az init a SysV init és a systemd alternatívája, eredetileg Claudio Matsuoka által az EeePC fastinitből visszafejtve: weboldal
  • Hummingbird -A hummingbird egy sebességre tervezett init rendszer. Alapértelmezés szerint nem csinál mást, mint elindítja a rendszert és leállítja a rendszert: repo
  • 31init  – 31 sorból álló, C nyelven írt init program: repo
  • uselessd – egy olyan projekt, amely a systemd-t egy alap initd-re és process supervisorra redukálja, miközben minimalizálja a tolakodást és az izolációt. Alapvetően ez a systemd a felesleges dolgok kivágásával, repo
  • cinit – A cinit egy gyors init rendszer függőségi funkciókkal és profil támogatással. weboldal
  • minit – egy nagyon minimális, de teljesértékű init weboldal

Na és hol marad a systemd – a sokak által gyűlölt és szeretett megoldás?

Nos az a helyzet, hogy a systemd egy Red Hat alkalmazott Lennart Poettering és Kay Sievers munkássága nyomán jött létre és a projekt eredeti célja egy init rendszer lett volna.
A gond az, hogy mára már gyakorlatilag teljesen átvette a home könyvtárak kezelésétől, a rendszerloggolástól a felhasználók kezelésén át a hálózatkezelésig és a folyamatkezelésig szinte mindent. A dolgok jelenlegi állása szerint a projekt annyi mindent integrál magába, hogy gyakorlatilag a teljes alaprendszert átveszi, így egy kész systemd-core-os -t hozva létre, mint egy konténer image, ami mindenkinek ugyanaz lesz, ami szerintem nagyon rossz irány és ezek a fejlesztések nagyon károsan hatnak a linux rendszerekre.

Tehát már messze nem csupán egy init vagy egy szolgáltatás kezelő rendszer, ami már csak azért is problémás, mert végig a legmagasabb azonosítóval, a PID:1  -el fut, így bármilyen hiba vagy törés esetén a legmagasabb szintű jogosultsággal fut le az adott folyamat.
A másik probléma, hogy a systemd nem tartja magát a POSIX szabványhoz, ami számomra teljesen elfogadhatatlan 22 év linuxozás után, tehát számomra a systemd nem init rendszer és nem helyes a szemléletmód az ami mögötte van, így én ezt a projektet semmilyen formában nem vagyok hajlandó támogatni sem videók, sem cikkek formájában.

Köszönöm a figyelmet és remélem, hogy lesz majd aki hasznosnak találja, a végére pedig szeretnék ajánlani egy magyar cikket és egy külföldi oldalt, egy kis szakmai olvasnivaló.
Akár egyetértünk vele, akár nem, szerintem nagyon hasznos írások és mindenképpen szélesíti a látókörünket.

Kéretik elolvasni – egy igen alapos és körültekintő leírás:
https://lacyc3.eu/systemd

Végül egy olyan link, amivel én személy szerint tökéletesen egyetértek és csak támogatni tudom,
legyetek szívesek figyelmesen átolvasni az itt leírtakat:
https://nosystemd.org/


Továbbra is várunk mindenkit nagy szeretettel csevegő oldalunkon élőben:
https://skamilinux.hu/chat/

Aktív fórum témák:
https://skamilinux.hu/phpBB3/search.php?search_id=active_topics

Legutóbbi PuppySzoftverek:
https://sourceforge.net/p/puppyszoftver/activity

Leave a Reply

Translate »

Weboldalunk cookie-kat használ annak érdekében, hogy megkülönböztesse Önt weboldalunk többi felhasználójától. Ez segítséget nyújt számunkra, hogy weboldalunk böngészése során jobb élményt nyújthassunk Önnek, valamint az oldalunk fejlesztéséhez is hasznosak. további információ

Ha hozzájárult a cookie-k használatához, a böngésző cookie-kat tárol az Ön számítógépén vagy egyéb eszközén, hogy rendszerünk felismerje beállításait. A hozzájárulás érvényessége időnként lejár. Azonban, hogyha szeretné visszavonni hozzájárulását, a böngészője cookie beállításai között bármikor megteheti.

Bezár