i det - init

Versjon 7 Unix : /etc oppføring, som viser init og rc
Versjon 7 Unix: innholdet i et /etc /rc Bourne -shell -skript

I Unix -baserte datamaskinoperativsystemer , init (forkortelse for initialisering ) er den første prosessen startet under oppstart av datasystemet. Init er en demon -prosess som fortsetter å kjøre til systemet blir slått av. Det er den direkte eller indirekte stamfar til alle andre prosesser og vedtar automatisk alle foreldreløse prosesser . Init startes av kjernen under oppstartsprosessen ; en kjernepanikk vil oppstå hvis kjernen ikke kan starte den. Init er vanligvis tildelt prosessidentifikator 1.

I Unix -systemer som System III og System V har utformingen av init avviket fra funksjonaliteten fra init i Research Unix og dens BSD -derivater. Inntil nylig brukte de fleste Linux-distribusjoner en tradisjonell init som er noe kompatibel med System V, mens noen distribusjoner som Slackware bruker oppstartskript i BSD-stil, og andre som Gentoo har sine egne tilpassede versjoner.

Siden den gang har det blitt opprettet flere init -implementeringer, som forsøker å løse designbegrensninger i de tradisjonelle versjonene. Disse inkluderer launchd , Service Management Facility , systemd , Runit og OpenRC .

Forskning Unix-stil/BSD-stil

Research Unix init kjørte initialiseringsskallskriptet som ligger på /etc/rc, og lanserte deretter getty på terminaler under kontroll av /etc/ttys. Det er ingen lønnivåer; den /etc/rcfilen bestemmer hvilke programmer som blir drevet av init. Fordelen med dette systemet er at det er enkelt og enkelt å redigere manuelt. Ny programvare som er lagt til i systemet kan imidlertid kreve endringer i eksisterende filer som risikerer å produsere et system som ikke kan startes opp.

BSD init var, før 4.3BSD, det samme som Research UNIXs init; i 4.3BSD la den til støtte for å kjøre et vindussystem som X på grafiske terminaler under kontroll av /etc/ttys. For å fjerne kravet om redigering /etc/rc, har BSD-varianter lenge støttet en stedsspesifikk /etc/rc.localfil som kjøres i et sub-shell nær slutten av oppstartsekvensen.

Et fullt modulært system ble introdusert med NetBSD 1.5 og overført til FreeBSD 5.0 og etterfølgere. Dette systemet kjører skript i /etc/rc.dkatalogen. I motsetning til System Vs skriptbestilling, som er avledet fra filnavnet til hvert skript, bruker dette systemet eksplisitte avhengighetskoder plassert i hvert skript. Rekkefølgen som skript utføres, bestemmes av rcorder -verktøyet basert på kravene som er angitt i disse kodene.

SysV-stil

Sysv-rc-conf , et TUI- verktøy som velger hvilke init-skript i SysV-stil som skal kjøres i hvert runlevel

Sammenlignet med forgjengerne introduserte AT & Ts UNIX System III en ny stil for systemoppstartskonfigurasjon, som overlevde (med modifikasjoner) i UNIX System V og derfor kalles "SysV-stil init".

Når som helst er et kjørende System V i et av det forhåndsbestemte antall tilstander, kalt runlevels . Minst ett runlevel er systemets normale driftstilstand; Vanligvis representerer andre lønnivåer enbrukermodus (brukes til reparasjon av et defekt system), systemstans og forskjellige andre tilstander. Ved å bytte fra ett runlevel til et annet kjøres et sett med skript per runlevel, som vanligvis monterer filsystemer, starter eller stopper demoner , starter eller stopper X Window System , slår av maskinen osv.

Runlevels

De driftsnivåer i system V beskriver visse tilstander av en maskin, karakterisert ved de fremgangsmåter og -demoner løper i hver av dem. Generelt er det syv lønnivåer, hvorav tre lønnivåer regnes som "standard", ettersom de er avgjørende for driften av et system:

0. Slå av
1. Enbrukermodus (også kjent som S eller s )
6. Start på nytt

Bortsett fra disse standardene, behandler Unix og Unix-lignende systemer runnivåer noe annerledes. Fellesnevneren, /etc/inittabfilen, definerer hva hvert konfigurert runlevel gjør i et gitt system.

