Futtatási szint (runlevel): a fogalom definíciója és szerepe a Unix-alapú rendszerekben

A futtatási szint (runlevel) egy fontos fogalom a Unix-alapú rendszerekben, amely meghatározza a rendszer működési állapotát és a betöltött szolgáltatásokat. Ez segít a rendszerindítás és leállítás folyamatának szabályozásában, így biztosítva a zavartalan működést.
ITSZÓTÁR.hu
24 Min Read

A Unix-alapú operációs rendszerek, mint például a Linux, stabilitásukról, rugalmasságukról és robusztusságukról ismertek. Ezen rendszerek működésének egyik alapvető aspektusa a *futtatási szint* (angolul *runlevel*) fogalma. Ez a mechanizmus kulcsfontosságú a rendszerindítási folyamat, a szolgáltatások kezelése és a rendszer különböző üzemmódjai közötti váltás szempontjából. A futtatási szint lényegében egy előre meghatározott állapotot vagy konfigurációt jelent, amely meghatározza, hogy mely szolgáltatások és erőforrások legyenek aktívak a rendszerben. Ez lehetővé teszi a rendszergazdák számára, hogy precízen szabályozzák a rendszer működését, legyen szó akár egyetlen felhasználós karbantartási módról, akár egy teljes értékű grafikus munkaállomásról vagy egy szerverről.

A futtatási szintek koncepciója a System V (SysV) init rendszerrel vált szabványossá a Unix-szerű operációs rendszerekben. Bár a modern Linux disztribúciók többsége már áttért az init rendszerek újabb generációira, mint például a systemd, az Upstart vagy az OpenRC, a futtatási szintek mögötti logika és a velük kapcsolatos feladatok továbbra is relevánsak, még ha a megvalósítás módja meg is változott. A futtatási szintek megértése alapvető ahhoz, hogy hatékonyan kezelhessünk egy Unix-alapú rendszert, hibaelhárítást végezzünk, vagy optimalizáljuk a rendszerindítási folyamatot.

A futtatási szint definíciója és alapvető szerepe

A futtatási szint egy olyan előre definiált állapot, amelyben egy Unix-alapú rendszer működik. Minden futtatási szint egyedi szolgáltatáskészlettel és konfigurációval rendelkezik, amely meghatározza, hogy a rendszer milyen feladatokat képes ellátni. Ez a mechanizmus teszi lehetővé, hogy a rendszer különböző üzemmódokban induljon el, vagy váltson közöttük, optimalizálva a rendelkezésre álló erőforrásokat és a felhasználói igényeket.

