You are on page 1of 5

2019/02/11 19:12 1/5 Boot

< Linux

Boot
Szerző: Sallai András
Copyright © Sallai András, 2011, 2013, 2017
Licenc: GNU Free Documentation License 1.3
Web: http://szit.hu

Bevezetés

A hibaelhárításhoz fontos ismerni a rendszerindítási folyamatot. Az alábbi leírásban megnézzük


pontról-pontra mi történik a rendszer indulásakor. A leírás egy része a https://wiki.debian.org/systemd
oldal egy részének a fordítása.

Boot folyamatok

A következő felsorolásban, megtekinthetjük milyen rendszerek vesznek részt a rendszer


elindulásában, sorrendben:

BIOS – a BIOS futtatja a MBR-ben található kódot


MBR – az MBR futtatja a GRUB-ot
GRUB – A GRUB futtatja kernelt
kernel – futtatja az /sbin/init folyamatot
init – futtatja a futási szintű programokat
futási szinteken induló programok

A gép bekapcsolása után a memória üres, a processzor alapállapotba kerül. A végrehajtást a gép
BIOS-a számára adja át, amelynek címe:

0xFFFF FFF0

A BIOS a hardver tesztelése és előkészítése után, betölti az indítható eszköz fő betöltőszektorát, az


MBR-t. Az MBR átadja a vezérlést az indítani kívánt eszköz betöltő szektorára (boot szektor). A betöltő
szektor elindítja a kernelt, ha kell paraméterezve.

A kernel betöltése után szükségünk van egy rendszerpartícióra. Ha fájlrendszer meghajtója modulként
van fordítva, akkor ez a rendszerpartíció közvetlenül nem csatolható. A megoldás egy initrd nevű
képfájl és a linuxrc script vagy bináris használata jelenti. Ezek segítségével felcsatolható a valódi
rendszerpartíció, ahol elindul a systemd. A Debian 9 rendszeren ez valójában még mindig egy init
folyamat, de már a systemd része. A CentOS 7-en már konkrétan a systemd nevű démon indul.

A systemd a beállításoknak megfelelően elindítja a rendszer szolgáltatásait.

A rendszer a SysVinit korában úgynevezett futási szinteket tartalmazott. Minden futási szinten más-
más szolgáltatás, indult, állt le. A Systemd rendszerben a számokat nevek váltják le, amelyeket nem

SzitWiki - https://szit.hu/
Last update: 2017/10/02 20:22 oktatas:linux:boot https://szit.hu/doku.php?id=oktatas:linux:boot

szinteknek, hanem céloknak (target) nevezünk.

A systemd

A systemd a linuxos rendszer és szolgáltatásainak menedzsere. A DebianJessie változata óta a Debian


rendszerekben alapértelmezés a SysV után. A systemd kompatibilis a SysV-al és az LSB init
scriptekkel.

A systemd tulajdonságai:

agresszív párhuzamosságot biztosít


socket és D-Bus aktiválást használ a szolgáltatások indításához
a démonok igény szerint variálva indíthatók
tranzakciós függőségkezelési logikát alkalmaz
a linuxos cgroupok segítségével követi a folyamatokat
támogatja a pillanatfelvételt és a helyreállítást
támogatja a mount és automount pontokat

Az induló rendszeren a systemd kapja a 1-es PID-et. A Debian ps ax kimenete megtéveszthet minket,
mert létezik a /sbin/init, ami valójában egy szimbolikus link a /lib/sysmtemd/systemd állományra.

A systemd feladatai unitokba vannak szervezve. A legáltalánosabb unitok a szolgáltatás (.service),


csatolási pont (.mount), eszközök (.device), socketek (.socket) vagy az időzítők (.timer). A példa
kedvééért a a secure shell démon unitja ssh.service.

Minden unit egy önálló konfigurációs fájlban van definiálva. A unit fájlok kiterjesztése mutatja annak
típusát. A unitok a /lib/systemd/system könyvtárban találhatók. Ha egy azonos nevű fájl létezik a
/etc/systemd/system könyvtárban, akkor a systemd figyelmen kívül hagyja a /lib/systemd/system
könyvtárban lévőt. A rendszergazda a /etc/systemd/system könyvtárban elhelyezett fájlokkal szabja
testre a rendszert. Egyes unitokat a systemd úgy állít elő, hogy a fájlrendszerben nem tartozik hozzá
állomány.

A systemd minden szolgáltatást egy erre a célra kijelölt vezérlőcsoportba (cgroup) helyez. A modern
kernelek támogatják az erőforrások csoportok alapján történő elosztását.

Függelék

A SysVinit futási szintjei

