Az init folyamatAz init folyamat

Az init program az 1-es folyamatszámú folyamat. Ez felelős a rendszer megfelelő inicializálásáért. Az init folyamatot közvetlenül a kernel indítja el és nem is hat rá a 9-es szignál, amely normál esetben leállítja a folyamatokat. Minden más folyamat az init vagy valamelyik leszármazott folyamatának leszármazottja.

Az init beállításai központilag vannak megadva az /etc/inittab fájlban. Itt vannak beállítva a futási szintek is (lásd 17.2.1. szakasz - Futási szintek). Szintén ez a fájl határozza meg, hogy az egyes szinteken mely szolgáltatások és démonok álljanak rendelkezésre. Az /etc/inittab bejegyzéseitől függően az init számos parancsfájlt lefuttat. Az áttekinthetőség érdekében e parancsfájlok (ún. init parancsfájlok ) mindegyike az /etc/init.d könyvtárban található (lásd: 17.2.2. szakasz - Init parancsfájlok).

A rendszerindítás és -leállítás teljes folyamatát az init tartja karban. E nézőpontból a kernel egy háttérfolyamatnak tekinthető, amelynek feladata az összes folyamat vezérlése és karbantartása, valamint a CPU-idő és a hardverhozzáférés beállítása a többi programtól érkező kéréseknek megfelelően.

Futási szintekFutási szintek

A Linux-rendszerekben a futási szintek határozzák meg a rendszer elindításának módját és a futó rendszerben rendelkezésre álló szolgáltatásokat. Rendszerindítás után a rendszer az /etc/inittab fájl initdefault sorában megadott módon kerül indításra. Ez általában 3 vagy 5. Lásd:17.1. táblázat - A használható futási szintek. A futási szint a rendszerindítás közben is megadható (például a rendszerindítási promptnál). Azokat a paramétereket, amelyeket nem közvetlenül a kernel értékel ki, az init kapja meg. Ha például 3-as szinten akarja indítani a rendszert, akkor a rendszerindítási promptnál adja meg a 3 paramétert (egyetlen hármast).

17.1. táblázat - A használható futási szintek

Futási szint

Leírás

0

Rendszerleállás

S vagy 1

Egyfelhasználós mód

2

Több helyi felhasználós mód távoli hálózat (például NFS) nélkül

3

Teljes többfelhasználós mód hálózattal

4

Nem használt

5

Teljes többfelhasználós mód hálózattal és X képernyőkezelővel – KDM (alapértelmezett), GDM vagy XDM

6

A rendszer újraindítása


[Important]Kerülje a 2-es futási szint használatát NFS-en keresztül felcsatolt partícióval.

Ne használja a 2-es futási szintet, ha a rendszer NFS-en keresztül csatol fel egy partíciót, mint például az /usr. Mivel az NFS szolgáltatás a 2-es futási szinten (több helyi felhasználós mód távoli hálózat nélkül) nem elérhető, a rendszer működése problémássá válhat, ha fontos program- vagy függvénytárfájlok hiányoznak.

A rendszer futása közben a futási szint a telinit paranccsal módosítható, a kívánt szint számát paraméterként megadva. Erre csak a rendszergazda jogosult. Az alábbi listában összefoglaljuk a futási szintekkel kapcsolatos legfontosabb parancsokat.

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.

Az összes szokásos módon telepített SUSE Linux Enterprise rendszerben az 5-ös futási szint az alapértelmezett beállítás. A felhasználók közvetlenül a grafikus felületen jelentkeznek be, vagy az alapértelmezett felhasználót automatikusan bejelentkezteti a rendszer. Ha az alapértelmezett futási szint a 3, akkor az 5-ös szintre váltás előtt az X Window rendszert megfelelően be kell állítani (lásd: 23. fejezet - Az X Window rendszer). Ha ez megtörtént, akkor a telinit 5 parancs kiadásával ellenőrizze, hogy a rendszer megfelelően működik-e. Ha minden a várakozásnak megfelelően működik, akkor a YaST segítségével az alapértelmezett futási szint 5-re állítható.