A SysV init rendszerben a futtatási szinteket 0-tól 6-ig terjedő számokkal jelölik, ahol mindegyik szám egy specifikus üzemmódot képvisel:

  • 0 (Nullás futtatási szint): Ez a szint a rendszer leállítására szolgál. Amikor a rendszer eléri a 0-s futtatási szintet, az összes aktív folyamat leáll, és a rendszer kikapcsol. Ez kritikus fontosságú az adatvesztés megelőzéséhez és a hardver biztonságos leállításához.
  • 1 (Egyes futtatási szint): Ezt a szintet gyakran *egyetlen felhasználós módnak* vagy *karbantartási módnak* is nevezik. Ebben az állapotban a rendszer a lehető legkevesebb szolgáltatással fut, általában hálózati kapcsolat nélkül. Ideális hibaelhárításhoz, fájlrendszer-ellenőrzéshez, jelszó-visszaállításhoz vagy más rendszergazdai feladatokhoz, amelyekhez teljes hozzáférés szükséges a rendszerhez, minimális külső beavatkozás mellett.
  • 2 (Kettes futtatási szint): Ez a szint egy *többfelhasználós mód*, amely hálózati támogatás nélkül működik. Lehetővé teszi több felhasználó számára a bejelentkezést és a rendszer használatát, de a hálózati szolgáltatások nem indulnak el automatikusan. Ezt a szintet ritkán használják alapértelmezettként, de bizonyos specifikus környezetekben hasznos lehet.
  • 3 (Hármas futtatási szint): Ez a *teljes többfelhasználós mód*, amely hálózati szolgáltatásokkal is rendelkezik, de grafikus felület nélkül. Ez a hagyományos szerverek alapértelmezett futtatási szintje, ahol a rendszergazdák távolról, parancssorból kezelik a rendszert. A legtöbb szerver-specifikus szolgáltatás, mint például a webkiszolgálók (Apache, Nginx), adatbázisok (MySQL, PostgreSQL) és SSH démonok ezen a szinten indulnak el.
  • 4 (Négyes futtatási szint): Ezt a szintet általában *felhasználó által definiált* vagy *nem használt* szintként tartják számon. A SysV init rendszer nem rendel hozzá specifikus funkciót, így a rendszergazdák szabadon konfigurálhatják saját igényeik szerint. Ritkán használják, mivel a 3-as és 5-ös szintek általában lefedik a legtöbb igényt.
  • 5 (Ötös futtatási szint): Ez a *többfelhasználós mód grafikus felülettel*. Ez a legtöbb asztali Linux disztribúció alapértelmezett futtatási szintje. A 3-as szint összes szolgáltatását tartalmazza, plusz elindítja a grafikus bejelentkezés-kezelőt (pl. GDM, LightDM, SDDM), amely lehetővé teszi a felhasználók számára a grafikus felületen keresztüli interakciót a rendszerrel.
  • 6 (Hatos futtatási szint): Ez a szint a rendszer *újraindítására* szolgál. Amikor a rendszer eléri a 6-os futtatási szintet, az összes szolgáltatás leáll, és a rendszer újraindul. Ez a 0-s szinthez hasonlóan kritikus az adatok integritásának megőrzéséhez és a biztonságos leállításhoz.

A futtatási szintek alapvető célja, hogy a rendszergazdák pontosan meghatározhassák, mely szolgáltatások és folyamatok legyenek aktívak a rendszer különböző üzemmódjaiban, ezzel optimalizálva a rendszer stabilitását, biztonságát és erőforrás-felhasználását.

A SysV init rendszer és a futtatási szintek

A SysV init (System V initialization) volt a hagyományos init rendszer a legtöbb Unix-szerű operációs rendszerben hosszú ideig, beleértve a Linuxot is. Az `init` folyamat az első folyamat, amelyet a kernel elindít a rendszerindítás során, és annak PID-je mindig 1. Ez a folyamat felelős az összes többi folyamat elindításáért és felügyeletéért, beleértve a démonokat és szolgáltatásokat.

Az `/etc/inittab` fájl

A SysV init rendszer központi konfigurációs fájlja az `/etc/inittab`. Ez a fájl tartalmazza az `init` folyamat utasításait arról, hogy mely futtatási szintek léteznek, és az egyes szinteken milyen műveleteket kell végrehajtani. Bár a modern disztribúciókban, amelyek systemd-t használnak, ez a fájl már nem játszik központi szerepet (gyakran hiányzik, vagy csak egy szimbolikus link a systemd-hez), a SysV init-alapú rendszereknél kulcsfontosságú volt.

Egy tipikus `/etc/inittab` bejegyzés a következő formátumú:
`id:runlevels:action:process`

  • id: Egy egyedi azonosító a bejegyzéshez.
  • runlevels: Azok a futtatási szintek, amelyekre ez a bejegyzés vonatkozik. Ha üres, akkor az összes futtatási szintre vonatkozik.
  • action: Az `init` által végrehajtandó művelet. Néhány példa:
    • sysinit: A rendszerindításkor egyszer fut le.
    • boot: A rendszerindításkor egyszer fut le, mielőtt az `init` futtatási szintre váltana.
    • wait: A folyamat befejezésére vár, mielőtt folytatná.
    • respawn: A folyamat újraindítása, ha az leáll.
    • once: A folyamat egyszer fut le.
    • initdefault: Meghatározza az alapértelmezett futtatási szintet.
    • ctrlaltdel: Meghatározza, mi történjen Ctrl+Alt+Del billentyűkombinációra.
    • powerfail: Meghatározza, mi történjen áramszünet esetén.
  • process: A végrehajtandó parancs vagy szkript.

