init - init
V Unixu na bázi počítačových operačních systémů , init (zkratka pro inicializaci ) je první proces začal v průběhu zavádění počítačového systému. Init je proces démona, který pokračuje v běhu, dokud se systém nevypne. Je přímým nebo nepřímým předchůdcem všech ostatních procesů a automaticky přijímá všechny osiřelé procesy . Init je spuštěn jádrem během bootovacího procesu; kernel panic dojde, pokud kernel není schopen spustit. Init je obvykle přiřazen identifikátor procesu 1.
V unixových systémech, jako je System III a System V , se design init lišil od funkcí poskytovaných init ve Research Unix a jeho derivátech BSD . Až do nedávné doby většina distribucí Linuxu používala tradiční init, který je do jisté míry kompatibilní se systémem V, zatímco některé distribuce, jako je Slackware, používají spouštěcí skripty ve stylu BSD a jiné, jako Gentoo, mají své vlastní přizpůsobené verze.
Od té doby bylo vytvořeno několik dalších implementací init, které se pokoušejí vyřešit omezení návrhu v tradičních verzích. Patří sem launchd , Service Management Facility , systemd , Runit a OpenRC .
Výzkum ve stylu Unix/BSD
Výzkum Unix init spustil inicializační shell skript umístěný na /etc/rc
, poté spustil getty na terminálech pod kontrolou /etc/ttys
. Neexistují žádné úrovně běhu; /etc/rc
soubor určuje, jaké programy jsou řízeny init. Výhodou tohoto systému je, že je jednoduchý a snadno upravitelný ručně. Nový software přidaný do systému však může vyžadovat změny ve stávajících souborech, u nichž hrozí riziko spuštění systému, který nelze spustit.
Init BSD byl před 4.3BSD stejný jako init UN Research; v 4.3BSD přidal podporu pro provoz okenního systému, jako je X, na grafických terminálech pod kontrolou /etc/ttys
. Chcete-li odstranit požadavek na úpravy /etc/rc
, varianty BSD již dlouho podporují /etc/rc.local
soubor specifický pro web, který je spuštěn v podsítě blízko konce spouštěcí sekvence.
Byl představen plně modulární systém s NetBSD 1.5 a portován na FreeBSD 5.0 a jeho nástupce. Tento systém spouští skripty v /etc/rc.d
adresáři. Na rozdíl od řazení skriptů systému V, které je odvozeno od názvu souboru každého skriptu, tento systém používá explicitní značky závislostí umístěné v každém skriptu. Pořadí spouštění skriptů určuje obslužný program rcorder na základě požadavků uvedených v těchto značkách.
Ve stylu SysV
Ve srovnání se svými předchůdci představil AT&T UNIX System III nový styl konfigurace spouštění systému, který přežil (s úpravami) v systému UNIX System V, a proto se mu říká „init ve stylu SysV“.
V každém okamžiku je spuštěný systém V v jednom z předem určeného počtu stavů, nazývaných úrovně běhu . Minimálně 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 opravě vadného systému), vypnutí systému a různé další stavy. Přechod z jedné úrovně běhu na jinou způsobí spuštění sady skriptů na úroveň běhu, která obvykle připojuje souborové systémy, spouští nebo zastavuje démony , spouští nebo zastavuje X Window System , vypíná počítač atd.
Úrovně běhu
Tyto runlevels v System V popisují určité stavy stroje, vyznačující se tím, procesů a daemonů probíhajících v každé z nich. Obecně existuje sedm úrovní běhu, z nichž tři úrovně běhu jsou považovány za „standardní“, protože jsou zásadní pro provoz systému:
- 0. Vypněte
- 1. Režim jednoho uživatele (známý také jako S nebo s )
- 6. Restartujte
Kromě těchto standardních systémů Unix a systémy podobné Unixu zacházejí s úrovněmi běhu poněkud odlišně. Společný jmenovatel, /etc/inittab
soubor, definuje, co každá nakonfigurovaná úroveň běhu dělá v daném systému.
Výchozí úrovně běhu
Operační systém | Výchozí úroveň běhu |
---|---|
AIX | 2 |
antiX | 5 |
Gentoo Linux | 3 |
HP-UX | 3 (konzola/server/víceuživatelský) nebo 4 (grafický) |
Linux od nuly | 3 |
Slackware Linux | 3 |
Solaris / illumos | 3 |
Vydání systému UNIX System V 3.x, 4.x | 2 |
UnixWare 7.x | 3 |
V distribucích Linuxu, které mají v tabulce vpravo úroveň runlevel 5, runlevel 5 vyvolá víceuživatelské grafické prostředí se systémem X Window System , obvykle se správcem zobrazení, jako je GDM nebo KDM . Nicméně, Solaris a illumos operační systémy obvykle rezerva runlevel 5 vypnout a automaticky vypne stroj.
Na většině systémů mohou všichni uživatelé zkontrolovat aktuální úroveň běhu pomocí příkazu runlevel
nebo who -r
. Uživatel root obvykle změní aktuální úroveň běhu spuštěním příkazů telinit
nebo init
. /etc/inittab
Soubor nastavuje výchozí úroveň se :initdefault:
vstupem.
V systémech Unix je změna úrovně běhu dosažena spuštěním pouze chybějících služeb (protože každá úroveň definuje pouze ty, které jsou spuštěny / zastaveny). Například změna systému z úrovně běhu 3 na 4 může spustit pouze místní server X. Když se vrátím na úroveň běhu 3, bude znovu zastavena.
Další implementace
Tradičně je jednou z hlavních nevýhod init to, že spouští úkoly sériově, čeká na to, až každý dokončí načítání, než přejde na další. Když spouštěcí procesy skončí, vstup/výstup (I/O) je zablokován, což může mít za následek dlouhé zpoždění při spouštění. Zrychlení I/O, např. Pomocí SSD, může zkrátit zpoždění, ale neřeší hlavní příčinu.
Bylo vynaloženo různé úsilí k nahrazení tradičních démonů init, aby se vyřešil tento a další problémy s designem, včetně:
- BootScripty v GoboLinuxu
- busybox-init , vhodný pro vestavěné operační systémy , používaný OpenWrt, než byl nahrazen procd
- Epocha , jednovláknový inicializační systém Linux zaměřený na jednoduchost a správu služeb
- Initng , úplná náhrada init určená ke spouštění procesů asynchronně
- launchd , náhrada za init v Darwin / macOS / iOS / tvOS počínaje Mac OS X v10.4 (spouští SystemStarter ke spouštění starodávných procesů 'rc.local' a SystemStarter)
- OpenRC , spawner procesů, který využívá inicializaci poskytovanou systémem a zároveň zajišťuje izolaci procesu, paralelizované spouštění a závislost na službě; používá Alpine Linux , Gentoo a jeho deriváty a je k dispozici jako volitelná výbava v Devuan a Artix Linux
- runit , multiplatformní úplná náhrada za init s paralelním spuštěním služeb, používaná standardně ve Void Linuxu
- Sun Service Management Facility (SMF), kompletní výměna / redesign init od základu v illumos / Solaris počínaje Solarisem 10, ale spuštěn jako jediná služba původním init ve stylu System V
- Shepherd , správce služeb GNU a démonů, který poskytuje asynchronní inicializaci založenou na závislosti; napsaný v Guile Scheme a měl být interaktivně hacknutelný během normálního provozu systému
- s6, softwarová sada, která obsahuje inicializační systém.
- systemd , softwarová sada, plná náhrada za init v Linuxu, která obsahuje démona init, se současným spuštěním služeb, správcem služeb a dalšími funkcemi.
- SystemStarter , spawner procesů spuštěný inicializací ve stylu BSD v systému Mac OS X před Mac OS X v10.4
- Upstart , úplná náhrada init navržená pro spouštění procesů asynchronně. Inicioval Ubuntu a používá jimi až do roku 2014. To bylo také používáno ve Fedoře 9, Red Hat Enterprise Linux 6 a Google ‚s Chrome OS .
Jak února 2019, systemd byl přijat většinou hlavních distribucí Linuxu.
Viz také
- Správa služeb operačního systému
- Subsystém Session Manager - ekvivalent v systému Windows NT