Standard lønnivåer

Operativsystem Standard runlevel
AIX 2
antiX 5
Gentoo Linux 3
HP-UX 3 (konsoll/server/flerbruker) eller 4 (grafisk)
Linux fra bunnen av 3
Slackware Linux 3
Solaris / illumos 3
UNIX System V slipper 3.x, 4.x 2
UnixWare 7.x 3

På Linux -distribusjoner som standard på runlevel 5 i tabellen til høyre, påkaller runlevel 5 et grafisk miljø med flere brukere som kjører X Window System , vanligvis med en skjermbehandling som GDM eller KDM . Imidlertid reserverer operativsystemene Solaris og illumos vanligvis kjøreplan 5 for å slå av maskinen og slå den av automatisk.

På de fleste systemer kan alle brukere sjekke gjeldende runlevel med enten runleveleller who -r-kommandoen. Den root brukeren endrer vanligvis gjeldende driftsnivået ved å kjøre teliniteller initkommandoer. Den /etc/inittabfilen setter standard kjørenivå med :initdefault:oppføringen.

På Unix -systemer oppnås endring av nivået ved bare å starte de manglende tjenestene (ettersom hvert nivå definerer bare de som startes / stoppes). For eksempel kan det hende at det å endre et system fra runlevel 3 til 4 bare starter den lokale X -serveren. Når vi går tilbake til runlevel 3, vil det bli stoppet igjen.

Andre implementeringer

Tradisjonelt er en av de største ulempene med init at den starter oppgaver serielt og venter på at hver skal laste ferdig før den går videre til den neste. Når oppstartsprosesser ender Input/output (I/O) blokkert, kan dette resultere i lange forsinkelser under oppstart. Fremskynde I/O, f.eks. Ved bruk av SSD -er, kan forkorte forsinkelsene, men den løser ikke årsaken.

Det har blitt gjort forskjellige forsøk på å erstatte de tradisjonelle init -demonene for å løse dette og andre designproblemer, inkludert:

  • BootScripts i GoboLinux
  • busybox-init , egnet for innebygde operativsystemer , ansatt av OpenWrt før den ble erstattet med procd
  • Epoch , et enkelttrådet Linux init-system med fokus på enkelhet og servicestyring
  • Initng , en full erstatning av init designet for å starte prosesser asynkront
  • launchd , en erstatning for init i Darwin / macOS / iOS / tvOS som starter med Mac OS X v10.4 (den lanserer SystemStarter for å kjøre gamle "rc.local" og SystemStarter-prosesser)
  • OpenRC , en prosessoppdriver som bruker systemgitt init, samtidig som den gir prosessisolasjon, parallellisert oppstart og tjenesteavhengighet; brukt av Alpine Linux , Gentoo og dets derivater, og tilgjengelig som tilleggsutstyr i Devuan og Artix Linux
  • runit , en plattform på tvers av plattformer for init med parallell start av tjenester, brukt som standard i Void Linux
  • Sun Service Management Facility (SMF), en komplett erstatning / redesign av init fra grunnen av i illumos / Solaris som starter med Solaris 10, men lansert som den eneste tjenesten av den opprinnelige System V-stil init
  • Shepherd , GNU- tjenesten og demon-lederen som tilbyr asynkron, avhengighetsbasert initialisering; skrevet i Guile Scheme og ment å være interaktivt hackbart under normal systemdrift
  • s6, en programvarepakke som inkluderer et init -system.
  • systemd , en programvarepakke, full erstatning for init i Linux som inkluderer en init -demon, med samtidig start av tjenester, service manager og andre funksjoner.
  • SystemStarter , en prosess-spawner startet av BSD-stil init i Mac OS X før Mac OS X v10.4
  • Upstart , en full erstatning av init designet for å starte prosesser asynkront. Initiert av Ubuntu og brukes av dem før 2014. Den ble også brukt i Fedora 9, Red Hat Enterprise Linux 6 og Google 's Chrome OS .

Fra februar 2019 har systemd blitt vedtatt av de fleste store Linux -distribusjonene.

Se også

Referanser

Eksterne linker