Példa egy alapértelmezett futtatási szint beállítására:
`id:5:initdefault:`
Ez a sor azt mondja az `init` folyamatnak, hogy az 5-ös futtatási szint legyen az alapértelmezett a rendszerindításkor.

Az `/etc/rcX.d/` könyvtárak és a szolgáltatáskezelés

Amikor az `init` folyamat egy adott futtatási szintre vált, végrehajtja azokat a szkripteket, amelyek az adott szinthez tartoznak. Ezek a szkriptek tipikusan a `/etc/rcX.d/` könyvtárakban találhatók, ahol az `X` a futtatási szint számát jelöli (pl. `/etc/rc3.d/`, `/etc/rc5.d/`). Ezek a könyvtárak nem maguk a szkriptek, hanem szimbolikus linkek a tényleges szolgáltatásszkriptekhez, amelyek általában az `/etc/init.d/` könyvtárban találhatók.

Minden szkript neve ebben a könyvtárban egy speciális konvenciót követ:
`[S|K][szám][név]`

  • S (Start): Ez a prefix azt jelzi, hogy a szkriptnek el kell indítania egy szolgáltatást, amikor a rendszer belép az adott futtatási szintbe.
  • K (Kill): Ez a prefix azt jelzi, hogy a szkriptnek le kell állítania egy szolgáltatást, amikor a rendszer belép az adott futtatási szintbe. Ez kritikus, amikor egy magasabb futtatási szintről alacsonyabbra váltunk, és bizonyos szolgáltatásoknak le kell állniuk.
  • szám: Egy kétszámjegyű szám (pl. `01`, `99`), amely meghatározza a szkript végrehajtásának sorrendjét. Az alacsonyabb számú szkriptek előbb futnak. Ez biztosítja, hogy a szolgáltatások a megfelelő sorrendben induljanak el vagy álljanak le, figyelembe véve a függőségeket. Például egy hálózati szolgáltatásnak a hálózati interfész konfigurálása után kell elindulnia.
  • név: A szolgáltatás neve, amelyre a szkript vonatkozik (pl. `apache2`, `mysql`).

Például, ha a rendszer a 3-as futtatási szintre vált:

  1. Az `init` először végrehajtja az összes `K` kezdetű szkriptet a `/etc/rc3.d/` könyvtárban, a számok növekvő sorrendjében. Ez leállítja azokat a szolgáltatásokat, amelyeknek nem szabad futniuk a 3-as szinten, vagy amelyek korábbi szintekről maradtak aktívak.
  2. Ezután végrehajtja az összes `S` kezdetű szkriptet a `/etc/rc3.d/` könyvtárban, szintén a számok növekvő sorrendjében. Ez elindítja azokat a szolgáltatásokat, amelyeknek aktívnak kell lenniük a 3-as futtatási szinten.

Ez a módszer rendkívül rugalmas volt a szolgáltatások indításának és leállításának kezelésében, de a függőségek manuális kezelése és a sorrend meghatározása bonyolulttá tehette a rendszergazdák számára a nagyobb rendszerek karbantartását.

Futtatási szintek kezelése SysV init rendszerekben

A SysV init rendszerekben számos parancs állt rendelkezésre a futtatási szintek megtekintésére és módosítására.

runlevel parancs

A `runlevel` parancs megmutatja a rendszer aktuális és az előző futtatási szintjét.
Példa kimenet: `N 5`
Ez azt jelenti, hogy az előző futtatási szint „ismeretlen” (N), az aktuális pedig az 5-ös (grafikus mód). Ha például a rendszer 3-ról 5-re váltott, a kimenet `3 5` lenne.

