"Linux" batai

As it turns out, yra ne daug įkrovos procesą:

1. Įkrovos Randa branduolio atvaizdą į diską, įkelia jį į atmintį ir pradeda jį.
2. Branduolio inicijuoti prietaisus ir VMI vairuotojams.
3. Branduolio stovai šakninės failų sistemos.
4. Branduolys pradeda init Called grafiką.
5. init Nustato važiuoja procesų poilsio.
6. Pastarieji procesai, init prasideda dalį įkrovos seka leidžia jums prisijungti.

Kiekvieno paleidimo proceso etapo nustatymas neįkainojamas nustatant įkrovos problemas ir suprasti visą sistemą. Tai prasideda, nulinis įkrovos pakrovėjas, kuris yra pradinis ekranas arba greitas rodymas po to, kai kompiuteris atlieka savikontrolės įjungimą, klausia, kurią operacinę sistemą paleisti. Kai pasirinksite, įkroviklis paleidžia Linux branduolį, perduodamas sistemos valdymą branduoliui.

Yra išsami diskusija branduolio kitur šioje knygoje, iš kurios šis straipsnis yra ištrauka. Šis straipsnis apima branduolio iniciacijos etapas, Etapas Kai branduolys spausdina pranešimus apie aparatūros metu dėl sistemos krūva. Branduolys pradeda init tik po to, kai rodomas pranešimas, paskelbė, kad branduolys montuojamas šakninė failų sistema:

VFS: Montuojamas šaknis (ext2 failų) tik skaitymui.

Netrukus po to, matysite pranešimą apie init užvedimą, po sistemos paleidimo paslaugų prane ¹ imus, ir galiausiai jums turi prisijungimo modulį kai rūšiuoti.

PASTABA Apie "Red Hat Linux", init pastaba yra ypač akivaizdi, nes ji "palankiai" tau "Red Hat Linux". Visi pranešimai parodys sėkmę arba gedimą skliausteliuose dešinėje ekrano pusėje.

Dauguma šiame skyriuje susijęs su pirminio paleidimo, nes kai dalis įkrovos seka turite didžiausią kontrolę.
init

Nėra nieko ypatinga paleidimo. Tai kaip bet kuris kitas planas "Linux" sistema, ir jūs rasite jį / sbin kartu su kitais sistemos dvejetainius failus. Pagrindinis tikslas init yra paleisti ir sustabdyti kitas programas tam tikroje sekoje. Viskas ko jums reikia žinoti, kaip tai seka veikia.

Yra keletas skirtingų variantų, tačiau dauguma Linux distribucijos naudoti sistemos V stilių čia aptarti. Kai paskirstymo naudoti paprastesnes versija, kad panašus BSD paleidimo, bet jūs vargu ar susidurti tai.

Lygmenys

Bet kuriuo metu "Linux" sistema, bazinių tam tikrus procesus rinkinys veikia. Ši mašina būsena vadinama ITS paleidžiamojo lygio, ir tai yra žymimas su iš 0 6 skaičius per. Sistema praleidžia didžiąją dalį LPI metu vienoje paleidžiamojo lygio. Tačiau, kai jūs uždaryti mašiną žemyn, init persijungia į kitą paleidžiamąjį lygį, siekiant baigė metus sisteminių paslaugų tvarkingai ir pasakyti branduolys stotelėje. Dar vienas paleidžiamojo lygio yra vieno vartotojo režime, SVARSTYTA vėliau.

Lengviausias būdas gauti rankena dėl lygių uruchomieniowych yra ištirti init konfigūracijos failą / etc / inittab. Ieškokite, kaip ši eilutė:

ID: 5: init:

Ši eilutė reiškia, kad numatytąjį įkrovos lygį nuo sistemos yra 5. Visi inittab failą linijos imtis šią formą, su keturių laukų, atskirtų dvitaškius įvykusių tokia tvarka:
# Unikalus identifikatorius (trumpas eilutę, pvz id Ankstesniame pavyzdyje)
# Taikoma paleidžiamojo lygio numeris (-iai)
# Init, kuri turėtų imtis veiksmų (Ankstesniame pavyzdyje veiksmas yra nustatyti numatytąjį paleidžiamąjį lygį į 5)
# Komandą vykdyti (pasirinktinai)

Nėra komandų vykdyti pirmesnėje init pavyzdį, nes komanda neturi prasmės nustatymo numatytąjį paleidžiamąjį lygį kontekste. Pažvelkite šiek tiek toliau žemyn inittab, kol pamatysite, kaip ši eilutė:

