Linux Start - proces init 

   Home   Hledání   Autor...         Aktualizace 22.5.2005.
Používám distribuce RedHat a Mandrake. Více o verzi software, hardware, licenci a těchto www ve volbě "Autor...".

Zde naleznete : Procesy či-li Služby, Init, Inetd a Xinetd, Syslog, Cron.

Procesy či-li Služby

**// Všechny omezené systémové zdroje ( paměť, disky... ) jsou řízeny jádrem. Vše ostatní v systému jsou procesy. Instalace Linuxu má 5 základních procesů "init", "inetd", "xinetd", "syslog", "cron".

**// Proces je nezávisle běžící program s vlastními zdroji RAM, CPU tzv. instance programu. Jeden program může být spuštěn vícekrát - násobná instance. Vznik nového procesu zajistí systémové volání - služba poskytovaná jádrem nazvaná "fork" ( větvení, forking ) a jde vlastně o dělení 1 procesu na 2 a více.

**// Běžící proces se nazývá ( daemon ) démon jestliže po spuštění opustí kontrolu terminálu z něhož startoval. Se systémem poté komunikuje pomocí určitých prostředků čili kanálů meziprocesorové komunikace ( IPC - interprocess communication ) nebo zápisem do systémového protokolu či do jiného souboru na disk.

**// Procesy běží v jedné ze 7 existujících urovní. 0.úroveň - Pozastavit spuštění systému. 1.úroveň - Jednouživatelský mód bez připojení sítě. 2.úroveň - Multiuživatelský režim bez NFS. 3.úroveň - Plný multiuživatelský režim, provoz v textovém rozhraní. 4.úroveň - Nepoužito. 5.úroveň - Jako úroveň 3 s grafickým rozhraním "X Window". 6.úroveň - Restart systému.

Aktivace procesu init a jeho pomocí následná aktivace ostatních procesů inetd a xinetd, syslog, cron je v různých distribucích v detailech různá. Níže popsané aktivity init procesu a jemu následujících odpovídají distribuci Red Hat 7.0 CZ / 7.1 US.

Proces init

Po inicializaci jádro pouští 1.proces uživatelské úrovně "/sbin/init". Tento všem nadřazený rodičovský program má identifikační číslo 1 ( PID ProcessID ) a je zcela řízen souborem "/etc/inittab".

Soubor "/etc/inittab" aktivuje programy - servery - démony a další procesy. Jeho obsah závisí na konkrétní distribuci. Aktivuje:

1 / Default úroveň ( runlevel ) používání Linuxu ( initdefault ).
2 / "/etc/rc.d/rc.sysinit" puštěný jen 1 x při BOOT. "init" nastaví základní konfiguraci systému ( způsob swap, hodiny, kontrola a připoj souborových systémů... ). "/sbin/update" po inicializaci každých cca 30 vteřin synchronizuje obsah "cache" vyrovnávacích pamětí s diskem.
3 / "/etc/rc.d/rc" je hlavní start skript spuštěný při jakékoli úrovni běhu OS s parametrem 0-6 ( odpovídá default úrovni ). Ten pomocí svého parametru spouští ostatní skripty dané default úrovně. Vše se děje spouštěním systémových služeb - skriptů z adresáře "/etc/rc.d/init.d/" přes odpovídající symbolické odkazy umístěné v adresářích nazvaných podle jednotlivých úrovní ( př.:/etc/rc.d/rc3.d ). V názvu symbolických odkazů je zaneseno pořadí "00-99" a typ "S" či "K" aktivace služby. Start skript tak spravuje vlastní proces spouštění / ukončení aplikací. Nejprve spustí služby "K..." s parametrem "stop" s NEJNIŽŠÍ ( 99 ) prioritou a poté "S..." s parametrem "start" nejprve s NEJVYŠŠÍ ( 00 ) prioritou ...
4 / Poslední spuštěný ( zajištěno pořadím 99 ) "/etc/rc.d/rc.local" umožní zadat spuštění libovolného systémového příkazu v době zavádění systému.
5 / Způsob ukončení - stisk "CTRL+ALT+DEL" a jeho ošetření.
6 / "getty" a "agetty" - Běží jako několikanásobný proces. Otevírá zařízení terminál ( konzole, sériová linka ). Monitoruje / naslouchá na terminálu, čeká na přihlášení uživatele. Spustí program "login" a ten provede přihlášení. Po odhlášení uživatele od Linuxu se vrátí OS přes proces "init" zpět na start nové instance "getty".