init és telinit parancsok

A futtatási szint módosítására az `init` vagy a `telinit` parancsot használjuk, amelyet a cél futtatási szint számával egészítünk ki. A `telinit` valójában egy szimbolikus link az `init` parancshoz, de gyakran preferálják, mert a neve jobban utal a „változtasd meg az init szintet” funkcióra.

Példák:

  • sudo telinit 1: Váltás egyes futtatási szintre (egyetlen felhasználós mód). Ez gyakran megköveteli a bejelentkezést root felhasználóként, mivel a hálózati szolgáltatások leállnak.
  • sudo telinit 3: Váltás hármas futtatási szintre (többfelhasználós mód hálózatokkal, grafikus felület nélkül).
  • sudo telinit 5: Váltás ötös futtatási szintre (többfelhasználós mód grafikus felülettel).
  • sudo telinit 0: Rendszer leállítása.
  • sudo telinit 6: Rendszer újraindítása.

Ezen parancsok végrehajtásakor az `init` folyamat elindítja a megfelelő szkripteket a `/etc/rcX.d/` könyvtárakból, leállítva a nem kívánt, és elindítva a kívánt szolgáltatásokat az új futtatási szintnek megfelelően.

Szolgáltatások kezelése futtatási szinteken

A SysV init rendszerekben a szolgáltatások futtatási szinteken való engedélyezésére vagy letiltására különböző eszközök álltak rendelkezésre, amelyek automatizálták a szimbolikus linkek létrehozását és törlését az `rcX.d` könyvtárakban.

  • chkconfig: Ez a parancs (főleg Red Hat-alapú disztribúciókban) lehetővé tette a rendszergazdák számára, hogy könnyedén beállítsák, mely szolgáltatások induljanak el bizonyos futtatási szinteken.
    Példák:

    • chkconfig --list: Megmutatja az összes szolgáltatás állapotát az összes futtatási szinten.
    • chkconfig httpd on: Engedélyezi az `httpd` szolgáltatást az alapértelmezett indítási szinteken (általában 3 és 5).
    • chkconfig httpd off: Letiltja az `httpd` szolgáltatást az alapértelmezett indítási szinteken.
    • chkconfig --level 35 httpd on: Engedélyezi az `httpd` szolgáltatást a 3-as és 5-ös futtatási szinteken.
  • update-rc.d: Ez a parancs (főleg Debian-alapú disztribúciókban) hasonló funkciót látott el, de eltérő szintaxissal.
    Példák:

    • update-rc.d apache2 defaults: Engedélyezi az `apache2` szolgáltatást az alapértelmezett futtatási szinteken (általában 2, 3, 4, 5).
    • update-rc.d apache2 remove: Eltávolítja az `apache2` szolgáltatást az indítási szintekről.
    • update-rc.d apache2 disable: Letiltja a szolgáltatást anélkül, hogy teljesen eltávolítaná a konfigurációt.

Ezek az eszközök jelentősen leegyszerűsítették a szolgáltatások kezelését, automatizálva a szimbolikus linkek manuális létrehozásával és törlésével járó bonyolult feladatokat.

A futtatási szintek és a modern init rendszerek

Az elmúlt években a Linux ökoszisztémában jelentős változások történtek az init rendszerek terén. A SysV init, bár megbízható volt, korlátai voltak a modern rendszerek növekvő komplexitása és a gyorsabb rendszerindítás iránti igény miatt. A fő problémák a következők voltak:

  • Szekvenciális indítás: A SysV init szkriptek alapvetően egymás után futottak, ami lassú rendszerindítást eredményezett, különösen sok szolgáltatás esetén.
  • Függőségi problémák: A szolgáltatások közötti komplex függőségek kezelése nehézkes volt a szkript alapú rendszerben.
  • Hibakezelés: Nehéz volt nyomon követni a szolgáltatások állapotát vagy kezelni a hibákat.
  • Korlátozott funkcionalitás: Hiányoztak a fejlettebb funkciók, mint például a szolgáltatások csoportosítása, erőforrás-korlátozás vagy a cgroup-ok kezelése.

