Linux Čizme

Kao što se ispostavilo, nema puno na dizanju:

1. Boot loader Pronalazi kernel image na disku, ona učitava u memoriju, i to počinje.
2. Kernel početne uređaje i STI upravljačkih programa.
3. Kernel nosače root datotečni sustav.
4. Kernel počinje init Pozvani na rasporedu.
5. init postavlja ostatak procese u pokretu.
6. Posljednji procesi koji init započinje kao dio boot sekvence omogućuju vam da se prijavite na.

Prepoznavanje svaku fazu procesa dizanja je neprocjenjiva u rješavanju problema boot i razumijevanje sustava u cjelini. Za početak, usredotočiti na boot loader, The koji je početni zaslon ili vas dobiti nakon što se računalo ne spolno prenosivih bolesti Power-on self-test, pita koji operativni sustav za pokretanje. Nakon što napravite izbor, boot loader pokreće Linux kernel, Predaja kontrolu sustava na kernel.

Tu je detaljna rasprava o kernel drugdje u ovoj knjizi iz koje se ovaj članak scene. Ovaj članak pokriva kernel inicijalizacije pozornica, Pozornica Kad kernel ispisuje hrpu poruka o hardveru prisutan na sustavu. Kernel počinje init tek nakon što se prikazuje poruku navješćujući da kernel je montiran root datotečnog sustava:

VFS: mounted Korijen (ext2 datotečnog sustava) samo za čitanje.

Ubrzo nakon toga, Hoćeš li vidjeti poruku o init paljenja, nakon čega slijedi poruka sustava pokretanjem servisa, i napokon dobiti login neke vrste.

BILJEŠKA : Na Red Hat Linux, The Init Bilješke posebno je očita, jer "pozdravlja" te da se "Red Hat Linux". Sve poruke nakon toga pokazuju uspjeh ili neuspjeh u zagradi na desnoj strani zaslona.

Većina ovog poglavlja bavi init, jer je to GDJE dio dizanja imate najviše kontrole.
init

Ne postoji ništa posebno o init. To je raspored baš kao i bilo koji drugi na Linux sustavu, a vi ćete ga naći u / sbin, zajedno s drugim binarne datoteke sustava. Glavna svrha init je za pokretanje i zaustavljanje druge programe u određenom redoslijedu. Sve što trebate znati je kako to funkcionira slijed.

Postoji nekoliko različitih varijacija, ali većina Linux distribucija koristiti stil System V ovdje raspravlja. Neke distribucije koristiti Jednostavnije verzija koja sliči BSD init, ali vi ste vjerojatno da će naići na ovo.

Izvršne nivoe

U bilo kojem trenutku na Linux sustavu, Skup osnovnih određene procese radi. Ovo stanje stroja je nazvati njezinim runlevel, a to je označeno s brojem iz 0 6 putem. Sustav provodi većinu vremena SPI u jednom runlevel. Međutim, kada se zatvori stroj dolje, init prebacuje na drugu runlevel kako bi završio godinu usluge sustava u uredno i reći kernel da se zaustavi. Još jedan runlevel je za single-user modu, objašnjeno kasnije.

Najlakši način da se obrađuju na izvršne nivoe je ispitati init konfiguracijske datoteke, / etc / inittab. Potražite liniju kao što su sljedeće:

ID: 5: initdefault:

Ova linija znači da zadani runlevel na sustavu je 5. Sve linije u datoteci inittab se ovaj oblik, s četiri polja odvojene dvotočke događaju u sljedećim redoslijedom:
# Jedinstveni identifikator (kratki string, kao što je ID u prethodnom primjeru)
# Primjenjivo runlevel broj (evi)
# Init koji bi trebao poduzeti (u prethodnom primjeru, akcija je za postavljanje zadanog runlevel se 5)
# Naredba za izvršiti (opcionalno)