"telinit" příkaz určující, kdy má "init" změnit úroveň běhu. Většinou bývá jen symbolickým odkazem na samotný "init" a spouští ho převážně automaticky skripty obstarávající puštění a vypnutí systému.

Proces inetd a xinetd

"inetd" či "xinetd" jsou démoni sítě. Jde v podstatě o "superserver" pro ostatní síťové procesy. Naslouchá v pozadí a při příchozím požadavku např. přihlášení klienta z jiného PC ( telnet, ftp ) přidělí nutné systémové zdroje. Obstará jen služby uvedené v konfiguračním souboru jen v okamžiku jejich požadování nějakým klientem. Šetří tak systémové zdroje, které by byly při trvalé aktivaci všech síťových procesů trvale vázány.

K "inetd" je konfiguračním souborem "/etc/inetd.conf". Každý řádek odpovídá jedné službě. Vypne se zakomentováním řádku "#" a zapne odkomentováním. Po úpravě "/etc/inetd.conf" je nutný restart démona pomocí "kill -l PID" nebo "/etc/rc.d/init.d/inet restart" či "... reload" či "killall -l inetd"... "/etc/inetd.conf" musí korespondovat s "/etc/services" ( nese názvy služeb + přiřazené porty ) a s "/etc/protocols" ( definuje protokoly tcp,udp... ).

"/usr/sbin/tcpd" nazvaný TCP Wrapper zprostředkuje spuštění síťové služby. Po spojení s klientem jménem volané služby převezme požedavek, ověří obsah "/etc/hosts.deny" a "/etc/hosts.allow" a je-li vše OK, aktivuje službu.
**// - "/etc/hosts.deny" - parametr "ALL@ALL" či "ALL: ALL" zakáže všechny síťové služby, které používají "TCP Wrapper" na všech PC.
**// - "/etc/hosts.allow" - parametr "ALL" povolí síťové služby na konkrétních PC.

"xinetd" je novější verze "inetd" plnící stejnou funkci. Konfigurační soubor "/etx/xinetd.conf" je odlišný od staršího formátu "/etc/inet.conf". Skládá se z bloků. Jeden speciální blok "defaults" obsahuje proměnné platné ve všech ostatních blocích. Uvedením "includedir" "xinetd" prohledá všechny soubory v zadaném adresáři jakoby byly součástí "/etc/xinetd.conf". Každá síťová služba má v adresáři "/etc/xinetd.d" svůj soubor. Vyřazení z činnosti se provede uvedením "disable = yes" v daném souboru, služba je pak definovaná, ale přesto se nepoužívá. Pak je ještě nutno provést restart "xinetd" démona takto "/etc/init.d/xinetd restart".

Některé síťové služby se spouští samostatně, né přes "inetd". Tyto služby či démoni se zapnou / vypnou grafickým programem "tksysv" nebo textovým "ntsysv". Lze je spouštět ručně i automaticky skripty z adresáře "/etc/init.d".

Proces syslog

"syslog" je démon zaznamenávající standardními prostředky do protokolů - log souborů tzv. "žurnálů" různé důležité aktivity, činnost procesů odpojených od terminálu, varovná hlášení jádra... Soubor "/etc/syslog.conf" určí, kam se výpisy uloží, zpravidla do adresáře "/var/log". Každá zpráva má označen "podsystém" - odkud přišla a "prioritu" - jak je důležitá.

"syslogd" - služba je implicitně spojena se síťovým portem a přijímá logové zprávy ze sítě. Přijímá jen požadavky začínající parametrem "-r".

Proces cron

"cron" ( samotný příkaz "crond" ) umožňuje komuko-li naplánovat spuštění čehoko-li kdyko-li s přesností jedné minuty. Automatizuje jak jednorázové akce, tak lépe, opakované úkony.

Každou minutu kontroluje konfigurační soubor "/etc/crontab". Ten obsahuje seznam událostí, které chce uživatel v zadaný čas pustit.

Před změnou nastavení konfiguračního souboru "/etc/crontab" kontroluje "crond" oprávnění provedení změn podle "/etc/cron.deny" a "/etc/cron.allow".

"cron" používá interpret příkazů "sh", né často používaný "bash". Při práci s ním se může prostředí chovat mírně jinak, než jsou běžné zvyklosti.