Ezen problémák orvoslására több új init rendszer is megjelent, amelyek közül a `systemd` vált a legelterjedtebbé a legtöbb modern Linux disztribúcióban (pl. Debian, Ubuntu, Fedora, CentOS, Arch Linux). Más rendszerek, mint az Upstart (Ubuntu korábban), vagy az OpenRC (Gentoo) is próbálták orvosolni a SysV init hiányosságait.

systemd és a „célok” (targets)

A systemd egy sokkal átfogóbb rendszer- és szolgáltatáskezelő, amely a futtatási szintek koncepcióját „célok” (targets) formájában implementálja. Bár a `systemd` nem használja közvetlenül a futtatási szintek számozását, kompatibilitást biztosít a SysV futtatási szintekkel, leképezve azokat a saját céljaira.

A `systemd` alapvető egységei az „unit”-ok, amelyek lehetnek szolgáltatások (.service), csatolási pontok (.mount), eszközök (.device), és a futtatási szintek megfelelői, a „célok” (.target).

A SysV futtatási szintek és a `systemd` célok közötti leképezés a következő:

SysV Futtatási szint systemd Cél (target) Leírás
0 poweroff.target Rendszer leállítása.
1 rescue.target vagy emergency.target Egyfelhasználós mód (minimális rendszer, hibaelhárításhoz). A rescue.target több szolgáltatást indít, mint az emergency.target.
2 multi-user.target Többfelhasználós mód, hálózat nélkül vagy minimális hálózattal.
3 multi-user.target Többfelhasználós mód hálózati szolgáltatásokkal, grafikus felület nélkül. A multi-user.target általában elegendő szerverekhez.
4 multi-user.target Felhasználó által definiált vagy nem használt. A systemd is a multi-user.target-hez térképezi.
5 graphical.target Többfelhasználós mód grafikus felülettel. Magában foglalja a multi-user.target-et.
6 reboot.target Rendszer újraindítása.

A `systemd` a SysV init szkripteket is képes kezelni (kompatibilitási réteg segítségével), de a preferált módszer a `unit` fájlok használata. Ezek a fájlok leírják a szolgáltatásokat, azok függőségeit, és hogy mely célokhoz tartoznak.

systemctl parancs

A `systemctl` a `systemd` elsődleges parancssori eszköze a szolgáltatások és célok kezelésére. Ez a parancs váltja fel a SysV init parancsokat, mint az `init`, `telinit`, `service`, `chkconfig`, `update-rc.d`.

Példák:

  • systemctl get-default: Megmutatja az alapértelmezett célpontot (pl. `graphical.target` vagy `multi-user.target`).
  • systemctl set-default multi-user.target: Beállítja az alapértelmezett célpontot multi-user.target-re (szerver mód).
  • systemctl set-default graphical.target: Beállítja az alapértelmezett célpontot graphical.target-re (asztali mód).
  • systemctl isolate multi-user.target: Váltás multi-user.target-re. Ez hasonló a telinit 3 parancshoz.
  • systemctl isolate graphical.target: Váltás graphical.target-re. Ez hasonló a telinit 5 parancshoz.
  • systemctl reboot: Rendszer újraindítása (hasonló a telinit 6-hoz).
  • systemctl poweroff: Rendszer leállítása (hasonló a telinit 0-hoz).
  • systemctl start apache2.service: Elindítja az Apache webszervert.
  • systemctl stop apache2.service: Leállítja az Apache webszervert.
  • systemctl enable apache2.service: Engedélyezi az Apache webszervert, hogy a rendszerindításkor automatikusan elinduljon.
  • systemctl disable apache2.service: Letiltja az Apache webszervert az automatikus indításból.
  • systemctl status apache2.service: Megmutatja az Apache webszerver állapotát.