[Warning]Az /etc/inittab fájl hibái sikertelen rendszerindítást eredményezhetnek.

Ha az /etc/inittab fájl megsérül, akkor elképzelhető, hogy a rendszer nem indul el megfelelően. Éppen ezért legyen nagyon körültekintő az /etc/inittab fájl módosításakor. Mindig olvastassa újra az init-tel az /etc/inittab fájlt: adja ki a telinit q parancsot a gép újraindítása előtt.

A futási szintek módosításakor általában két dolog történik. Először elindulnak az aktuális futási szinthez tartozó leállító parancsfájlok, amelyek bezárják az aktuális futási szint működéséhez szükséges fontos programokat. Majd ezután elindulnak az új futási szint indító parancsfájljai. Itt a legtöbb esetben jónéhány program elindításra kerül. A 3-asról 5-ös szintre módosításkor például az alábbiak történnek:

  1. Az adminisztrátor (root) a telinit 5 parancs kiadásával utasítja az init-et a másik futási szintre váltásra.

  2. Az init megvizsgálja az aktuális futási szintet (runlevel) és megállapítja, hogy az /etc/init.d/rc fájlt az új futási szint paraméterként megadásával kell elindítania.

  3. Az rc ezután meghívja az aktuális futási szint leállító parancsfájljai közül azokat, amelyekhez az új futási szinten nem tartozik indító parancsfájl. A jelen példában ezek az /etc/init.d/rc3.d könyvtárban található parancsfájlok (az előző futási szint a 3-as volt) közül azok, amelyek neve K betűvel kezdődik. A K betű utáni szám határozza meg a parancsfájlok stop paraméterrel futtatásának a sorrendjét, ugyanis bizonyos függőségeket figyelembe kell venni.

  4. Legutoljára pedig elindulnak az új futási szint indító parancsfájljai. A jelen példában ezek az /etc/init.d/rc5.d könyvtárban található, S betűvel kezdődő nevű fájlok. A parancsfájlok indításának sorrendjét megint az S utáni szám határozza meg.

Ha ugyanarra a futási szintre vált át, mint az éppen aktuális, akkor az init ellenőrzi az/etc/inittab esetleges változásait és csupán a módosításoknak megfelelő lépéseket teszi meg (például elindítja a getty programot egy másik csatolón). Ugyanez az eredménye a telinit q parancs kiadásának is.

Init parancsfájlokInit parancsfájlok

Az /etc/init.d könyvtárban kétféle parancsfájl található:

Az init által közvetlenül végrehajtott parancsfájlok

Ez csak a rendszerindítási folyamat közben, vagy egy azonnali rendszerleállítás kezdeményezésekor áll fenn (áramellátási hiba esetén, vagy ha a felhasználó megnyomja a Ctrl-Alt-Del billentyűkombinációt). E parancsfájlok végrehajtását az /etc/inittab szabályozza.

Az init által közvetetten végrehajtott parancsfájlok

Ezek a futási szint módosításakor futnak le, és mindig az /etc/init.d/rc fő parancsfájlt hívják meg, amely garantálja az érintett parancsfájlok megfelelő sorrendjét.

Az összes parancsfájl az /etc/init.d könyvtárban található. A rendszerindításkor lefutó parancsfájlok szimbolikus láncokon keresztül kerülnek meghívásra az /etc/init.d/boot.d alkönyvtárból. A futási szint módosítására szolgáló parancsfájlok szintén szimbolikus láncokon keresztül kerülnek meghívásra az egyik alkönyvtárból (/etc/init.d/rc0.d to /etc/init.d/rc6.d). Ez csak a jobb átláthatóság érdekében van így, valamint hogy ne duplázódjanak a parancsfájlok, ha több futási szinten is használja őket a rendszer. Mivel minden parancsfájl végrehajtható indítási és leállítási parancsfájlként is, ezeknek a parancsfájloknak meg kell érteniük a start és stop paramétereket. A parancsfájlok a restart, reload, force-reload, and status paraméterekre is reagálnak. Az egyes paraméterek leírása: 17.2. táblázat - A használható init parancsfájl-paraméterek. Az init által közvetlenül futtatott parancsfájlok nem rendelkeznek ilyen hivatkozásokkal. Ezek szükség esetén a futási szinttől függetlenül futnak le.