l5: 5: laukti :/ etc / rc.d / rc 5

Ši eilutė sukelia didžiąją dalį sistemos konfigūracijos ir paslaugų per rc *. D init.d katalogų. Galite matyti, kad init yra nustatytas vykdyti komandą pašaukė / etc / rc.d / rc 5 5 Kai paleidžiamojo lygio. Laukti veiksmas pasakoja Kada ir kaip init paleidžia komandą: paleisti rc Kai įvedimas paleidžiamojo lygio 5 5 vieną kartą, o tada laukti šią komandą baigti Prieš ką nors kita.

Yra keli skirtingi veiksmai be init ir laukti, ypač susijusius su galios valdymu, ir inittab (5) rankinė puslapis jums pasakys viską apie juos. Tie, jūs labiausiai tikėtina susidurti Tai paaiškinta tolesniuose skyriuose.

respawn

Respawn veiksmas sukelia paleidimo paleisti komandą, kad taip, ir jei komanda Baigia vykdyti, paleisti jį iš naujo. Jūs tikriausiai pamatyti kažką panašaus į šį numerį savo inittab failo eilutes:

1: 2345: respawn :/ sbin / mingetty tty1

Getty programos suteikia prisijungimo instrukcijas. Praėjusių linija pirmą virtualios konsolės (/ dev / tty1), vienos matote Kai paspaudžiate ALT arba Control-Alt-F1 F1. Respawn veiksmai atneša kviečiantį atgal po to, kai išsiregistruoti.

ctrlaltdel

Į ctrlaltdel veiksmų kontrolę, ką sistema daro Paspaudus Control-Alt-Delete apie virtualią konsolę. Daugumoje sistemų, tai yra Kai reboot komandą naudojant komandą shutdown rūšiuoti.

sysinit

Sysinit veiksmas yra pats pirmas dalykas, init, kuris turėtų skaičiuoti tada, kai ji pradėjo veikti, prieš įvesdami lygmenys.

Kaip procesai lygių uruchomieniowych pradėti

Dabar jūs esate pasiruošę sužinoti, kaip init prasideda sistemos paslaugas, tik prieš tai leidžia jums prisijungti. Prisiminkite šį inittab eilutę iš ankstesnių:

l5: 5: laukti :/ etc / rc.d / rc 5

Šis mažas linija kyla daug kitų programų. RC reiškia vykdyti komandas, ir išgirsite žmonės nurodo kaip scenarijus, programas ar paslaugų komandas. Taigi, kur yra šios komandos, bet kokiu atveju?

Dėl runlevel 5, šiame pavyzdyje, komandos tikriausiai arba / etc / rc.d / rc5.d arba / etc / rc5.d. Paleisties lygmuo 1 naudoja rc1.d, paleidžiamojo lygio 2 rc2.d naudoja ir pan. Jūs galite rasti Į rc5.d GL kataloge elementus:

S10sysklogd S20ppp S99gpm
S12kerneld S25netstd_nfs S99httpd
S15netstd_init S30netstd_misc S99rmnologin
S18netbase S45pcmcia S99sshd
S20acct S89atd
S20logoutd S89cron

Rc 5 komanda pradeda programas šioje paleidžiamojo lygio direktoriją paleisdami GMT komandas:

S10sysklogd namų
S12kerneld namų
S15netstd_init namų
S18netbase namų
...
S99sshd namų

Pranešimas pradžios argumentą kiekvieną komandą. Po komandos pavadinimo reiškia, kad turėtų būti vykdoma į pradžios režimu komandą, ir šis skaičius (00 per 99), S lemia, kur sekoje rc pradeda komandą.

Rc *. D komandos shell scenarijus, kurie paprastai prasideda programas / sbin ir / usr / sbin. Paprastai, galite išsiaiškinti, kas viena iš komandų iš tiesų žiūri į scenarijų mažiau arba gaviklio kitą programą.

Jūs galite pradėti vieną iš šių paslaugų ranka. Pavyzdžiui, jei norite pradėti httpd Tinklo serverių programinės įrangos rankiniu būdu, paleisti S99httpd pradžia. Panašiai, jei jūs kada nors reikia nužudyti vieną iš paslaugų, kai aparatas yra įjungtas, galite paleisti į rc komandą *. D katalogas su stabdymo argumentas (S99httpd stotelė, pavyzdžiui).