A `systemd` előnyei közé tartozik a szolgáltatások párhuzamos indítása, a fejlett függőségkezelés, a cgroup-ok támogatása, a jobb naplózás és hibakezelés, valamint az egységesebb felület a rendszeradminisztrációhoz. Bár a `systemd` céljai komplexebbek, mint a SysV futtatási szintek, a mögöttes koncepció – a rendszer különböző üzemmódjainak definiálása – megmaradt.

Upstart és OpenRC

Az Upstart, amelyet az Ubuntu fejlesztett ki, a SysV init és a systemd közötti átmenetként szolgált. Eseményvezérelt rendszert használt, amely gyorsabb indítást tett lehetővé a függőségek dinamikus kezelésével. Az Upstart is támogatta a futtatási szinteket, és leképezte a SysV init szinteket a saját „job”-jaival. Azonban az Ubuntu is áttért a systemd-re.

Az OpenRC, amelyet főként a Gentoo Linux használ, egy másik init rendszer, amely a SysV init szkriptekre épül, de számos fejlesztést tartalmaz, mint például a párhuzamos indítás, a függőségkezelés és a jobb hibakezelés. Az OpenRC is teljes mértékben támogatja a SysV futtatási szinteket.

Miért fontosak még a futtatási szintek (vagy célok)?

Bár a technológia fejlődött, és a `systemd` vált a domináns init rendszerré, a futtatási szintek (vagy a `systemd` kontextusában a célok) koncepciója továbbra is alapvető fontosságú a Unix-alapú rendszerek működésének megértéséhez és kezeléséhez.

  1. Rendszerindítási folyamat szabályozása: A futtatási szintek lehetővé teszik a rendszergazdák számára, hogy pontosan meghatározzák, milyen szolgáltatások induljanak el a rendszerindításkor. Ez kritikus a szerverek esetében, ahol szükségtelen szolgáltatások leállítása növeli a biztonságot és csökkenti az erőforrás-felhasználást.
  2. Hibaelhárítás és karbantartás: Az egyes futtatási szint (vagy `rescue.target`/`emergency.target`) egyetlen felhasználós módja felbecsülhetetlen értékű eszköz a hibaelhárításhoz. Ha a rendszer nem indul el megfelelően, vagy ha a grafikus felület összeomlik, ez a mód lehetővé teszi a rendszergazdák számára, hogy hozzáférjenek a fájlrendszerhez, javítsák a konfigurációs hibákat, vagy visszaállítsák a jelszavakat.
  3. Rendszer teljesítményének optimalizálása: A felesleges szolgáltatások futásának megakadályozásával csökkenthető a rendszer memóriahasználata és CPU-terhelése. Egy szervernek például általában nincs szüksége grafikus felületre, így a 3-as futtatási szinten (multi-user.target) való futtatása optimalizálja az erőforrásokat.
  4. Biztonság: Minél kevesebb szolgáltatás fut a rendszeren, annál kisebb a támadási felület. A futtatási szintek segítenek a minimális szolgáltatáskészlet konfigurálásában a kívánt működési módhoz.
  5. Rendszergazdai ismeretek: A futtatási szintek megértése alapvető Unix/Linux rendszergazdai tudás, amely segít a rendszerek mélyebb megértésében, függetlenül az aktuálisan használt init rendszertől.

Biztonsági megfontolások