Ne postoji naredba za izvršenje u prethodnom primjeru initdefault Jer zapovijed nema smisla u kontekstu postavljanja zadani runlevel. Pogledajte malo dalje u inittab, dok ne vidite liniju ovako:

l5: 5: pričekajte :/ etc / rc.d / rc 5

Ova linija pokreće većinu konfiguraciji sustava i usluga kroz rc *. D i init.d imenike. Možete vidjeti da init je postavljen izvršiti naredbu zove / etc / rc.d / rc 5 5 Kad je u runlevel. Čekati akcije govori kada i kako init pokreće naredba: RC pokrenuti prilikom ulaska u Runlevel 5 5 jednom, a zatim čekati za ovu naredbu da završi prije nego što bilo što drugo.

Postoji nekoliko različitih aktivnosti Osim initdefault i čekati, posebno se odnose na upravljanje energijom, a inittab (5) upotrebu stranica govori sve o njima. One koje ste najvjerojatnije susresti To je objašnjeno u sljedećim poglavljima.

respawn

Respawn akcija uzrokuje init pokrenuti naredbu koja slijedi, a ako naredba Obrada izvršenja, kako bi ga ponovno pokrenuti. Vi ste vjerojatno da će vidjeti nešto slično ovoj liniji u vašem inittab datoteku:

1: 2345: respawn :/ sbin / mingetty tty1

Getty programi pružaju prijava traži. Prethodni linija je prvi virtualni konzole (/ dev / tty1), jednom vidite Kada pritisnete ALT ili Control-Alt-F1 F1. Respawn akcija donosi upit za prijavu leđa nakon što se odjavite.

ctrlaltdel

U ctrlaltdel akcija kontrole što sustav radi kad pritisnete Control-Alt-Delete na virtualnu konzolu. Na većini sustava, ovo je neka vrsta ponovnog pokretanja naredbe korištenjem naredbi shutdown.

sysinit

Sysinit akcija je vrlo prva stvar init To bi trebao raditi kada počinje gore, prije upisa izvršne nivoe.

Kako započeti procesi izvršne nivoe

Sada ste spremni učiti kako init pokreće usluge sustava, upravo prije nego što vam omogućuje da se prijavite na. Podsjetimo ovu inittab liniju iz Ranije:

l5: 5: pričekajte :/ etc / rc.d / rc 5

Ova mala linija izaziva mnoge druge programe. RC stoji za pokrenuti naredbe, i čut ćete ljudi se odnose na naredbe kao skripti, programe ili usluge. Dakle, gdje su Te naredbe, svejedno?

Za runlevel 5, u ovom primjeru, naredbe koje su vjerojatno ili u / etc / rc.d / rc5.d ili / etc / rc5.d. Runlevel 1 koristi rc1.d, izvršnih nivoa 2 rc2.d koristi, i tako dalje. Možda ćete pronaći stavke u rc5.d GMT imeniku:

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

Naredba rc 5 pokreće programe u ovom runlevel direktorij pomoću programa GMT naredbe:

S10sysklogd kuće
S12kerneld kuće
S15netstd_init kuće
S18netbase kuće

S99sshd kuće

Obavijest argument start u svaku naredbu. S sredstvo u ime naredbe koje bi trebale pokrenuti naredbu u start, a broj (00 kroz 99) određuje gdje u nizu RC počinje naredbu.

Rc *. D naredbe ljuske skripte koje obično počinju programi u / sbin ili / usr / sbin. Normalno, možete shvatiti što je jedan od naredbi zapravo ne gleda na scenariju s manje ili pager drugi program.

Možete početi jedan od tih usluga rukom. Na primjer, ako želite pokrenuti web server softver httpd ručno pokrenuti S99httpd početka. Isto tako, ako vam ikada trebati ubiti jednu od usluga Kad je uređaj uključen, možete pokrenuti naredbu u RH *. D katalog na zaustavnoj argument (S99httpd stanica, na primjer).

