Kiszolgálók üzemeltetése Iványi Péter
Bootolás és leállítás Bár viszonylag egyszerű és csak ritkán van rá szükség, minden adminisztrátornak tudnia kell hogyan zajlik!
Bootstrap Bootolás A számítógépnek kell az operációs rendszer hogy valamit csinálhasunk, de az operációs rendszert is el kell valahogy indítani anélkül hogy már lenne futó operációs rendszer A folyamat nagyjából ugyanaz minden Unix-on Indíthatjuk automatikusan vagy manuálisan Gép bekapcsolásnál (cold boot) Újra bootolás esetén (warm boot)
Bootolás Folyamata: Hardware elemek érzékelése Firmware programok automatikus futtatása Megkeresni és futtatni a boot programot (általában a diszk egy meghatározott helyén van) Megkeresni és futtatni a kernel-t (a first stage boot program futtatja) Kernel inicializálja magát, magas szintű hardware ellenőrzés, device driverek betöltése Kernel indítása, az init processz futtatása ami az alrendszereket fogja indítani
Boot áttekintése
Bootolás Először a BIOS kapja meg a vezérlést POST (POwer on Self Test) Ellenőrzi a hardware-t Megszámolja a device-okat és inicializálja őket Hibákat a hangszórón keresztül hangjelzéssel jelzi Csipogások száma alap laponként változik (dokumentációt meg kell nézni) képernyőn is jelezheti
Nem csak POST Szolgáltatásai is vannak BIOS Bootolás után a POST-ot nem használjuk tovább, de a szolgáltatások maradnak
Bootolás BIOS megkeresi honnan lehet bootolni floppy CD-ROM merev lemez CMOS tárolja a bootolási sorendet
Bootolás merev lemezről Merev lemez esetén Betölti az MBR-t a memóriába (RAM) és átadja a vezérlést MBR = program + partíciós tábla
Futtatható kód és hiba üzenetek MBR, stage 1 boot loader 0xAA55 ellenőrzésra
Bootolás merev lemezről MBR program megkeresi az aktív, (bootolható) partíciót a táblában majd a lemezen A partíció első szektorát betölti a memóriába Ez a boot szektor, boot record Ez egy boot programot tartalmaz (bootstrap code) Stage 2 bootloader Az MBR átadja a vezérlést a Stage 2 boot programnak
Boot szektor? Partíciók ismét
Stage 2 boot loader Tulajdonképpen ez a kernel loader Feladat most: A kernel betöltése Esetleg egy RAM diszk betöltése
Linux boot loader Stage 1 + Stage 2 boot loader LILO (Linux Loader) vagy Szektorokkal dolgozik GRUB (GRand Unified Bootloader) Ismeri a file rendszert Igazából 3 fázisú a bootolás Stage 1 Stage 1.5, ami érti a file rendszert, (ext2, ext3) Stage 2, file kezeléssel betöltés
Stage 2 Linux boot loader /etc/grub/menu.lst Elérhető kernelek listája Beállításokat lehet végezni, paramétereket lehet megadni Betölti a kernelt és a RAM diszket (initrd) Átadja a vezérlést a kernel-nek
kernel A rendszer magja, a kernel mindvégig fut amíg az op rsz Egy futtatható file AIX FreeBSD HP-UX Linux Tru64 Solaris /unix /kernel /stand/vmunix /boot/vmlinuz /vmunix /kernel/genunix
Kernel betöltés A kernel igazából egy összetömörített kép zimage (< 512kB) bzimage(> 512 kb) Igazából problémás a betöltés valós módban (real mode) csak 1 MB RAM érhető el 20 bites címzés Régebbi BIOS csak 16 MB-ot tud kezelni
Kernel betöltés, 1. Tömörítetlen kernel (< 512 kb) 64k -ról a 4K-s címre másolja Felülírja a BIOS kódot, nem gond, Linux nem használja Védett módba lép (protected mode) Teljes memória elérhető
Kernel betöltés, 2.
Kernel betöltés
Kernel betöltés
File eleje egy program Kernel boot Minimális hardware inicializálás Kitömöríti a kernelt a memóriába Ha van RAM diszk, azt is memóriába tölti Elindítja a a kernelt
Kernel boot -Megszakítások -Memória beállítás -init felhasználói processzus indítása (kernel_thread) -idle processzus indítás -scheduler indítás
Kernel + initrd Kernel kicsi lehet, mivel a modulok és kiegészítő programok az initrd-ben találhatók A root file rendszer mountolása előtti környezetét biztosítja
Kernel + initrd Boot loader betölti a kernelt és /dev/initrd tartalmát a memóriába Kernel induláskor kitömöríti az /dev/initrd tartalmát a /dev/ram0 device-ra Be-mountolja /dev/ram0 -t mint kezdeti root file rendszer Végrehajtja a /linuxrc file-t Az igazi root file rendszert betölti
init A kernel 1-es processz azonosítóval (PID) elindítja az /sbin/init processzust Minden processzus őse Első felhasználói szintű alkalmazás A szabványos C könyvtárral van összefordítva
init feladatai Filerendszer ellenőrzés Filerendszerek betöltése (mount) Lapozó területek inicializálása Filerendszer takarítás, pl. /tmp törlése Rendszer processzusok indítása Daemon-ok Levelezési Nyilvántartási Log cron
init feladatai Hálózat indítása Felhasználói bejelentkezés biztosítása getty processzus indítása
Inicializálás Parancs script-ekkel történik Szöveges file-ok /etc könyvtárban találhatók A rendszer állapotai Kikapcsolva Single-user mód Multi-user mód
A rendszer állapotai System V további működési szinteket állapít meg Szint 0 1 S vagy s 2 3 4,7,8,9 5 6 Q, q, a, b,... Cél Leállított állapot, ki lehet kapcsolni Rendszer adminisztrációs állapot, egy felhasználó!!! Single-user mód Multi-user mód, Unix-tól függően Távoli filerendszer állapota: szervereknek az alapvető futási szintje Adminisztrátor adja meg Mint a 3. szint, de grafikus felület is elindul Újraindítás, 0. szint és egy újabb szint elindítása Pseudo állapotok
$ who -r A rendszer állapotai. run level 3 Mar 14 11:14 3 0 S $ runlevel Megadja hogy mely szinten fut a rendszer Linux-ban a 3-as szint az alap futási szint
Inicializáló scriptek /etc/inittab /etc/rc0 /etc/rc2... /etc/init.d/k<alrendszer> /etc/init.d/s<alrendszer> /etc/rc0.d/k<n><alrsz> ->../init.d/<alrsz> /etc/rc2.d/k<n><alrsz> ->../init.d/<alrsz>
Szöveges file /etc/inittab Az alap szintet is tartalmazza id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1... l6:6:wait:/etc/rc.d/rc 6 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2
/etc/inittab 1:2345:respawn:/sbin/getty 9600 tty1 2, 3, 4, 5 futási szinteken mindig fut Megjeleníti a login sort a console-on (tty1) 2:234:respawn:/sbin/getty 9600 tty2 2, 3, 4 futási szinteken mindig fut (újraindítja, ha leáll) Megjeleníti a login sort a console-on (tty2) l3:3:wait:/etc/init.d/rc 3 Egyszer fut le, amikor 3. szintre váltunk ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now Akkor fut amikor control-alt-delete-t megnyomják
K és S file-ok Szimbólikus linkek az /etc/init.d/ könyvtárban található file-okra Parancs scriptek K file: /etc/rc.d/init.d/<command> stop A számozás a sorrendet adja meg
rc3.d file-ok K05innd ->../init.d/innd K05saslauthd ->../init.d/saslauthd K10psacct ->../init.d/psacct K12cWnn ->../init.d/cwnn K12FreeWnn ->../init.d/freewnn K12kWnn ->../init.d/kwnn K12mysqld ->../init.d/mysqld K12tWnn ->../init.d/twnn... K55routed ->../init.d/routed K61ldap ->../init.d/ldap
rc3.d file-ok... S08ip6tables ->../init.d/ip6tables S08ipchains ->../init.d/ipchains S08iptables ->../init.d/iptables S09isdn ->../init.d/isdn S10network ->../init.d/network S12syslog ->../init.d/syslog S13portmap ->../init.d/portmap S14nfslock ->../init.d/nfslock...
/etc init.d rc0.d rc2.d inittab rc0 rc2 cron nfs tcp K75cron K85nfs K90tcp K30tcp K40nfs S30tcp S40nfs
init után Miután az rc könyvtárban levő file-okat feldolgoztuk az inittab elindít/sbin/mingetty processzus(oka)t Virtuális terminálok tty eszközökhöz való hozzáférést biztosít
Összefoglalva
Bootolás vizuálisan Megszakítások kezelése bootloader