"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. The kernel mounts the root filesistema.
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 šaknis filesistema:

VFS: Montuojamas root (ext2 filesystem) readonly.

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.

There are a few different variations, but most Linux distributions use the System V style discussed here. Some distributions use a simpler version that resembles the BSD init, but you are unlikely to encounter this.

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.

The easiest way to get a handle on runlevels is to examine the init configuration file, /etc/inittab. Look for a line like the following:

ID: 5: init:

This line means that the default runlevel on the system is 5. All lines in the inittab file take this form, with four fields separated by colons occurring in the following order:
# 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ė suaktyvina didžiąją dalį sistemos konfigūracijos ir paslaugų per rc * .d ir init.d katalogus. Galite pamatyti, kad init yra nustatytas vykdyti komandą, pavadintą /etc/rc.d/rc 5, kai veikia 5 lygis. Laukimo veiksmas nurodo, kada ir kaip init paleidžia komandą: paleiskite rc 5 vieną kartą, kai enterPrieš pradėdami ką nors kitą, palaukite, kol baigsis ši komanda.

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

The respawn action causes init to run the command that follows, and if the command finishes executing, to run it again. You’re likely to see something similar to this line in your inittab file:

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.

ctrlaltdelis

Šis ctrl„altdel“ veiksmas kontroliuoja, ką sistema daro, kai virtualioje konsolėje paspaudžiate CONTROL-ALT-DELETE. Daugelyje sistemų tai yra tam tikra perkrovimo komanda, naudojant išjungimo komandą.

sysinit

Sistemos veiksmas yra pats pirmas dalykas, kurį init turėtų paleisti, kai jis pradedamas, prieš tai enterbet kokiose pakopose.

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?

For runlevel 5, in this example, the commands are probably either in /etc/rc.d/rc5.d or /etc/rc5.d. Runlevel 1 uses rc1.d, runlevel 2 uses rc2.d, and so on. You might find the following items in the rc5.d directory:

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

If you want to add, delete, or modify services in the rc*.d directories, you need to take a closer look at the files inside. A long listing reveals a structure like this:

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

The commands in an rc*.d directory are actually symbolic links to files in an init.d directory, usually in /etc or /etc/rc.d. Linux distributions contain these links so that they can use the same startup scripts for all runlevels. This convention is by no means a requirement, but it often makes organization a little easier.

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

Occasionally, you need to give init a little kick to tell it to switch runlevels, to re-read the inittab file, or just to shut down the system. Because init is always the first process on a system, its process ID is always 1.

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

telinit 3

When switching runlevels, init tries to kill off any processes that aren’t in the inittab file for the new runlevel. Therefore, you should be careful about changing runlevels.

When you need to add or remove respawning jobs or make any other change to the inittab file, you must tell init about the change and cause it to re-read the file. Some people use kill -HUP 1 to tell init to do this. This traditional method works on most versions of Unix, as long as you type it correctly. However, you can also run this telinit command:

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

On Linux, shutdown notifies anyone logged on that the machine is going down, but it does little real work. If you specify a time other than now, shutdown creates a file called /etc/nologin. When this file is present, the system prohibits logins by anyone except the superuser.

Kai pagaliau pasirodo sistemos išjungimo laikas, išjungimas liepia init perjungti į 0 pakopą, jei norite sustabdyti, ir 6 pakopą, jei norite paleisti iš naujo. Kai iniciacija enter0 ar 6 pakopos lygio, įvyksta visa tai, ką galite patikrinti peržiūrėję scenarijus rc0.d ir rc6.d viduje:

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

# The initial rc0.d/rc6.d commands run, locking system files into place and making other preparations for shutdown.
# The next rc0.d/rc6.d commands unmount all filesystems other than the root.
# Further rc0.d/rc6.d commands remount the root filesystem read-only.
# Still more rc0.d/rc6.d commands write all buffered data out to the filesystem with the sync 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ą.

"Linux" batai

Palikite komentarą