Nyolcféle futási szinttel van dolgunk.

0 A rendszer leállásakor végrehajtódó műveletek.


6 Újraindításkor végrehajtandó műveletek.
S A rendszer indulásának egy fázisában egyfelhasználós mód.
1 Alaprendszert indító egyfelhasználós mód
2 Általános több felhasználós mód (Debian GNU/Linuxon alapértelmezés).
3 Általános több felhasználós mód.

https://szit.hu/ Printed on 2019/02/11 19:12


2019/02/11 19:12 3/5 Boot

4 Általános több felhasználós mód.


5 Általános több felhasználós mód.

Az aktuális futási szint a következő paranccsal kérdezhető le:

runlevel

Az eredmény például:

N 2

Az eredményben az előző futási szint is megjelenik. Ha az előző „N”, akkor nem volt még más futási
szint.

Minden futási szintnek van egy könyvtára, ahova scripteket linkelünk be szimbolikusan. Ezek a
scriptek lefutnak az adott futási szintre lépéskor.

Az egyes futási szinteknek megfelelő könyvtárak Debian GNU/Linuxon:

/etc/rc0.d
/etc/rc1.d
/etc/rc2.d
/etc/rc3.d
/etc/rc4.d
/etc/rc5.d
/etc/rc6.d
/etc/rcS.d

Mint azt fentebb említettük ide nem szokás állományokat másolni, ide csak linkelünk. Az egyes
szolgáltatások scriptjei a következő könyvtárban szokás elhelyezni:

/etc/init.d/

Ebből a könyvtárból linkelünk az egyes futási szintekre.

Ha belenézünk rc0.d, stb, könyvtárba, azt látjuk, hogy minden link egy S vagy K betűvel kezdődik,
majd egy kétjegyű szám követi. Az S karaktert akkor használjuk, ha azt szeretnék, hogy az adott
futási szintre lépre az adott szolgáltatás elinduljon. A K betűt pedig akkor használjuk, ha leakarjuk
állítani a szolgáltatást. A számok prioritást határoznak meg. Amely linknek kisebb a száma, az a
szolgáltatás előbb indul.

Minden többfelhasználós futási szint végén a következő script lefut:

/etc/rc.local

Scriptek, démonok indítása, leállítása

Ha szeretnénk egy scriptet induláskor lefuttatni, akkor két lehetőségünk van. A legegyszerűbb ha
/etc/rc.local fájlban felveszem, útvonalastul, mindenestül, mivel ez minden többfelhasználós futási
szinten (2, 3, 4, 5) lefut.
SzitWiki - https://szit.hu/
Last update: 2017/10/02 20:22 oktatas:linux:boot https://szit.hu/doku.php?id=oktatas:linux:boot

A másik lehetőség, hogy beteszem egy futás szintre. Másoljuk a scriptet a következő könyvtárba:

/etc/init.d

Állítsuk be például a sajat.sh nevű scriptet, amelynek útvonala a következő:

/root/bin/sajat.sh

cp /root/bin/sajat.sh
update-rc.d sajat.sh defaults

Most töröljük a futásiszintekről:

update-rc.d sajat.sh remove

Ha precízebbek szeretnénk lenni a scriptet a következő minta alapján készítsük el:

/etc/init.d/skeleton

Ezen fájl alapján készítsük el a script fejlécét a BEGIN INIT INFO és END INIT INFO közötti rész
scriptünkbe másolásával, átírásával.

Olvasni valók:

man update-rc.d
man insserv

Linkek

https://wiki.debian.org/systemd
http://www.thegeekstuff.com/2011/02/linux-boot-process/
http://unixlinux.tmit.bme.hu/A_bootfolyamat
http://oldfield.wattle.id.au/luv/boot.html
http://milindchoudhary.wordpress.com/2009/03/30/linux-boot-process/
http://en.wikipedia.org/wiki/Linux_startup_process
http://lateral.netmanagers.com.ar/stories/23.html
http://ubuntu.hu/node/13573

Kapcsolódó:

http://hu.wikipedia.org/wiki/Boot
http://wiki.hup.hu/index.php/Pc_boot_folyamat
http://en.wikipedia.org/wiki/NTLDR

Élet systemd nélkül:

http://without-systemd.org/
http://without-systemd.org/wiki/index.php/Debian_Stretch

https://szit.hu/ Printed on 2019/02/11 19:12


2019/02/11 19:12 5/5 Boot

From:
https://szit.hu/ - SzitWiki

Permanent link:
https://szit.hu/doku.php?id=oktatas:linux:boot

Last update: 2017/10/02 20:22

SzitWiki - https://szit.hu/

You might also like