Kai rc *. D katalogus, kuriuose komandos yra pradedamos K (už "nužudyti" arba sustabdyti režimas). Šiuo atveju, RC veikia komandą su stabdymo argumentu, o ne namuose. Jūs esate labiausiai tikėtina susidurti K komandas lygių uruchomieniowych Tai uždaryti sistemos žemyn.

Pridėjimas ir šalinimas paslaugas

Jei norite pridėti, ištrinti arba pakeisti paslaugos RC *. D katalogų, jums reikia atidžiau pažvelgti į failus viduje. Ilgas sąrašas atskleidžia, kaip šios struktūros:

lrwxrwxrwx. . . S10sysklogd -> .. / init.d / sysklogd
lrwxrwxrwx. . . S12kerneld -> .. / init.d / kerneld
lrwxrwxrwx. . . S15netstd_init -> .. / init.d / netstd_init
lrwxrwxrwx. . . S18netbase -> .. / init.d / netbase
...

Į metų komandos rc *. D katalogas tikrųjų yra simbolinės nuorodos į bylas metais init.d kataloge, paprastai / etc arba / etc / rc.d. Šios nuorodos į Linux distribucijų BŪTI, kad jie gali naudoti tuos pačius paleidimo scenarijus visoms lygių uruchomieniowych. Ši konvencija jokiu reikalavimo priemonėmis, tačiau dažnai tampa šiek tiek lengviau organizacija.

Išvengti vienos iš init.d kataloge komandas paleisti tam tikroje paleidžiamąjį lygį, jūs manote pašalinti simbolinė nuoroda į atitinkamą rc *. D katalogo. Tai veikia, bet jei jūs padarote klaidą ir kada reikia įdėti nuorodą į vietą, galite turėti problemų Prisimindamas tikslaus pavadinimo nuorodą. Todėl jūs neturėtumėte pašalinti nuorodas į rc * D katalogus, o, pridėti pabraukimo (_) su nuoroda pavadinimo pradžios, kaip šis.:

mv S99httpd _S99httpd

Įkrovos metu, RC ignoruoja _S99httpd Nes ji neprasideda S ar K. Be to, originalus pavadinimas yra vis dar akivaizdi, ir jūs turite greitą prieigą prie komandos, jei esate žiupsnelis ir reikia jį paleisti rankiniu būdu.

Norėdami pridėti paslaugą, turite sukurti kaip į init.d kataloge kitų scenarijų ir tada padaryti simbolinę nuorodą į teisingą rc *. D katalogo. Lengviausias būdas parašyti scenarijų yra ištirti jau į init.d scenarijų, padaryti vienas, kad jūs suprantate, kopijuoti ir modifikuoti kopiją.

Įdėjus paslauga, įsitikinkite, kad jums pasirinkti tinkamą vietą įkrovos seka paleisti tarnybą. Jei paslauga prasideda per anksti, jis negali dirbti, nes dėl kai kurių kitų paslaugų priklausomybės. Ne pagrindines paslaugas, daugiausia sistemų administratoriai nori numeriais, 90s, kai dauguma paslaugų, kurios kumštelinius su sistema.

Paprastai Linux distribucijos ateina su komandą įjungti ir išjungti paslaugas rc *. D katalogų. Pavyzdžiui, Debian, komanda update-rc.d ir Red Hat Linux, komanda chkconfig. Grafinės vartotojo sąsajos taip pat yra. Naudojant šias programas padeda išlaikyti paleidimo katalogai atitinka ir padeda atnaujinimus.

Užsiminti: Vienas iš labiausiai paplitusių Linux diegimo problemų metais netinkamai sukonfigūruotas serveris XFree86 Tai brūkštelėjimus ir išjungti, todėl sistema netinkama naudoti ant konsolės. Norėdami sustabdyti šią problemą, įkelti į vieno vartotojo režime ir pakeisti savo paleidžiamojo lygio arba paleidžiamojo lygio paslaugas. Ieškoti kažko sudėtyje xdm, gdm ar kdm savo rc *. D katalogų ar savo / etc / inittab.

Kontroliuoti init

Kartais, jums reikia suteikti init šiek tiek smūgį pasakyti, pereiti lygmenys, iš naujo skaityti inittab failą, arba tiesiog išjungti sistemą. Kadangi paleidimo visada pirmasis procesas nuo sistemos, VMI ID proceso visada 1.

Jūs galite kontroliuoti init su telinit. Pavyzdžiui, jei norite pereiti prie runlevel 3, naudokite šią komandą:

telinit 3