17.2. táblázat - A használható init parancsfájl-paraméterek

Paraméter

Leírás

start

A szolgáltatás elindítása.

stop

A szolgáltatás leállítása.

restart

Ha a szolgáltatás fut, leállítja, majd újraindítja. Ha nem fut, akkor elindítja.

reload

Újratölti a konfigurációt a szolgáltatás leállítása és újraindítása nélkül.

force-reload

Újratölti a konfigurációt, ha a szolgáltatás támogatja ezt. Ellenkező esetben ugyanúgy viselkedik, mintha a restart paraméter lett volna megadva.

status

Megjeleníti a szolgáltatás aktuális állapotát.


A futásiszint-specifikus alkönyvtárban található láncok segítségével a parancsfájlok több futási szinthez is rendelhetők. Csomagok telepítésekor vagy eltávolításakor ezek a hivatkozások az insserv program segítségével adhatók hozzá vagy távolíthatók el (vagy az /usr/lib/lsb/install_initd, parancsfájl segítségével, amely szintén ezt a programot hívja meg). Részletes információt erről az insserv(8) kézikönyvoldala tartalmaz.

E beállítások mindegyikét lehet módosítani a YaST modul segítségével is. Ha ellenőrizni kell a parancssorban az állapotot, akkor használja a chkconfig eszközt. Ennek leírását a chkconfig(8) kézikönyvoldal tartalmazza.

Most pedig az elsőként vagy utolsóként elindított rendszerindító ill. -leállító parancsfájlok rövid leírása, valamint a karbantartási parancsfájl rövid bemutatása következik.

boot

A rendszernek az init programmal történő közvetlen elindítása során kerül végrehajtásra. Független a kiválasztott futási szinttől és csak egyszer kerül végrehajtásra. Itt kerül felcsatolásra a /proc és /dev/pts fájlrendszer, illetve aktiválásra a blogd (rendszerindítás-naplózó démon). A rendszer frissítés vagy telepítés utáni első indításakor a kezdeti rendszerkonfiguráció kerül elindításra.

A boot és rc minden más szolgáltatás előtt indítja el a blogd démont. A blogd a fenti parancsfájlok által elindított tevékenységek végrehajtása (bizonyos parancsfájlok futtatása, például a blokk-speciális fájlok elérhetővé tétele) után kerül leállításra. A blogd a képernyőkimenetet a /var/log/boot.msg naplófájlba írja, de csak akkor, ha a /var írható-olvasható módban van felcsatolva. Ellenkező esetben a blogd puffereli az adatokat, amíg a /var rendelkezésre nem áll. A blogd-vel kapcsolatos további információ a blogd(8) kézikönyvoldalon található.

A boot parancsfájl felelős az /etc/init.d/boot.d könyvtárban található, S betűvel kezdődő nevű parancsfájlok elindításáért. Itt történik meg a fájlrendszerek ellenőrzése és szükség esetén a hurokeszközök beállítása. A rendszeridő beállítása is megtörténik. Ha hiba történik a fájlrendszer automatikus ellenőrzése és kijavítása közben, akkor a rendszeradminisztrátor a root jelszó megadása után közbeavatkozhat. Legutoljára a boot.local parancsfájl hajtódik végre.

boot.local

Ebben a fájlban további, a rendszerindításkor, még az adott futási szintre váltás előtt végrehajtandó parancsok adhatók meg. Sok tekintetben hasonlít a DOS-rendszerek AUTOEXEC.BAT fájljára.

boot.setup

Ennek a parancsfájlnak a végrehajtása az egyfelhasználós módból bármely másik futási szintre váltáskor történik meg és több olyan alapvető beállításért felelős, mint például a billentyűzetkiosztás vagy a virtuális konzolok inicializálása.

halt