Neki rc *. D direktorija koji sadržavaju naredbe početi s K (za "ubiti" ili stop modu). U ovom slučaju, rc pokreće naredbu na zaustavnoj argument umjesto kuće. Vi ste najvjerojatnije susresti u K naredbi izvršne nivoe To zatvori sustav prema dolje.

Dodavanje i uklanjanje usluge

Ako želite dodati, brisati ili mijenjati usluga u RH. * D direktorija, trebate uzeti bliži pogled na datoteke unutar. Dugi popis otkriva strukturu ovako:

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

Naredbe u godini rc *. D katalog su zapravo simbolički linkovi na datoteke u direktoriju init.d godine, obično u / etc ili / etc / rc.d. Ovi linkovi na Linux distribucijama SADRŽAVATI da oni mogu koristiti iste pokretanja skripte za sve izvršne nivoe. Ova konvencija nipošto od pričuvi, ali često čini malo lakše organizacije.

Kako spriječiti jednu od naredbi u init.d direktorija iz trčanje u određenom runlevel, možda mislite o uklanjanju simboličku vezu u odgovarajućem RH *. D direktoriju. To ne rade, ali ako ste pogriješili i uvijek trebate staviti link natrag na mjesto, možda imate problema sjetiti točan naziv linka. Dakle, ne bi trebao maknuti linkove u rc * d direktorije, nego, dodajte donja (_) na početku veze imenom kao što je ovaj.:

mv S99httpd _S99httpd

U vrijeme podizanja, rc ignorira _S99httpd jer ne počnete sa S ili K. Nadalje, originalni naziv je još uvijek bilo očito, i imate brzi pristup naredbi, ako ste u patiti, a trebate ga pokrenuti ručno.

Za dodavanje uslugu, morate stvoriti scenarij poput ostalih u init.d direktoriju, a zatim napraviti simboličku vezu u ispravnom RH *. D direktoriju. Najlakši način da se napisati scenarij je da ispita je već u init.d skripti, napraviti kopiju jedne da razumijete, i izmijeniti kopiju.

Prilikom dodavanja usluge, pobrinite se da ste odabrali odgovarajuće mjesto u redoslijedu za podizanje sustava za pokretanje usluge. Ako usluga počinje prerano, to ne može raditi, zbog ovisnosti o drugoj službi. Za ne-bitnih usluga, većina sustavi administratori vole brojeve u 90s, nakon što je većina od usluga koje kamera sa sustavom.

Obično Linux distribucije dolaze sa zapovjedništvom omogućiti i onemogućiti usluge u rc *. D imenike. Na primjer, u Debianu, naredba je ažuriranje-rc.d, au Red Hat Linux, naredba je chkconfig. Grafička korisnička sučelja su također dostupni. Korištenje tih programa pomaže zadržati startup imenike dosljedna i pomaže kod nadogradnje.

Nagovijestiti: Jedan od najčešćih problema Linuxa je godine nepravilno konfiguriran server XFree86 To pomake i isključivanje, čineći sustav neupotrebljivim na konzoli. Da se zaustavi ovo ponašanje, dignuti u single-user modu i promijeniti svoje runlevel ili izvršnih nivoa usluge. Potražite nešto koja sadrži XDM GDM ili KDM u rc *. D direktorije ili / etc / inittab.

Kontroling init

Povremeno, trebate dati init malo udarca reći mu da to prebacivanje izvršne nivoe, ponovno čitati inittab datoteku, ili jednostavno ugasiti sustav. Zbog init je uvijek prvi proces na sustavu, STI proces ID je uvijek 1.

Možete kontrolirati init s telinit. Na primjer, ako želite da se prebacite na runlevel 3, koristite ovu naredbu:

telinit 3

Prilikom prelaska izvršne nivoe, init Pokušava ubiti bilo aren'ta To procesi u inittab datoteku za novog runlevel. Stoga, trebali biste biti oprezni o Promjena izvršne nivoe.

