Linux Saapad

Nagu selgub, pole alglaadimisprotsessis palju:

1. Alglaadur leiab kerneli pildi failist disk, laadib selle mällu ja käivitab selle.
2. Kernel initsialiseerida seadmed ja STI draivereid.
3. Kernel ühendab juurfailisystem.
4. Kernel käivitub init Called ajastada.
5. init seab ülejäänud protsessid liikuma.
6. Viimane protsesside init starts osana boot jada võimaldab teil sisse logida.

Buutimisprotsessi iga etapi tuvastamine on alglaadimisprobleemide lahendamisel ja selle mõistmisel hindamatu system tervikuna. Alustuseks nullige alglaadur, mis on esialgne ekraan või viip, mille saate pärast arvuti sisselülitamise enesetesti, küsides, milline operatsioonisüsteem töötab system jooksma. Pärast valiku tegemist käivitab alglaadur faili Linux kernel, mis annab kontrolli üle system tuumale.

On üksikasjalik arutelu kernel mujal selles raamatus, millest see artikkel on koolitusprogrammist. See artikkel hõlmab kernel käivitamise etapil, etapp, mil kern prindib hulga sõnumeid riistvara kohta, mis sellel on system. Kernel käivitab init kohe pärast seda, kui kuvatakse teade selle kohta, et kernel on juurfailsystem:

VFS: Paigaldatakse root (ext2 failidsystem) Loe ainult.

Varsti pärast seda näete teadet init käivitamise kohta, millele järgneb system teenuse käivitamise sõnumid ja lõpuks saate mingisuguse sisselogimisviiba.

MÄRKUSED : On Red Hat Linux, on algmärkus eriti ilmne, sest see „terretab“ teid Red Hati Linux. ” Kõik sõnumid näitavad ekraani paremas servas sulgudes õnnestumist või ebaõnnestumist.

Enamik selles peatükis käsitletakse init, sest see on, kui osa boot jada teil on kõige kontrolli.
init

Initis pole midagi erilist. See on programm nagu iga teinegi Linux systemja leiate selle / sbinist koos teiste failidega system binaarfailid. Initi põhieesmärk on käivitada ja peatada teisi programme kindlas järjestuses. Kõik, mida peate teadma, on see, kuidas see järjestus töötab.

Seal on mõned erinevad variatsioonid, kuid enamik Linux distributsioonid kasutavad System Siin käsitletud V stiil. Mõnes jaotuses kasutatakse lihtsamat versiooni, mis sarnaneb BSD-initiga, kuid tõenäoliselt ei leia te seda.

Töötasemete

Igal ajahetkel a Linux system, töötab teatud protsesside põhikomplekt. See seisund machine nimetatakse selle jooksutasemeks ja seda tähistatakse arvuga 0 kuni 6. The system veedab suurema osa ajast ühe jooksutasemega. Kui aga sulgete macHine down, init lülitub teisele jooksutasemele, et see lõpetada system teenuseid korrapäraselt ja käskida tuumal lõpetada. Veel üks käitustase on mõeldud ühele kasutajale mode, arutatakse hiljem.

Lihtsaim viis käitustasemete käsitsemiseks on uurida initi konfiguratsioonifaili /etc/inittab. Otsige järgmist rida:

ID: 5: initdefault:

See rida tähendab, et default jooksutase system on 5. Kõik read inittab failis on sellisel kujul, kusjuures neli koolonitega eraldatud välja esinevad järgmises järjekorras:
# Kordumatu tunnus (lühike string, näiteks ID eelmises näites)
# Kohaldatav töötasemele number (numbrid)
# Toiming, mille init peaks tegema (eelmises näites on toiming seatud default jooksutase kuni 5)
# Käsu (vabatahtlik)

Eelmises initsis pole käsku täitadefault näide, sest käsul pole mõtet default jooksutase. Vaadake inittabis veidi allapoole, kuni näete sellist joont:

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

See rida käivitab suurema osa system seadistamine ja teenused kataloogide rc * .d ja init.d kaudu. Näete, et init on seadistatud käivitama käsu /etc/rc.d/rc 5 käsu käivitustasemel 5. Ootamistoiming annab teada, millal ja kuidas init käsku käivitab: käivitage rc 5 üks kord, kui entering runlevel 5 ja oodake enne kui midagi muud teete, kuni see käsk lõpeb.

Seal on mitu erinevat toimingut addalgatusdefault ja oodake, eriti mis puudutab toitehaldust, ja käsiraamat inittab (5) räägib neist kõigest. Neid, millega kõige tõenäolisemalt kokku puutute, selgitatakse järgmistes jaotistes.

respawn

Respawn-toiming paneb initi käivitama järgneva käsu ja kui käsk lõpetab täitmise, käivitab selle uuesti. Tõenäoliselt näete oma inittab-failis midagi sellele reale sarnast:

1: 2345: respawn :/ sbin / mingetty tty1

Getty programmid annavad login juhiseid. Eelmise rea on esimene virtuaalne konsool (/ dev / tty1), üks näed Kui vajutad ALT või KONTROLLI ALT-F1 F1. Respawn tegevus toob sisselogimisviip tagasi pärast välja logida.

