Tajā ir vecāks par visiem Linux procesiem. Tas ir pirmais process, kas sākas, kad dators sāk startēt, un tas darbojas, līdz sistēma izslēdzas. Tas ir visu citu procesu priekštečis.
Tās primārais uzdevums ir izveidot procesus no skripta, kas saglabāts failā / etc / inittab. Šajā failā parasti tiek saglabāti ieraksti, kas izraisa Init, lai radītu gettys katrā rindā, kurā lietotāji var pieteikties. Tā arī kontrolē neatkarīgus procesus, kas nepieciešami kādai konkrētai sistēmai.
Runnes līmenis
A izpildes līmenis ir sistēmas programmatūras konfigurācija, kas ļauj izpildīt tikai izvēlētu procesu grupu. Init izveidotie procesi katram no šiem darbības līmeņiem ir definēti failā / etc / inittab. Init var būt vienā no astoņiem darbības režīmiem: no 0 līdz 6 un S vai s. Darblīmenis tiek mainīts, izmantojot priviliģētu lietotāju palaistu Telinit, kas nosūta attiecīgos signālus uz Init, norādot, uz kuru izpildes līmeni ir jāmaina.
0, 1 un 6 izpildes līmenis ir rezervēts. Runlevel 0 tiek izmantots, lai apturētu sistēmu, izpildes līmenis 6 tiek izmantots, lai sistēma tiktu restartēta, un izpildes līmenis 1 tiek izmantots, lai sistēma kļūtu viena lietotāja režīmā. Runnes līmenis S nav domāts tieši, bet gan skriptiem, kas tiek izpildīti, ievadot 1. izpildes līmeni.
Darbības līmenis no 7. līdz 9. ir derīgs, lai gan tas nav labi dokumentēts, jo "tradicionālie" Unix varianti tos neizmanto. Runnes līmeņi S un S ir vienādi. Iekšpusē tie ir pseidonīmi vienam darba līmenim.
Atsākšana
Pēc tam, kad Init tiek izsaukts kā kodola sāknēšanas secības pēdējais solis, tas meklē failu / etc / inittab, lai redzētu, vai ir ieraksts tipa initdefault . Initdefault ieraksts nosaka sistēmas sākotnējo darbības līmeni. Ja šāda ieraksta nav (vai vispār nav / etc / inittab), sistēmas konsole jāievada darbības līmenis.
Runnes līmenis S vai s ņem sistēmu uz viena lietotāja režīmu un neprasa / etc / inittab failu. Viena lietotāja režīmā / dev / console tiek atvērts saknes čaula.
Ienākot lietotāja režīmā, init nolasa konsoles ioctl stāvokļus no /etc/ioctl.save. Ja šis fails neeksistē, init inicializē līniju ar 9600 baudu un ar CLOCAL iestatījumiem. Kad init atstāj viena lietotāja režīmu, tas saglabā konsoles ioctl iestatījumus šajā failā, lai to varētu atkārtoti izmantot nākamajam viena lietotāja sesijā.
Pirmoreiz ievadot daudzuzturētāju režīmu, Init veic boot un bootwait ierakstus, lai failu sistēmas varētu uzstādīt, pirms lietotāji var pieteikties. Tad tiek apstrādāti visi ieraksti, kas atbilst izpildes līmenim.
Sākot jaunu procesu, init vispirms pārbauda, vai failam / etc / initscript pastāv. Ja tas notiek, tas izmanto šo skriptu, lai sāktu procesu.
Katru reizi, kad bērns pārtrauc darbību, Init reģistrē faktu un iemeslu, kāds tas miris, / var / run / utmp un / var / log / wtmp, ja šie faili pastāv.
Mainīt darbības līmeņus
Pēc tam, kad tas nārsto visus procesus norādītos, Init gaida vienu no tās pēcnācējs procesu nomirt, kādu powerfail signālu, vai arī līdz brīdim, kad tas tiek paziņots ar telinit mainīt sistēmas darblīmenim. Kad rodas kāds no šiem trim nosacījumiem, tas atkārtoti izskata / etc / inittab failu. Jauni ieraksti var tikt pievienoti šim failam jebkurā laikā. Tomēr init joprojām gaida vienu no augstāk minētajiem trim nosacījumiem. Lai nodrošinātu tūlītēju atbildi, Telinit Q vai q komanda var pamodināt Init, lai atkārtoti pārbaudītu failu / etc / inittab.
Ja Init nav viena lietotāja režīmā un saņem powerfail signālu (SIGPWR), tas nolasa failu / etc / powerstatus. Tad sāk komandu, pamatojoties uz šī faila saturu:
- F (AIL): Barošana nedarbojas, UPS nodrošina jaudu. Izpildiet powerwait un powerfail ierakstus.
- LABI): Jauda ir atjaunota, izpildiet powerokwait ierakstus.
- L (OW): Strāvas trūkst, un UPS ir zems akumulators. Izpildīt powerfailnow ierakstus.
Ja / etc / powerstatus neeksistē vai satur neko citu kā burtus F, O vai L, Init uzvedas tā, it kā tā nolasa burtu F.
SIGPWR un / etc / powerstatus lietošana tiek noraidīta. Ikvienam, kurš vēlas mijiedarboties ar Init, jālieto / dev / initct vadības kanāls.
Kad Init tiek prasīts mainīt izpildes līmeni, tas brīdinājuma signālu SIGTERM nosūta visiem procesiem, kas jaunajā darbības līmenī nav definēti. Pēc tam tas paiet piecas sekundes, pirms piespiedu kārtā pārtraucot šos procesus, izmantojot SIGKILL signālu. Ņemiet vērā, ka Init pieņem, ka visi šie procesi un to pēcnācēji paliek tajā pašā procesa grupā, ko Init sākotnēji tiem izveidoja. Ja kāds process maina procesa grupas saistību, tas nesaņem šos signālus. Šādi procesi ir jāizbeidz atsevišķi.
Telinit
Telinit ir saistīts ar / sbin / init. Tas aizņem vienas rakstzīmes argumentu un signālus Init, lai veiktu atbilstošu darbību. Tālāk minētie argumenti kalpo par direktīvām Telinit:
- 0, 1, 2, 3, 4, 5 vai 6: Norādiet Init, lai pārslēgtos uz norādīto izpildes līmeni.
- a, b, c: Norādiet Init, lai apstrādātu tikai tos / etc / inittab failu ierakstus, kuru izpildes līmenis a, b vai c.
- Q vai q: Ievadiet Init, lai atkārtoti pārbaudītu / etc / inittab failu.
- S vai s: Norādiet Init, lai pārslēgtos uz viena lietotāja režīmu.
- U vai u: Pasaki init, lai atkārtoti izpildītu sevi (saglabājot stāvokli). Nav notikusi atkārtotā / etc / inittab faila pārbaude. Runnes līmenim jābūt S, s, 1, 2, 3, 4 vai 5; pretējā gadījumā pieprasījums tiek klusi ignorēts.
Telinit var arī pateikt Init, cik ilgi jāgaida no SIGTERM un SIGKILL signālu sūtīšanas procesiem. Noklusējums ir piecas sekundes, bet šo vērtību var mainīt ar -t sec iespēja.
Telinit var atsaukties tikai lietotājiem ar atbilstošām privilēģijām.
Init binārās pārbaudes, vai tas ir Init vai Telinit, aplūkojot procesa ID. Patiesais Init procesa ID ir vienmēr 1. No tā izriet, ka tā vietā, lai izsauktu Telinit, persona var izmantot Init kā saīsni.












