init (zkratka z anglického initialization - initialization) - inicializační subsystém v Unixu a řadě unixových systémů, který spouští všechny ostatní procesy. Běží jako démon a má obvykle PID 1. Obvykle (podle standardu Filesystem Hierarchy Standard ) se nachází v /sbin/init . Existují rozdíly v tom, jak podsystém funguje v operačních systémech, které jsou odvozeny od systémů System V a BSD .
Po dlouhou dobu to byl hlavní init subsystém v Linuxu, dokud nebyl ve většině distribucí nahrazen systemd . Solaris 10 používá nástroj Service Management Facility [1] místo init . Řada unixových systémů používá alternativy init: Upstart , Runit , Daemontools , Launchd , Initng , OpenRC .
Během procesu zavádění, po inicializaci jádra , se jako první proces v uživatelském režimu obvykle spustí /sbin/init a init je zodpovědný za další zavádění systému. K tomu se spouští spouštěcí skripty, které kontrolují a připojují souborové systémy, spouštějí potřebné démony, konfigurují jádro (včetně načítání modulů jádra podle nainstalovaného hardwaru, konfigurují IP adresy, směrovací tabulky a další úlohy), spouštějí grafický shell. Základní informace o zavádění jsou obvykle umístěny v /etc/inittab .
Implementace init ve stylu System V používá koncept runlevel , stupeň, do kterého je operační systém načten; v tomto případě jsou spouštěcí skripty pro každou úroveň uspořádány v adresářích od /etc/rc0.d do /etc/rc6.d , kde číslo za rc odpovídá číslu inicializační úrovně.
Příklad souboru /etc/inittab :
id:5:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5: wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3: 2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 x:5:respawn /X11/prefdm -nodaemonPrvní řádek popisuje terminál a jeho výchozí konfiguraci. V tomto souboru jsou nejprve popsány inicializační úrovně. Poté se spustí virtuální konzole. Inicializační záznam konzoly se skládá z polí oddělených dvojtečkou a vypadá takto:
Můžete si tedy snadno vytvořit svou vlastní úroveň init (očíslované 6 nebo 7, 8…) jednoduše úpravou souboru /etc/inittab a vytvořením potřebných odkazů v adresáři /etc/rc.d/rc*.d .
Ve srovnání se svými předchůdci zavedl AT&T UNIX System III nový styl konfigurace spouštění systému [2] , který byl zachován (s úpravami) v UNIX System V , a proto se nazývá „SysVinit“.
V každém okamžiku je spuštěný AT&T UNIX System V v jednom z předdefinovaných stavů nazývaných runlevel . Alespoň jedna úroveň běhu je normální provozní stav systému; ostatní úrovně běhu obvykle představují režim jednoho uživatele (používá se k obnovení selhání systému), vypnutí systému a různé další stavy. Přepnutí z jedné úrovně běhu na jinou způsobí spuštění sady skriptů pro každou úroveň běhu, které obvykle připojují souborové systémy, spouštějí nebo zastavují démony , spouštějí nebo zastavují X Window System , vypínají počítač a tak dále.
runlevels v AT&T UNIX System V popisují konkrétní stavy stroje, charakterizované procesy a démony běžícími v každém z nich. Obecně existuje sedm úrovní běhu, z nichž tři úrovně běhu jsou považovány za „standardní“, protože jsou nutné pro fungování systému:
0. Zastavit 1. Režim jednoho uživatele 6. RestartujteKromě těchto standardních systémů Unix a Unixu podobné systémy zacházejí s úrovněmi běhu poněkud odlišně. /etc/inittabsoubor, který definuje, co každá konfigurovaná úroveň běhu dělá v systému.