A futtatási szintek nem csak a rendszer működését befolyásolják, hanem jelentős biztonsági vonatkozásaik is vannak.

  • Minimalista megközelítés: A „legkevésbé privilégizált” elv alkalmazása a futtatási szintekre is kiterjed. Ha egy szervernek nincs szüksége grafikus felületre (5-ös futtatási szint / graphical.target), akkor ne fusson azon. A 3-as futtatási szint (multi-user.target) ideális, mivel csak a szükséges hálózati szolgáltatásokat indítja el. Ez csökkenti a potenciális támadási felületet.
  • Szolgáltatások ellenőrzése: Rendszeresen ellenőrizni kell, hogy mely szolgáltatások vannak engedélyezve az egyes futtatási szinteken. A `chkconfig –list` vagy `systemctl list-unit-files –type=service` parancsok segítenek ebben. Tiltsa le azokat a szolgáltatásokat, amelyekre nincs szükség.
  • Egyes futtatási szint védelme: Az egyes futtatási szint (egyetlen felhasználós mód) rendkívül érzékeny, mivel gyakran root jelszó nélkül is hozzáférést biztosíthat a rendszerhez. Bizonyos rendszereken beállítható, hogy az egyes futtatási szinthez való hozzáféréshez is root jelszóra legyen szükség. Ez kritikus, ha fizikai hozzáférés lehetséges a szerverhez.
  • Naplózás: A futtatási szint váltások, szolgáltatás indítások és leállítások naplózása elengedhetetlen a biztonsági incidensek nyomon követéséhez. A `journalctl` (systemd) vagy a hagyományos `syslog` naplók vizsgálata segíthet az anomáliák felismerésében.

Hibaelhárítás futtatási szintekkel

A futtatási szintek kulcsfontosságúak a rendszerhibák diagnosztizálásában és javításában.

  1. Rendszer nem indul grafikus felülettel: Ha a rendszer elindul, de a grafikus felület nem jelenik meg, vagy lefagy, próbálja meg az init 3 (SysV) vagy systemctl isolate multi-user.target (systemd) paranccsal átváltani szöveges módba. Ezzel kizárhatja a grafikus környezettel kapcsolatos problémákat, és hozzáférhet a naplókhoz vagy konfigurációs fájlokhoz.
  2. Rendszerindítási hiba: Ha a rendszer egyáltalán nem indul el, és a hibaüzenetek nem egyértelműek, próbálja meg a rendszert egyes futtatási szinten (init 1 vagy rescue.target) indítani. Ez a minimális környezet segíthet azonosítani a hibás szolgáltatást vagy konfigurációt anélkül, hogy a teljes rendszer betöltődne és esetleg tovább romlana a helyzet.
  3. Elfelejtett root jelszó: Az egyes futtatási szint gyakran használható az elfelejtett root jelszó visszaállítására, mivel ebben a módban a root fájlrendszer írhatóvá tehető, és a jelszó megváltoztatható.
  4. Szolgáltatási problémák: Ha egy szolgáltatás nem indul el, vagy hibásan működik, ellenőrizze, hogy az engedélyezve van-e a megfelelő futtatási szinten (chkconfig, update-rc.d, vagy systemctl enable/status). Győződjön meg arról, hogy a szolgáltatás függőségei is futnak.

Összehasonlítás: SysV init, Upstart, systemd, OpenRC

A futtatási szintek koncepciója a különböző init rendszerekben eltérő megvalósítást kapott, de a mögöttes cél ugyanaz maradt: a rendszer különböző működési állapotainak kezelése.

SysV init

  • Előnyök: Egyszerű, jól dokumentált, széles körben elterjedt volt, könnyen érthető szkript alapú logika.
  • Hátrányok: Szekvenciális indítás (lassú), nehézkes függőségkezelés, korlátozott hibakezelés és naplózás, bonyolultabb szolgáltatás-felügyelet.
  • Futtatási szintek kezelése: Számozott szintek (0-6), `/etc/inittab`, `/etc/rcX.d/` könyvtárak, `init`, `telinit`, `runlevel`, `chkconfig`, `update-rc.d` parancsok.

Upstart

  • Előnyök: Eseményvezérelt, párhuzamos indítás, dinamikus függőségkezelés, jobb teljesítmény a SysV inithez képest.
  • Hátrányok: Komplexebb konfiguráció, végül a systemd dominanciája miatt elavulttá vált.
  • Futtatási szintek kezelése: Saját „job”-ok, amelyek eseményekre reagálnak, de kompatibilitást biztosít a SysV futtatási szintekkel.

