Sen sisällä on kaikkien Linux-prosessien vanhempi. Se on ensimmäinen prosessi, joka käynnistyy, kun tietokone käynnistyy, ja se kestää, kunnes järjestelmä sammuu. Se on kaikkien muiden prosessien esi.
Sen ensisijaisena tehtävänä on luoda prosessit tiedostosta / etc / inittab tallennetusta käsikirjasta. Tämä tiedosto tallentaa yleensä tavaroita, jotka aiheuttavat Init: n kynnyksen jokaiselle riville, jonka käyttäjät voivat kirjautua sisään. Se myös valvoo itsenäisiä prosesseja, joita jokin tietty järjestelmä vaatii.
ajotasoja
runlevelille on järjestelmän ohjelmistokokoonpano, joka mahdollistaa vain valitun prosessiryhmän suorittamisen. Init-ohjelmalla kerätyt prosessit kullekin näistä runlevels-luokista määritellään / etc / inittab -tiedostossa. Init voi olla jossakin kahdeksasta runlevels: 0-6 ja S tai s. Runlevelia muutetaan siten, että etuoikeutettu käyttäjä ajaa Telinitin, joka lähettää asianmukaiset signaalit Initille ja kertoo, mihin nousupisteeseen muutetaan.
Runlevelit 0, 1 ja 6 ovat varattuja. Runlevel 0: ta käytetään järjestelmän pysäyttämiseen, runlevel 6: ta käytetään järjestelmän käynnistämiseen ja runlevel 1: ta käytetään järjestelmän saamiseksi yksitäyttön. Runlevel S ei ole tarkoitettu käytettäväksi suoraan, vaan sen sijaan komentosarjoihin, jotka suoritetaan ajettaessa runlevel 1: een.
Runlevelit 7 - 9 ovat myös päteviä, vaikka ne eivät ole hyvin dokumentoituja, koska "perinteiset" Unix-versiot eivät käytä niitä. Runlevels S ja s ovat samat. Sisäisesti ne ovat aliaksia samalle runlevelle.
käynnistystä
Kun Init on kutsuttu ytimen käynnistysjärjestyksen viimeisenä vaiheena, se etsii tiedostosta / etc / inittab, onko tyyppi kirjoitettu initdefault . Initdefault-merkintä määrittää järjestelmän alkutason. Jos tällaista merkintää ei ole (tai ei ole / etc / inittab ollenkaan), runlevel on syötettävä järjestelmän konsoliin.
Runlevel S tai s vie järjestelmän yksinkäyttäjätilaan ja ei vaadi tiedostoa / etc / inittab. Single-user-tilassa avautuu root-kuori / dev / console.
Kun syötät yhden käyttäjän tilan, init lukee konsolin ioctl-tilat /etc/ioctl.save. Jos tiedostoa ei ole, init alustaa linjan 9600 baudilla ja CLOCAL-asetuksilla. Kun init jättää yhden käyttäjän tilan, se tallentaa konsolin ioctl-asetukset tähän tiedostoon, jotta se voi käyttää niitä uudelleen seuraavaan yhden käyttäjän istuntoon.
Kun syötät monen käyttäjän tilan ensimmäistä kertaa, Init suorittaa käynnistys- ja käynnistyskäynnin merkinnät, jotta tiedostojärjestelmät voidaan asentaa ennen kuin käyttäjät voivat kirjautua sisään. Tällöin kaikki runlevelin mukaiset merkinnät käsitellään.
Kun käynnistät uuden prosessin, Init tarkistaa ensin onko tiedosto / etc / initscript olemassa. Jos se on, se käyttää tätä käsikirjoitusta aloittaakseen prosessin.
Joka kerta kun lapsi päätyy, Init tallentaa tiedot / syyt, jotka se kuoli / var / run / utmp ja / var / log / wtmp, jos nämä tiedostot ovat olemassa.
Runlevelsin muuttaminen
Sen jälkeen, kun se keräsi kaikki määritellyt prosessit, Init odotti jonkun sen jälkiprosessin kuolevan, tehoilmoitussignaalin tai kunnes Telinit ilmoitti muuttamasta järjestelmän runlevel-arvoa. Kun jokin näistä kolmesta tilanteesta ilmenee, se tutkii uudelleen / etc / inittab-tiedoston. Voit lisätä uusia tiedostoja tähän tiedostoon milloin tahansa. Init kuitenkin odottaa kuitenkin, että jokin edellä mainituista kolmesta edellytyksestä tapahtuu. Välttämättömän vastauksen varmistamiseksi Telinit Q- tai q-komento voi herättää Initin uudelleen tarkastelemaan / etc / inittab -tiedostoa.
Jos Init ei ole yksinkäyttäjätilassa ja vastaanottaa PowerFail-signaalin (SIGPWR), se lukee tiedoston / etc / powerstatus. Sen jälkeen käynnistää komennon, joka perustuu tämän tiedoston sisältöön:
- F (AIL): Virta ei toimi, UPS tarjoaa tehon. Suorita powerwait- ja powerfail-merkinnät.
- O (K): Teho on palautettu, suorita powerokwait-merkinnät.
- MATALA): Virta ei toimi, ja UPS: llä on alhainen akku. Suorita powerfailnow-merkinnät.
Jos / etc / powerstatusta ei ole tai se sisältää muuta kuin kirjaimet F, O tai L, Init käyttäytyy ikään kuin se lukee kirjaimen F.
SIGPWR: n ja / etc / powerstatuksen käyttöä ei suositella. Kuka tahansa, joka haluaa olla vuorovaikutuksessa Inin kanssa, on käytettävä / dev / initctl -ohjauskanavaa.
Kun Initia pyydetään vaihtamaan runlevel, se lähettää varoitussignaalin SIGTERM kaikkiin prosesseihin, jotka ovat määrittämättömiä uudessa runlevelissä. Se odottaa sitten viisi sekuntia ennen kuin nämä prosessit pakotetaan lopettamaan SIGKILL-signaalin avulla. Huomaa, että Init olettaa, että kaikki nämä prosessit ja niiden jälkeläiset pysyvät samassa prosessiryhmässä kuin Init alunperin luonut heille. Jos jokin prosessi muuttaa sen prosessiryhmän jäsenyyttä, se ei vastaanota näitä signaaleja. Tällaiset prosessit on päätettävä erikseen.
Telinit
Telinit on linkitetty / sbin / init. Se vaatii yhden merkin argumentin ja signaalit Init suorittaa asianmukainen toiminta. Seuraavat väitteet ovat Telinitin direktiivejä:
- 0, 1, 2, 3, 4, 5 tai 6: Kerro Init siirtyäksesi määrätyn suoritustason.
- a, b, c: Kerro Initille käsittelemään vain sellaiset / etc / inittab -tiedostojen merkinnät, joilla on runlevel a, b tai c.
- Q tai q: Kerro Init uudelleen tarkastelemaan / etc / inittab-tiedostoa.
- S tai s: Kerro Init siirtyäksesi yhdenkäyttäjätilaan.
- U tai u: Kerro init uudelleen suorittamiseksi (valtion säilyttäminen). Tiedoston / etc / inittab-tiedoston uudelleentarkastusta ei tapahdu. Runlevel tulisi olla S, s, 1, 2, 3, 4 tai 5; muuten pyyntöä ohitetaan hiljaisesti.
Telinit voi myös kertoa Inille, kuinka kauan se odottaa lähetysprosessien välillä SIGTERM- ja SIGKILL-signaaleja. Oletusasetus on viisi sekuntia, mutta tätä arvoa voidaan muuttaa näppäimellä -t sec vaihtoehto.
Telinit voidaan kutsua vain käyttäjillä, joilla on asianmukaiset käyttöoikeudet.
Init-binaari tarkistaa, onko se Init tai Telinit tarkastelemassa sen prosessidunnusta. Todellinen Inin prosessin tunnus on aina 1. Tästä seuraa, että sen sijaan, että kutsuttiin Telinit, henkilö voi käyttää Init -ohjelmaa pikakuvakkeena.