ctrlmujal

. ctrlaltdeli tegevus kontrollib, mida system teeb, kui vajutate virtuaalsel konsoolil CONTROL-ALT-DELETE. Enamikul systems, see on mingi taaskäivitamise käsk, kasutades käsku shutdown.

sysinit

Toiming sysinit on esimene asi, mida init peaks käivitamisel juba enne seda tegema entersuvalistes jooksutasandites.

Kuidas protsessid käivitustasemeid alustada

Nüüd olete valmis õppima, kuidas seda algatada system teenuseid vahetult enne sisselogimist. Tuletage see varasem inittab rida meelde:

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

See väike rida käivitab paljud muud programmid. RC tähistab käivituskäsk ja kuuled inimesi viidata käske skripte, programme või teenuseid. Nii, kus on need käsud, anyway?

Käivitustaseme 5 puhul on selles näites käsud tõenäoliselt kas /etc/rc.d/rc5.d või /etc/rc5.d. Runlevel 1 kasutab rc1.d, 2. taseme rc2.d jne. Võite leida järgmise items kataloogis rc5.d:

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

Rc käivitab 5 programme selles töötase kataloog käivitades järgmised käsud:

S10sysklogd kodu
S12kerneld kodu
S15netstd_init kodu
S18netbase kodu
...
S99sshd kodu

Pange tähele iga käsu algusargumenti. S käsunimes tähendab, et käsk peaks käivitama alguses mode, ja number (00 kuni 99) määrab, kust jadas rc käsku käivitab.

RC * käsud tavaliselt shelliskriptides .D See Start Programs / sbin või / usr / sbin. Tavaliselt saate aru saada, mida üks käsud tegelikult teeb vaadates skripti vähem või muu piipar programm.

Üht neist teenustest saate käivitada käsitsi. Näiteks kui soovite käivitada httpd-veebiserveri programmi käsitsi, käivitage S99httpd start. Samamoodi, kui teil on kunagi vaja tappa üks teenustest, kui machine on sisse lülitatud, saate käsu käivitada kataloogis rc * .d stop-argumendiga (näiteks S99httpd stop).

Mõned rc*.d kataloogid sisaldavad käske, mis algavad tähega K ("kill" või stop mode). Sel juhul käivitab rc käsu start-argumendi asemel stopp-argumendiga. Kõige tõenäolisemalt kohtate K-käske töötasemetel, mis sulgevad system maha.

Addteenuste loomine ja eemaldamine

Kui soovite add, kustutage või muutke teenuseid rc*.d kataloogides, peate selle sees olevaid faile lähemalt uurima. Pikast loetelust selgub selline struktuur:

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

Kataloogis rc*.d olevad käsud on tegelikult sümboolsed lingid failidele init.d kataloogis, tavaliselt kataloogis /etc või /etc/rc.d. Linux distributsioonid sisaldavad neid linke, et nad saaksid kasutada samu käivitusskripte kõigil käivitustasemetel. See konventsioon ei ole mingil juhul nõue, kuid sageli muudab see organiseerimise pisut lihtsamaks.

Kui soovite takistada kataloogis init.d ühe käsu käivitamist kindlas käitustasemel, võiksite mõelda sümboolse lingi eemaldamisest vastavas kataloogis rc * .d. See töötab küll, kuid kui teete vea ja peate kunagi lingi uuesti oma kohale tagasi panema, võib teil olla probleeme lingi täpse nime meelde jätmisega. Seetõttu ei tohiks te linke rc * .d kataloogidest eemaldada, vaid pigem add alljoon (_) lingi nime algusesse selline:

mv S99httpd _S99httpd

Alglaadimise ajal ignoreerib rc _S99httpd-d, kuna see ei alga tähtedega S ega K. Lisaks on algne nimi endiselt ilmne ja teil on käsule kiire juurdepääs, kui teil on näputäis ja peate seda käsitsi käivitama.

Et add teenus, peate looma skripti nagu teised kataloogis init.d ja seejärel tegema sümboolse lingi õigesse kataloogi rc * .d. Lihtsaim viis skripti kirjutamiseks on uurida juba init.d-s olevaid skripte, teha endale arusaadavast koopia ja muuta koopiat.

Kui addKui valite teenuse, valige teenuse käivitamiseks alglaadimisjärjestuses sobiv koht. Kui teenus käivitub liiga kiiresti, ei pruugi see mõnest muust teenusest sõltuda. Vähetähtsate teenuste jaoks enamik systems administrators eelistavad 90ndate numbreid, pärast enamikku kaasas olnud teenustest system.

Linux distributsioonidega on tavaliselt kaasas käsk teenuste lubamiseks ja keelamiseks kataloogides rc * .d. Näiteks Debianis on käsk update-rc.d ja Red Hatis Linux, käsk on chkconfig. Saadaval on ka graafilised kasutajaliidesed. Nende programmide kasutamine aitab hoida käivituskataloogid järjepidevana ja aitab kaasa versiooniuuendustele.