systemd

  • Előnyök: Rendkívül gyors párhuzamos indítás, fejlett függőségkezelés, cgroup-ok támogatása, egységes `systemctl` felület a szolgáltatások és rendszerkezeléshez, gazdag naplózás (`journald`), fejlett hibakezelés.
  • Hátrányok: Nagyobb komplexitás, monolitikusnak tartják, kritikák a POSIX filozófiától való eltérése miatt.
  • Futtatási szintek kezelése: „Célok” (targets) használata, amelyek leképezik a SysV futtatási szinteket. `systemctl` parancs a célok és szolgáltatások kezelésére.

OpenRC

  • Előnyök: SysV init szkriptekre épül, de számos fejlesztéssel (párhuzamos indítás, függőségkezelés), könnyebb átállás SysV initről, modulárisabb, mint a systemd.
  • Hátrányok: Kevésbé elterjedt, mint a systemd, kevesebb funkciót kínál, mint a systemd.
  • Futtatási szintek kezelése: Teljes SysV futtatási szint kompatibilitás, saját eszközökkel a szolgáltatások kezelésére.

Gyakorlati tanácsok és legjobb gyakorlatok

* Ismerje meg az init rendszert: Mindenekelőtt azonosítsa, hogy milyen init rendszert használ a disztribúciója (pl. `ps -p 1`, `systemctl –version`).
* Alapértelmezett futtatási szint beállítása: Állítsa be az alapértelmezett futtatási szintet az igényeinek megfelelően. Szerverek esetén ez legyen a 3-as (multi-user.target), asztali gépek esetén az 5-ös (graphical.target).
* Csak a szükséges szolgáltatások futtatása: Rendszeresen ellenőrizze, mely szolgáltatások vannak engedélyezve az egyes futtatási szinteken, és tiltsa le azokat, amelyekre nincs szükség. Ez növeli a biztonságot és optimalizálja az erőforrás-felhasználást.
* Tesztelje a változtatásokat: Mielőtt éles környezetben változtatna a futtatási szinteken vagy szolgáltatásokon, tesztelje a változtatásokat fejlesztői vagy tesztkörnyezetben.
* Legyen óvatos az 1-es futtatási szinttel: Az egyes futtatási szint (egyetlen felhasználós mód) rendkívül hasznos, de ha nem megfelelően konfigurálták a biztonságot, root hozzáférést biztosíthat jelszó nélkül.
* Naplók ellenőrzése: Rendszeresen ellenőrizze a rendszer naplóit (`journalctl` vagy `dmesg`, `/var/log/syslog`, `/var/log/boot.log`) a futtatási szint váltásokkal és szolgáltatásindításokkal kapcsolatos hibák vagy figyelmeztetések után kutatva.

Konklúzió

A futtatási szint fogalma, bár a technológia fejlődésével a konkrét megvalósítások változtak, továbbra is alapvető fontosságú a Unix-alapú rendszerek működésének megértésében. A SysV init által bevezetett, számozott futtatási szintek öröksége a modern `systemd` „céljaiban” él tovább, biztosítva a rendszer különböző üzemmódjai közötti egyértelmű elhatárolást és a szolgáltatások precíz vezérlését. A rendszergazdák számára elengedhetetlen a futtatási szintek ismerete a rendszerindítási folyamat optimalizálásához, a hibaelhárításhoz, a biztonság növeléséhez és a rendszer teljesítményének maximalizálásához. Függetlenül attól, hogy SysV init, Upstart, OpenRC vagy `systemd` fut egy adott gépen, a mögöttes elv – a rendszer működési állapotainak rugalmas és kontrollált kezelése – a Unix/Linux rendszerek egyik sarokköve marad.

Megosztás
Hozzászólások

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük