Startsystému,procesinit, SolarisServiceManagement Facility Administrace OS UNIX Ing. Zdeněk Muzikář, CSc., Ing. Jan Žd árek, Ph.D. Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti c Jan Žd árek, 2011
Obsah Boot systému a startup (SVr4, S10), procesinit, Solaris Service Management Facility. Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 2/24
Úvod Komplexní (složitý) OS komplexní (složitý) proces zapínání a vypínání. Důvod: Zajištění správného pořadí, splnění závislostí. Bootování (bootstrapping), jádro, init, startup, používání OS, runlevel a jeho změna, vypínání (shutdown). Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 3/24
Bootování Vstup: zapnutý HW (počítač). Výstup: běžící počítač, spuštěn nějaký OS loader. Spuštění počítače (PROM, EEPROM, FPROM), HW testy, zcela závislé na typu a výrobci počítače, musí podporovat minimálně načtení superbloku (boot bloku), kde je SW (OS loader), který umí načíst jádro z disku. Často bývá dokonce víceúrovňový. PC BIOS, primitivní (ale funkční) řešení. Jiné počítače často mají mocnější nástroje: SPARC OK prompt, miniaturní OS v PROM (monitor). OpenBoot (IEEE 1275) Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 4/24
Bootování PC Vstup: zapnutý PC HW. Výstup: spuštěn nějaký OS loader. PC BIOS hledání a inicializace (některých) HW zařízení: operační pamět, klávesnice, porty,..., a zařízení, z něhož se má spouštět OS (BIOS: boot device ). Čtení Master Boot Recordu (1. sektor, 512 B, boot sektor ), tabulka rozdělení disku. Zavaděč může číst další potřebné sektory se svým kódem (čtení fs). Zavaděč zavede do paměti a předá řízení jádru OS nebo jinému zavaděči (chain loader). LILO (Linux Loader) / GRUB (Grand Unified Boot Loader) Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 5/24
LILO (Linux Loader) MBR / boot sektor, /etc/lilo.conf, Bootování PC LILO konfigurace přímo v boot sektoru, nutné spustitlilo. boot=/dev/hda root=/dev/hda2 install=/boot/boot.b map=/boot/map delay=50 image=/boot/vmlinuz-2.6.22 label=linux read-only image=/boot/vmlinuz-2.4.20 label=zaloha read-only Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 6/24
Bootování PC GRUB GRUB (Grand Unified Boot Loader) komplexnější než LILO, přitom snadno konfigurovatelný; GRUB 2: složitý= moderní? MBR / boot sektor, /boot/grub/*; /boot/grub/grub.conf, konfigurace v souborech, není nutné vždy po změně konfigurace zapsat boot sektor. (Co se stane po zrušení partition s konfiguračními soubory?) default=0 timeout=5 title Linux root (hd0,0) kernel /boot/vmlinuz-2.6.22 ro root=/dev/hda2 title Zaloha root (hd0,0) kernel /boot/vmlinuz-2.4.20 ro root=/dev/hda2 Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 7/24
Bootování PC podpora víceos Podporuje LILO, GRUB, Win NT loader,... Rozdíly jsou jen v pohodlnosti konfigurace. Postup instalace: nejprve vždy Windows a jiné proprietární OS, některé verze bez dotazu přepíší MBR, některé verze Windows požadují bootovat z první partition, Win NT loader lze přemluvit k předání řízení jinému zavaděči,c:\boot.ini. LILO: C:\boot.ini other=/dev/hda1 [Operating Systems] label=ms W... table=/dev/hda C:\linboot.b="Linux boot sector" other=/dev/hda4... Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 8/24
Startup spuštěníjádra Vstup: Běžící zavaděč nalezl soubor s jádrem, umístil ho do RAM a předal mu řízení. Výstup: Jádro běží a spustilo první proces (init). Inicializace jádra test operační paměti, alokace reálné paměti pro struktury jádra, procesům je k dispozici zbytek. Detekce a inicializace HW. Vytvoření procesů jádra (fsflush /kflushd,kpiod, kswapd,... ) Vytvoření prvního skutečného procesu init. Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 9/24
Startup spuštěnísystému Vytvořením procesuinit hlavní úloha jádra při startupu končí. Následuje fáze nazývaná startup. Existuje několik standardních řešení: 1. AT&T System V: systém pracuje v tzv. runlevelu, skripty jsou organizovány v adresářích dle runlevelů. 2. BSD: jeden skript/etc/rc volá další a postupně inicializuje a spustí celý systém. 3. Solaris 10: nová koncepce, stejný cíl nastartovat potřebné služby při splnění nutných závislostí (paralelní start, XML)svc. Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 10/24
Startup spuštěnísystému Vytvořením procesuinit hlavní úloha jádra při startupu končí. Vstup: Jádro běží a spustilo první proces (init). Výstup: Systém je v požadovaném runlevelu. Runlevel {0,1,S,s,2,3,4,5,6, ale mohou být i další (obvykle se nepoužívají)}. Definovaný stav systému se spuštěnými/vypnutými službami (daemony). Administrátor může systém převést do libovolného runlevelu R příkazem #/sbin/telinit R; /sbin/init R. Konfigurace, spuštění/vypnutí služeb a zařízení pro každý runlevel: rc-skripty. #/sbin/telinit q Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 11/24
Startup runlevel runlevel popis 0 přechod k vypnutému systému, Sol: PROM monitor 1 přechod do single user módu, Sol: administrative S,s single user mód = minimum procesů, údržba, opravy 2 multiuser, nonetwork 3 multiuser, network 4 normálně nepoužívaný 5 GNU/Linux: xdm (X11), Sol: power-off 6 restart systému a,b,c normálně nepoužívané 7,8,9 GNU/Linux, nepoužívané Runlevely 0, 1 a 6 jsou rezervované. Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 12/24
Startup rc-skripty (1) /etc/inittab Formát: id:runlevels:action:process (Gentoo): id:3:initdefault: # Default runlevel. si::sysinit:/sbin/rc sysinit # System init, mount local filesystems, etc. rc::bootwait:/sbin/rc boot # Further system init, the boot runlevel. l0:0:wait:/sbin/rc shutdown l1:s1:wait:/sbin/rc single l2:2:wait:/sbin/rc nonetwork l3:3:wait:/sbin/rc default l6:6:wait:/sbin/rc reboot #z6:6:respawn:/sbin/sulogin # TERMINALS c1:12345:respawn:/sbin/agetty -f /etc/issue.logo 38400 tty1 linux c2:2345:respawn:/sbin/agetty 38400 tty2 linux # SERIAL CONSOLES #s0:12345:respawn:/sbin/agetty 9600 ttys0 vt100 ca:12345:ctrlaltdel:/sbin/shutdown -r now pf:12345:powerfail:/sbin/shutdown -h now "Power Failure" x:a:once:/etc/x11/startdm.sh Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 13/24
Startup rc-skripty (2) RC-skripty: /etc/init.d/*; /etc/rc.d/*;... Konfigurace: /etc/sysconfig/*; /etc/conf.d/*;... Identifikace a zamykání: /var/lock/* (touch files); /var/run/* (pids);... Většina GNU distribucí má potřebu definovat svůj rc-systém trochu jinak, a umístit potřebné soubory trochu jinde než ostatní malé, ale podstatné rozdíly. Princip fungování ale zůstává stejný AT&T SV. Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 14/24
Singleuser/Multiusermode UNIXový systém může běžet a vykonávat užitečnou činnost zcela samostatně, bez jakéhokoliv GUI nebo jiné možnosti interaktivní práce uživatelů. Chceme-li počítač používat (lokální text/grafika), musíme nechat spustit program poslouchající na terminálu (getty; xdm; gdm). + podpora přihlašování (login; sulogin). Vzdáleně sshd. V singleuser módu typicky běží jen jeden programgetty na jednom (virtuálním) terminálu (sulogin). V multiuser módu typicky běží vícegetty a případně i xdm (X11). Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 15/24
Restartsystému/Shutdown Některé OS považují restart systému za běžný způsob, jak řešit problémy. Dobře nakonfigurovaný UNIXový systém není potřeba restartovat. (Některé systémy dokonce umí vyměnit i jádro OS bez restartu.) Pokud to potřeba je, systém není vhodné vypnout násilně (ztráta dat cache, poškození fs). HW řešení: odpojení přívodu energie; CPU reset pin. SW řešení: telinit, shutdown, halt; reboot, poweroff. Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 16/24
/sbin/init: Procesinit Na mnoha UNIXech je to první skutečný proces vytvořený po startu jádra, PID 1, je to proces, lze mu posílat signály (#kill -HUP 1), jeho prostřednictvím lze požádat o změnu RL, #/sbin/telinit 6. Má významné postavení mezi procesy: prarodič všech procesů v systému, adoptuje osiřelé procesy, adoptuje a zabraňuje uváznutí procesů v osiřelých skupinách procesů. Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 17/24
SolarisServiceManagement Facility
ServiceManagement Facility (1) Systém UNIXových služeb může být dost spletitý. SMF je jedním z řešení, inspirace pro GNU/Linux varianty. Jádro podporuje vztah služba proces restarter služby. SMF zjednodušuje správu služeb: automatická obnova po chybě SW/HW/administrátora. Služba jako objekt s metodami. Instance objektu. Výpis: svcs(1). Management: svcadm(1m), svccfg(1m). Vysvětlení chyb: svcs -x (+log soubory). Zap/vyp. služby persistentní přes patches/upgrade. Delegace práv, viz přednáška o RBAC. rc-skripty (služba legacy,/etc/rc?.d) se spustí po nativních SMF službách. Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 19/24
ServiceManagement Facility (2) Paralelní start služeb se zachováním závislostí. Automatický restart se zachováním závislostí. Hlídání běhu služeb. Snapshot konfigurace služeb. V kritické situaci: Maintenance mode (terminál). Řízení výpisů při startu, implicitně jen závažné, tichý start. Cenou za tento komfort je menší vnitřní přehlednost, použití binární databáze služeb ( registr ), konfigurace je ale stále textová, ale v XML. /usr/share/lib/xml/dtd/ /var/svc/manifest/ /etc/svc/repository.db Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 20/24
ServiceManagement Facility (3) Specifické URI: FMRI (Fault Managed Resource Identifier) FMRI služeb spravovaných SMF má předponu specifikující schéma: svc. syslogd(1m): (absolutní URI) svc://localhost/system/system-log:default svc:/system/system-log:default system/system-log:default Na lokálním systému dokonce jen: system-log:default system-log Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 21/24
ServiceManagement Facility (4) Milníky (milestones): svc:/milestone/multi-user-server:default multi-user, sysconfig, single-user, name-services, network, devices, patching. Implicitní se zapisuje do registru : svcadm milestone -d milestone/single-user:default telinit 1 svcadm milestone milestone/single-user:default Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 22/24
ServiceManagement Facility (5) Ruční ovládání služeb: /etc/init.d/ntp stop svcadm disable -t network/ntp:default /etc/init.d/ntp start svcadm enable -t network/ntp:default /etc/init.d/ntp stop && /etc/init.d/ntp start svcadm restart network/ntp:default kill -HUP cat /var/run/ntp.pid svcadm refresh network/ntp:default Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 23/24
ServiceManagement Facility (6) Sít ové službyinetd(1m) byly pro SMF přepsány. Konverze inetd.conf inetconv(1m). Jan Žd árek: BI-ADU Zapínání a vypínání OS,init, S10 SMF str. 24/24