Ez a parancsfájl csak 0-ás vagy 6-os futási szintre váltáskor hajtódik végre. Vagy halt (leállítás), vagy reboot (újraindítás) formájában van végrehajtva. A halt meghívási módjától függ, hogy a rendszer leállítása vagy újraindítása történik.

rc

Ez a parancsfájl meghívja az aktuális futási szint megfelelő leállító parancsfájljait és elindítja az újonnan kiválasztott futási szint indító parancsfájljait.

Saját parancsfájlok is létrehozhatók és egyszerűen beilleszthetők a fent leírt sémába. Az egyedi parancsfájlok formázásával, elnevezésével és rendszerezésével kapcsolatos információt az LSB-specifikáció, valamint az init, init.d, chkconfig és insserv kézikönyvoldalak tartalmaznak. Érdemes megtekinteni a startproc és killproc kézikönyvoldalat is.

[Warning]A hibás init parancsfájlok lefagyaszthatják a rendszert.

A hibás init parancsfájlok lefagyaszthatják a gépet. Az ilyen parancsfájlokat nagy körültekintéssel szabad csak módosítani, ha lehetséges, szigorú tesztelésnek kitéve a többfelhasználós környezetben. Az init parancsfájlokkal kapcsolatos további hasznos információ: 17.2.1. szakasz - Futási szintek.

Ha egy adott programhoz vagy szolgáltatáshoz készít egyéni init parancsfájlt, használja az/etc/init.d/skeleton fájlt sablonként. Mentse el a fájl egy példányát új néven, majd módosítsa a megfelelő program- és fájlneveket, elérési utakat és egyéb részleteket. A parancsfájl természetesen tovább finomítható, hogy az init eljárás a megfelelő műveleteket indítsa el.

A felső részben látható INIT INFO blokk a parancsfájl kötelező része, és feltétlenül módosítani kell. Lásd:17.1. példa - Egy minimális INIT INFO blokk .

17.1. példa - Egy minimális INIT INFO blokk

### BEGIN INIT INFO
# Provides:          FOO
# Required-Start:    $syslog $remote_fs
# Required-Stop:     $syslog $remote_fs
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Description:       Start FOO to allow XY and provide YZ
### END INIT INFO

Az INFO blokk első sorában a Provides: rész után adja meg az init parancsfájl által vezérelt program vagy szolgáltatás nevét. A Required-Start: és Required-Stop: sorokban adja meg az összes szolgáltatást, amelyet az adott szolgáltatás elindítása vagy leállítása előtt el kell indítani vagy le kell állítani. Ez az információ később kerül felhasználásra a futásiszint-könyvtárakban található parancsfájlnevek számozásának előállításakor. A Default-Start: és Default-Stop: szakaszban adja meg azokat a futási szinteket, amelyekben a szolgáltatást automatikusan el kell indítani, illetve le kell állítani. Végül a Description: részben adja meg a kérdéses szolgáltatás rövid leírását.

A futásiszint-könyvtárak (/etc/init.d/rc?.d/) és az /etc/init.d/ könyvtárban található parancsfájlok közötti lánc létrehozásához adja ki az insserv új_parancsfájl_neve parancsot. Az insserv program kiértékeli az INIT INFO fejlécet és létrehozza a futásszint-könyvtárakban (/etc/init.d/rc?.d/) található parancsfájlok elindításához és leállításához szükséges láncokat. A program a megfelelő indítási és leállítási sorrendre is figyel: az egyes futási szinteken megfelelően számozza a láncok neveit. Ha inkább egy grafikus eszközzel kívánja létrehozni az ilyen láncokat, akkor használja a YaST által biztosított szerkesztőt (17.2.3. szakasz - Rendszerszolgáltatások (futási szintek) beállítása a YaST segítségével).

Ha az /etc/init.d/ könyvtárban már meglévő parancsfájlt kell integrálni egy meglévő futtásiszint-sémába, akkor a futásiszint-könyvtárakban rögtön létrehozhatók a láncok, akár az insserv segítségével, akár a YaST futásszint-szerkesztőjében a megfelelő szolgáltatás engedélyezésével. A módosítások a következő újraindításkor kerülnek alkalmazásra – az új szolgáltatás automatikusan el fog indulni.

A láncokat ne állítsa be kézzel. Ha az INFO blokkban valami nem jól van megadva, akkor problémák fognak felmerülni az insserv parancs későbbi, más szolgáltatásra vonatkozó futtatásakor. A kézzel felvett szolgáltatás törlődni fog a parancsfájlra vonatkozó insserv következő futtatásakor.

Rendszerszolgáltatások (futási szintek) beállítása a YaST segítségévelRendszerszolgáltatások (futási szintek) beállítása a YaST segítségével

A YaST-modul elindítása után (YaST+Rendszer+Rendszerszolgáltatások (futási szintek) megjelenik a rendelkezésre álló szolgáltatások áttekintő listáját és a szolgáltatások aktuális állapotát (engedélyezett/letiltott). Döntse el, hogy a modult Egyszerű módban vagy Szakértői módban kívánja használni. Az alapértelmezett Egyszerű mód a legtöbb célnak megfelelő. A baloldali oszlop a szolgáltatás nevét, a középső az aktuális állapotát, a jobboldali pedig egy rövid leírást jelenít meg. A kiválasztott szolgáltatáshoz az ablak alsó részében egy részletesebb leírás jelenik meg. A szolgáltatás engedélyezéshez a táblázatban válassza azt ki, majd kattintson az Engedélyezés menüpontra. A szolgáltatás ugyanezekkel a lépésekkel tiltható le.

17.1. ábra - Rendszerszolgáltatások (futási szint)

Rendszerszolgáltatások (futási szint)

Ha finomabban kívánja szabályozni a futási szinteket, amelyben a szolgáltatás elindításra vagy leállításra kerül, illetve ha az alapértelmezett futási szintet kívánja módosítani, akkor először válassza ki a Szakértői mód menüpontot. Ebben a módban a párbeszédablak az alapértelmezett futási szintet („initdefault” , az a futási szint, amelyen a rendszer alapértelmezés szerint elindul) jeleníti meg legfelül. Normális esetben a SUSE Linux Enterprise rendszer alapértelmezett futási szintje az 5 (teljes többfelhasználós mód hálózattal és X rendszerrel). Értelmes alternatíva lehet a 3-as futási szint (teljes többfelhasználós mód hálózattal).

A YaST párbeszédablak segítségével kiválasztható egy másik futási szint, mint új alapértelmezett érték (17.1. táblázat - A használható futási szintek). Az ablakban lévő táblázat segítségével letilthatók és engedélyezhetők az egyes szolgáltatások és démonok. A táblázat felsorolja a rendelkezésre álló szolgáltatásokat és démonokat, megjeleníti, hogy pillanatnyilag engedélyezve vannak-e a rendszeren, és ha igen, akkor mely futási szintekhez. Ha az egér segítségével kiválasztotta az egyik sort, akkor jelölje meg az azon futási szintek melletti négyzetet (B, 0, 1, 2, 3, 5, 6 és S), amelyeken a kiválasztott szolgáltatást vagy démont futtani kívánja. A 4-es futási szint nincs megadva, így létre lehet hozni egy egyedi futási szintet. A táblázatos áttekintés alatt az éppen kiválasztott szolgáltatás vagy démon rövid leírása látható.

Az Indítás, Leállítás vagy Frissítés menüpontok segítségével állapítsa meg, hogy a szolgáltatást kell-e aktiválni. Az Állapot frissítése gomb megnyomására a rendszer ellenőrzi az aktuális állapotot. A Beállítás vagy Visszaállítás gombokkal megadható, hogy a módosítások alkalmazásra kerüljenek-e a rendszeren, vagy a beállítások visszaállításra kerüljenek-e a futásiszint-szerkesztő elindítása előtt érvényes értékekre. A Befejezés gomb megnyomására a program lemezre menti a módosított beállításokat.

[Warning]A hibás futásiszint-beállítások tönkretehetik a rendszert.

A hibás futásiszint-beállítások a rendszert haszálhatatlanná tehetik. Csak akkor alkalmazzon egy módosítást, ha teljesen tisztában van a következményekkel.