Kad trebate dodati ili ukloniti respawning radnih mjesta ili bilo koji drugi promjenu u inittab datoteku, morate reći init o promjeni i uzrokovati da se ponovno čitati datoteku. Neki ljudi koriste ubiti HUP-1 reći init da to učinite. Ova tradicionalna metoda radi na većini verzija Unix, koliko god ga upišite ispravno. Međutim, također možete pokrenuti ovu naredbu telinit:

telinit q

Također možete koristiti telinit je da se prebacite na single-user modu.

Gašenje

Također init kontrole kako sustav se isključuje i ponovno podizanje sustava. Pravilan način da isključite Linux stroj je koristiti naredbu shutdown.

Postoje dva osnovna načina za korištenje shutdown. Ako zaustaviti sustav, što isključuje stroj dolje, a to vodi prema dolje. Da bi stroj zaustaviti odmah, koristite ovu naredbu:

shutdown-h sada

Na većini modernih strojeva s relativno novije verzije Linuxa, stoj reže moć stroja. Također možete ponovno pokrenuti računalo. Za ponovno podizanje sustava, koristiti-r-h UMJESTO.

Shutdown proces traje nekoliko sekundi. Vi nikada ne bi trebao resetirati ili isključivanje uređaja tijekom ove faze.

U prethodnom primjeru, sada je vrijeme da se ugasiti. Ovaj argument je obavezno, ali postoji mnogo načina za to Odre. Ako želite stroj ići dolje negdje u budućnosti, jedan od načina je da koristite + n, gdje je n broj minuta obustava čekati prije nego radi svoj trebao raditi. Za ostale mogućnosti, pogledajte shutdown (8) ručnim stranici.

Da bi sustav ponovno 10 minuta, pokrenuti ovu naredbu:

shutdown-r + 10

Na Linuxu, shutdown obavještava nikoga prijavljeni na koji se stroj ide dolje, ali to ipak malo pravi posao. Ako odredite vrijeme osim sada, shutdown Nazvan Stvara datoteku / etc / nologin. Kad ovu sliku prisutan, sustav zabranjuje prijave od strane bilo koga osim superkorisnik.

Kad sustav shutdown vrijeme napokon stigne, shutdown govori init da se prebacite na runlevel 0 6 za zastoja i izvršnih nivoa za ponovnim pokretanjem računala. Kada se ulazi u Runlevel init ili 0 6, svi sljedeći odvija, koji možete provjeriti gledajući skripte unutar rc0.d i rc6.d:

1. init ubija svaki proces da se može (kao što bi prelaskom na bilo koji drugi runlevel).

# Početne rc0.d / rc6.d naredbe pokrenuti, sustav zaključavanja datoteka na svoje mjesto, a što druge pripreme za gašenje.
# Sljedećih rc0.d / rc6.d naredbe demontirati sve datotečne sustave, osim korijena.
# Nadalje rc0.d / rc6.d naredbe ponovno montira korijenski datotečni sustav samo za čitanje.
# Još više rc0.d / rc6.d naredbe sve pisati puferirana na out na datotečni sustav s sync program.
# Konačni rc0.d / rc6.d naredbe da kernel ponovno pokretanje ili zaustavljanje postupka ponovnog pokretanja, zaustavljanja ili poweroff programa.

Ponovno pokretanje i zaustavljanje programa ponašaju različito za svaku runlevel, potencijalno uzrokuje zbunjenost. Po defaultu, Ti programi nazovite obustava rada s-R ili-H opcija, ali ako je sustav već na zaustaviti ili ponovno podizanje sustava runlevel, programi reći kernel isključiti sebi odmah. Ako stvarno želite da zatvori svoj stroj dolje u žurbi (zanemarujući eventualne štete od neuredno isključivanja), koristiti opciju-f.

Ostavite komentar

Ova web stranica koristi Akismet za smanjenje neželjene pošte. Saznajte kako se podaci vašeg komentara obrađuju.