init - init

Verze 7 Unix : /etc výpis, zobrazující init a rc
Verze 7 Unix: obsah shellového skriptu /etc /rc Bourne

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/rcsoubor 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.localsoubor 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.dadresář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

Sysv-rc-conf , nástroj TUI , který vybírá, které inicializační skripty ve stylu SysV budou spuštěny v každé úrovni běhu

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/inittabsoubor, 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 runlevelnebo who -r. Uživatel root obvykle změní aktuální úroveň běhu spuštěním příkazů telinitnebo init. /etc/inittabSoubor 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é

Reference

externí odkazy