init

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

init (z anglického initialization) je v informatice název programu v Unixu a unixových systémech, který je na počítači spuštěn jako první proces, a který následně spouští všechny ostatní procesy. Proces init je tak předek (ve smyslu rodičpotomek) všech dalších procesů, který má typické číslo procesu jedna (PID=1). Běží na pozadí jako démon, dokud není systém vypnut.

Charakteristika[editovat | editovat zdroj]

V unixových systémech se funkčnost procesu init odchýlila zvyklostí v původních systémech Unix a jeho BSD. Nejrozšířenější současné linuxové distribuce (v roce 2016) používají místo tradičního modelu s programem init nástroj systemd, launchd nebo Upstart (viz níže), které jsou řízeny událostmi. Stále však existují distribuce (například Slackware), které používají klasické BSD-like spouštěcí skripty. Existují i distribuce, které používají své vlastní verze spouštěcích skriptů (např. Gentoo Linux).

I když má proces init číslo jedna (PID=1), není obvykle v linuxových distribucích dopravdy prvním procesem, který je spuštěn. Při startu jsou nejprve spouštěny nástroje initrd (nověji initramfs), které zajišťují zavedení modulů (ovladačů) pro obsluhu úložných zařízení (např. SCSI řadič nebo ovladač síťové karty při bezdiskovém startu). Po jejich ukončení je však proces číslo jedna nahrazen procesem init (nebo např. systemd), protože jádro operačního systému předpokládá, že rodič všech procesů bude mít PID=1 (např. při adopci sirotků nebo při double-fork, který používají při svém vzniku démoni).

Research Unix-style[editovat | editovat zdroj]

Research Unix init spuštel inicializaci v shellu umístěném v /etc/rc. Neexistují zde žádné runlevely, jelikož /etc/rc rozhoduje, které programy jsou initem spoustěny a řízeny. Největší výhodou takového systému je jeho jednoduchost a snadná úprava fungování initu. Nicméně je zde riziko, že nový software přidaný do systému bude vyžadovat změny již existujích souborů a hrozí, že se počítač nespustí správně či dokonce vůbec.

Runlevely[editovat | editovat zdroj]

Operační Systém Výchozí Runlevel
AIX 2
Gentoo Linux 3[1]
HP-UX 3
Slackware Linux 3
Solaris 3[2]
Unix Systém V 2
UnixWare 3

Runlevely v System V popisují stavy počítače charakterizované běžícími procesy. Obvykle je 8 runlevelů – 0 až 6 a S. Z těchto osmi jsou tři tzv. „rezervované“:

0. Halt (vypnutí počítače)
1. Jednouživatelský mód
6. Reboot

Kromě runlevelů 0, 1 a 6 každý Unix a Unix-like systém používá runlevely trochu jinak. Definice chování runlevelů se nachází typicky v /etc/inittab.

Výchozí Runlevely[editovat | editovat zdroj]

V linuxových distribucích vyvolá runlevel 5 víceuživatelské grafické prostředí podporující X Window System, většinou s X display managerem jako je například GDM nebo KDM. Avšak například operační systém Solaris má runlevel 5 vyhrazen pro vypnutí počítače.

Ve většině systémů lze zjistit runlevel příkazem runlevel nebo příkazem who -r.[3]

Uživatel root může měnit runlevely pomocí příkazů telinit nebo init.

Náhrady za init[editovat | editovat zdroj]

Jednou z hlavních příčin hledání náhrad za init je fakt, že spouští skripty sériově. To znamená, že následující skript může být spuštěn až po dokončení předchozího skriptu, což může mít následek prodlevy při startu systému. Toto zpoždění lze zkrátit pomocí SSD disků, ale neřeší příčinu.

Byly provedeny různé snahy nahradit tradiční init démony k řešení tohoto a dalších problémů, včetně:

Reference[editovat | editovat zdroj]

  1. Initscripts [online]. Gentoo.org, 2011-03-02, [cit. 2016-09-19]. [1]. (anglicky) 
  2. Oracle Documentation [online]. Docs.sun.com, 2010-09-07, [cit. 2016-09-19]. [2]. (anglicky) 
  3. UNIX man pages: runlevel (8) [online]. Unixhelp.ed.ac.uk, 1997-05-27, [cit. 2016-09-19]. [3]. (anglicky) 

V tomto článku byl použit překlad textu z článku init na anglické Wikipedii.

Související články[editovat | editovat zdroj]