VIHJE: Üks levinumaid Linux installprobleemid on valesti konfigureeritud XFree86 server, mis vilgub sisse ja välja, muutes selle system konsoolidel kasutamiskõlbmatu. Selle käitumise peatamiseks käivitage ühe kasutajaga versioon mode ja muutke oma käitamistasandit või käitamistaseme teenuseid. Otsige oma rc*.d kataloogidest või /etc/inittabist midagi, mis sisaldab xdm-i, gdm-i või kdm-i.

Controlling init

Aeg-ajalt peate initile pisut hoogu andma, et käskida tal vahetada käitamistasemeid, lugeda uuesti inittab-faili või lihtsalt shut down the,en system. Kuna init on alati a-s esimene protsess system, selle protsessi ID on alati 1.

Saate kontrollida init koos telinit. Näiteks kui sa tahad minna töötase 3, seda käsku kasutada:

telinit 3

Käitustasemete vahetamisel püüab init hävitada kõik protsessid, mida uue käitustaseme inittab-failis pole. Seetõttu peaksite käitustasemete muutmisel olema ettevaatlik.

Kui vaja add või eemaldage inittab-failis uuesti ilmumistööd või tehke muid muudatusi, peate initile muudatusest teatama ja laskma tal faili uuesti lugeda. Mõned inimesed kasutavad käsku kill -HUP 1, et käskida init seda teha. See traditsiooniline meetod töötab enamiku Unixi versioonide puhul, kui sisestate selle õigesti. Siiski saate käivitada ka selle teliniti käsu:

telinit q

Ühe kasutajaga režiimile lülitumiseks saate kasutada ka telinit s mode.

Suletakse

init kontrollib ka seda, kuidas system lülitub välja ja taaskäivitub. Õige viis shut down a Linux machine on kasutada käsku shutdown.

Väljalülitamiseks on kaks põhilist viisi. Kui peatate system, lülitab see välja machine maha ja hoiab seda all. Et teha macpeatage kohe, kasutage seda käsku:

shutdown-H nüüd

Enamikul modern machines koos suhteliselt värskete versioonidega Linux, katkestab peatamine seadme voolu machine. Võite ka taaskäivitada machine. Taaskäivitamiseks kasutage -h asemel -r.

Väljalülitamine võtab mitu sekundit. Ärge kunagi lähtestage ega lülitage välja a macselles etapis.

Eelmises näites on nüüd aeg selleks shut down. See argument on kohustuslik, kuid selle täpsustamiseks on palju võimalusi. Kui soovite machine millalgi tulevikus alla minna, üks võimalus on kasutada + n, kus n on minutite arv, mida seiskamine peaks ootama enne töö tegemist. Teiste jaoks options, vaadake sulgemisjuhendi (8) lehekülge.

Teha system taaskäivitage 10 minuti pärast, käivitage see käsk:

shutdown-R + 10

On Linux, väljalülitamine teavitab kõiki, kes on sisse loginud, et machine langeb, kuid see teeb vähe tegelikku tööd. Kui määrate mõne muu aja kui praegu, loob sulgemine faili nimega /etc/nologin. Kui see fail on olemas, siis system keelab sisselogimised kellelgi, välja arvatud superkasutajal.

Kui system lõpuks saabub väljalülitusaeg, seiskamine käsib initil seiskamiseks käivitasemele 0 ja taaskäivitamiseks käigutasemele 6 minna. Kui init enters taseme 0 või 6 korral toimub kõik järgmine, mida saate kontrollida rc0.d ja rc6.d sisemisi skripte vaadates:

1. Iga init protsess tapab, et see võib (kui see Minnes muid töötase).

# Esialgsed käsud rc0.d / rc6.d töötavad, lukustuvad system failid paika panna ja teha muid ettevalmistusi sulgemiseks.
# Järgmised rc0.d/rc6.d käsud eemaldavad kõik failidsystems muud kui juur.
# Täiendavad rc0.d/rc6.d käsud ühendavad juurfaili uuestisystem Loe ainult.
# Veel rohkem rc0.d/rc6.d käske kirjutab kõik puhverdatud andmed faili väljasystem sünkroonimisprogrammiga.
# Lõplik rc0.d / rc6.d käske öelda kernel reboot või lõpe reboot, peatada või täielikuks väljalülitamiseks programmi.

Taaskäivitamise ja peatamise programmid käituvad iga käitustaseme puhul erinevalt, põhjustades potentsiaalselt segadust. kõrval default, kutsuvad need programmid väljalülitamist -r või -h abil options, aga kui system on juba taseme peatamisel või taaskäivitamisel, käskivad programmid kernelil end kohe välja lülitada. Kui soovite tõesti oma mackiirustades pikali (eirates võimaliku kahjustuse korralageduse väljalülitamisest), kasutage valikut -f.

Tehnoloogiafännina olen alates 2006. aastast rõõmuga kirjutanud lehel StealthSettings.com. Mul on laialdased kogemused operatsioonisüsteemides: macOS, Windows ja Linux, samuti programmeerimiskeeltes ja blogiplatvormides (WordPress) ning veebipoodide ja platvormidega (WooCommerce, Magento, PrestaShop).

Jäta kommentaar