Įjungus lygmenys, init bando nužudyti ne bet aren'ta Tai procesus inittab failą naujo paleidžiamojo lygio. Taigi, jūs turėtumėte būti atsargūs, apie Pakeitus lygmenys.

Kai jums reikia pridėti arba pašalinti respawning darbo arba atlikti bet kokį kitą pasikeitimą inittab failą, privalote pasakyti init apie pokyčius ir pasirūpinti, kad jis pakartotinai skaityti bylą. Kai kurie žmonės naudoja kill-HUP 1 pasakyti init tai padaryti. Šis tradicinis metodas veikia daugelyje UNIX versijų, kaip ilgai, kaip jūs įveskite jį teisingai. Tačiau, jūs taip pat galite paleisti šią telinit komandą:

telinit q

Taip pat galite naudoti telinit s pereiti prie vieno vartotojo režime.

Išjungimas

Taip pat init kontroliuoja, kaip sistema išsijungia ir persikrauna. Tinkamas būdas išjungti Linux mašina yra naudoti komandą shutdown.

Yra du pagrindiniai būdai, kaip naudoti išjungimo. Jei sustabdyti sistemą, išjungia mašiną žemyn ir saugo jį žemyn. Jei norite, kad mašina nedelsiant nutraukti, naudokite šią komandą:

shutdown-h dabar

Daugumoje šiuolaikinių mašinų su pagrįstai pastaraisiais versijų Linux, sustabdyti nutraukia maitinimo mašiną. Taip pat galite perkrauti kompiuterį. Prastovai dėl sistemos perkrovimo, naudokite-R-h vietoje.

Uždarymo procesas trunka kelias sekundes. Jūs niekada neturėtų iš naujo arba išjunkite mašiną šiame etape.

Ankstesniame pavyzdyje, dabar yra laikas uždaryti. Šis argumentas yra privalomas, tačiau yra daug būdų nurodymas jį. Jei norite, kad mašina Go down kada nors ateityje, vienas būdas yra naudoti + N, kur N yra minučių išjungimo laukti skaičius Prieš tai PTS turėtų dirbti. Dėl kitų variantų, pažvelgti į išjungimo (8) rankinio puslapyje.

Kad sistema perkrauti 10 minučių, paleiskite šią komandą:

shutdown-r + 10

Linux, uždarymo praneša visiems prisijungęs, kad mašina žemyn, Bet tai mažai realaus darbo. Jei nurodote laiką, išskyrus dabar išjungimas Called Sukuria failą / etc / Nologin. Kai šis failas yra, sistema draudžia vardus visiems, išskyrus administratoriaus.

Kai uždarymo sistemos laikas pagaliau atvyksta, uždarymo pasakoja init pereiti prie runlevel 0 6 už sustabdyti ir paleidžiamojo lygio prastovai dėl sistemos perkrovimo. Kai Įveda paleidžiamojo lygio paleidimo arba 0 6, visi taip vyksta, kuriuos galite patikrinti, žiūrėdamas viduje rc0.d ir rc6.d scenarijus:

1. init žudo kiekvieną procesą, kad jis gali (nes tai Įjungus bet kuriai kitai paleidžiamojo lygio).

# Pradiniai rc0.d / rc6.d komandas paleisti, užraktas failus į vietą ir todėl kiti preparatai, skirti išjungimas.
# Kitos rc0.d / rc6.d komandos atjunkite visus failų sistemas, išskyrus šaknis.
# Daugiau rc0.d / rc6.d komandos įrengsite kad šakninė failų sistema tik skaityti.
# Vis daugiau rc0.d / rc6.d komandas rašyti visi buferinis apie ryšius su failų sistemos su sinchronizavimo programą.
# Galutiniai rc0.d / rc6.d komandos pasakyti branduolys, perkrauti arba sustabdyti su perkrovimo, sustabdyti, ar maitinimo i ˛ tampos programą.

Perkrovimo ir sustabdyti programos elgiasi skirtingai kiekvienam paleidžiamąjį lygį ir kilti painiavos. Numatyta, kad šios programos skambinti uždarymo su-r arba-H galimybių, tačiau jei sistema jau dabar yra sustabdyti arba paleisti paleidžiamąjį lygį, programos pasakyti branduolio išjungti tuoj pat. Jei tikrai norite uždaryti savo mašiną neskuba (neatsižvelgiant į bet kokį galimą žalą nuo netvarkingo išjungti), naudokite-f variantą.

Palikite komentarą