Učitavanje operativnog sustava Linux. Izvršavanje skripte pri pokretanju ili gašenju Linuxa

sekundarni pokretač dijagram sa karta lokacije. Ovo obavlja posao sa LILO aktivnost koja zahtijeva povećanu pažnju, budući da se mijenja postupak utovara ne atomski: prvo korisnik modificira kernel ili njegove module, zatim uređuje datoteku /etc/ lilo.konf, koji sadrži informacije o svim opcijama pokretanja računala, a zatim pokreće naredbu lilo, koji prikuplja tablice postavljanja za sve navedene jezgre i sekundarni pokretač te zapisuje primarni i sekundarni utovarivač zajedno s kartama do navedenog mjesta na disku. Primarni utovarivač LILO(naziva se LI) može se pisati i u MBR i na početak odjeljak Linux.

Najjednostavnija datoteka lilo.konf može izgledati ovako:

Boot=/dev/hda map=/boot/map image=/boot/vmlinuz-up root=/dev/hda1 Primjer 10.1. Najjednostavnije postavljanje LILO: primjer datoteke lilo.conf

Ova postavka LILO definira samo jednu opciju pokretanja: primarni utovarivač je napisan na početku prvog tvrdi disk(linija boot=/dev/ hda), karta smještaja korisnost lilo piše u datoteku /boot/map, kernel se dobiva iz datoteke /boot/vmlinuz-up, a unos root=/dev/hda1 govori kernelu da korijenski datotečni sustav nalazi se na prvoj particiji prvog diska.

Jedan od strojeva na kojima je Metod slučajno radio ponekad je korišten za pokretanje jedini program, napisano za MS-DOS. Izvorni tekstovi ovog programa su davno izgubljeni, kao i autor, pa sam morao instalirati i MS-DOS i Linux na stroj. Kao rezultat lilo.konf ispalo je ovako:

# cat /etc/lilo.conf boot=/dev/hda map=/boot/map default=linux-up prompt timeout=50 image=/boot/vmlinuz-up label=linux-up root=/dev/hda5 initrd= /boot/initrd-up.img samo za čitanje image=/boot/vmlinuz-up label=failsafe root=/dev/hda5 initrd=/boot/initrd-up.img vga=normal append=" failsafe noapic nolapic acpi=off " samo za čitanje other=/dev/hda1 label=dos other=/dev/fd0 label=floppy nesigurno Primjer 10.2.

Postavljanje LILO-a na dvosistemskom stroju Ovdje je na petoj particiji diska instaliran Linux (o numeriranju particija u IBM-kompatibilnim računalima bit će riječi u predavanju 11), a na prvoj MS-DOS. Osim pokretanja MS-DOS-a, postoje dvije opcije za pokretanje Linuxa i još jedna - bilo koja operativni sustav LILO s diskete. Svaka opcija preuzimanja označena je linijom label=option. Na početku ispisuje najjednostavniji 3 prozor koji navodi sve oznake (u ovom slučaju, "linux-up", "failsafe", "dos" i "floppy"). Korisnik strelicama odabire željenu opciju i pritišće Enter. Ako je potrebno, korisnik može ručno dodati nekoliko parametri, oni će se prenijeti u jezgru sustava. Ako korisnik ništa ne dodirne, nakon isteka vremenskog ograničenja odabire se oznaka navedena u zadanom polju.

Još nekoliko pojašnjenja. Oznake linux-up i failsafe u primjeru koriste istu jezgru (vmlinuz-up), ali u drugom slučaju način je ponovno konfiguriran grafička kartica i dodani su parametri koji onemogućuju podršku za hardverska proširenja koja su izborna za učitavanje (višeprocesiranje, automatsko upravljanje napajanjem itd.). Korisnik može sam unijeti redak nakon append= ovo su parametri jezgre. Polje initrd= označava u kojoj datoteci polazište se nalazi virtualni disk (odjeljak posvećen njemu " Pokrenite virtualni disk i moduli" ovog predavanja), te pomalo alarmantan natpis " nesiguran" (za oznaku diskete) jednostavno znači da je disketa uklonjivi uređaj, tako besmislen tijekom pokretanja lilo provjerite njegovu ispravnost boot sektor i napraviti kartu.

Konačno, unosi poput other=device to pokazuju LILO nepoznata vrsta operativni sustav, koji se nalazi na ovom uređaju, što znači da je nemoguće učitati kernel. No, očekuje se da će se detektirati u prvom sektoru uređaja još primarni utovarivač, LILO učitati će ga i prenijeti kontrolu duž lanca. Ovako se MS-DOS učitava na ovom stroju: primarni utovarivač je preuzet (oznakom dos) s početka prve particije prvog diska.

GRUB

Podsustav za pokretanje GRUB je složeniji. Ona također ima primarni utovarivač, koji je zapisan u prvi sektor diska ili particije, i sekundarni utovarivač, koji se nalazi u datotečni sustav. Međutim karta lokacije V GRUB obično se koristi samo za takozvani "jedan i pol" bootloader ("faza 1.5") - u biti, upravljački program za jedan specifičan datotečni sustav. Postupak učitavanja izgleda ovako. Primarni utovarivač opterećuje jednoipol po onome što u njemu piše karta smještaja. Ova karta može biti vrlo jednostavna, budući da se obično jedan i pol utovarivač postavlja neposredno nakon primarnog u nekoliko sektora 4 one. na nultoj stazi nultog cilindra, počevši od sektora 2. Ovo područje diska često se ne koristi za datotečni sustavi(vidi predavanje 11). u nizu, ili na drugom posebno određenom mjestu vani datotečni sustav. Jedan i pol utovarivač može prepoznati jedan datotečni sustav i već tamo nađite sporednu ime(obično /boot/ grub/stage2). Konačno, sekundarni utovarivač, koristeći mogućnosti jednog i pol, čita iz datoteke /boot/ grub/izbornik.lst izbornik u kojem korisnik može odabrati opcije pokretanja na isti način kao u LILO. Dakle, ažuriranje i ponovno konfiguriranje instaliranog GRUB ne zahtijeva ponovno izračunavanje mapa položaja i mijenjanje bilo čega osim datoteka u direktoriju /boot/ grubo.

Na zahtjev Metodija Gureviča instalirao ga je na dvosistemskom stroju GRUB. U ovom slučaju, datoteka /boot/ grub/izbornik.lst ispalo je ovako:

# cat /boot/grub/menu.lst default 0 timeout 50 title linux-up kernel (hd0,4)/boot/vmlinuz-up root=/dev/hda5 initrd (hd0,4)/boot/initrd-up.img naslov failsafe kernel (hd0,4)/boot/vmlinuz-up root=/dev/hda5 failsafe noapic nolapic acpi=off initrd (hd0,4)/boot/initrd-up.img title floppy root (fd0) chainloader +1 naslov dos root (hd0,0) chainloader +1 Primjer 10.3.

Postavljanje GRUB-a na dvosistemskom stroju lilo.konf Razlika između samo u sintaksi, a i u činjenici da tvrdi diskovi GRUB i odjeljke na njima" linux-up ").!}

imenuje ga na svoj način, u obliku (hddisk_number, partition_number), i počinje numerirati od nule. Oznake (" naslov ") također su numerirane od nule, tako da zadana vrijednost unosa 0 znači da nakon isteka vremena čekanja, prva konfiguracija (po imenu GRUB Proučavanje priručnika LILO, Metod je otkrio mnogo važniju razliku od GRUB. Ispostavilo se da u ne samo parametri, već i same datoteke (kernel, pokretački virtualni disk itd.) priznaju se i učitavanje u procesu rada. Umjesto stavki izbornika, možete odabrati način rada naredbeni redak GRUB, koji sumnjivo liči na bash , u kojem možete forsirati datotečni sustav učitaj neki drugi kernel, koji nije propisan konfiguracijom, pogledaj sadržaj direktorija , koje prepoznaje jedan i pol bootloader, pa čak i sadržaj ovih datoteka, bez obzira na bilo kakva prava pristupa: sustav još nije učitan. Štoviše, možete rekonfigurirati bootloader na svoj način i zapiši

rezultati postavki. Bez vremena uživati ​​u neočekivanoj slobodi, Methodius je jednog lijepog dana otkrio da je pristup naredbenom retku zaštićen lozinkom.

Akcije jezgre Linuxa tijekom procesa pokretanja

  1. Dakle, odvija se u tri faze. primarni utovarivač Bootloader iz ROM-a određuje s kojih se uređaja može pokrenuti sustav i eventualno traži od korisnika da odabere jedan od njih. Preuzima se s odabranog uređaja
  2. Primarni utovarivač i na njega prenosi kontrolu. sekundarni utovarivač određuje (i najčešće zna) gdje se nalazi primarni utovarivač vlastiti, i drugo, jer se može lako promijeniti kada se mijenjaju postavke sustava za pokretanje. U predloženoj shemi LILO I GRUB, primarni utovarivač ne ulazi u razgovore s korisnikom, nego odmah učitava sekundarnog i na njega prenosi kontrolu.
  3. Sekundarni utovarivač dovoljno pametan da zna gdje se nalazi jezgra sustava (moguće više od jedne), ponuditi korisniku nekoliko opcija pokretanja na izbor, pa čak i, u slučaju GRUB, omogućuje vam postavljanje vlastitih opcija pokretanja. Njegov zadatak je učitavanje kernela i svega što je potrebno za pokretanje sustava u memoriju (ponekad module, ponekad ne samo parametri, već i same datoteke (kernel,), konfigurirajte sve ovo i prenesite kontrolu na kernel.

Kernel je i mozak i srce Linuxa. Sve radnje koje se ne mogu povjeriti posebnom podzadatku (procesu) sustava izvodi kernel. Pristup do OVAN, mreža, disk i ostalo vanjski uređaji glave jezgre. Kernel pokreće i registrira procese te upravlja podjelom vremena između njih.

Bootstrapping znači pokretanje sustava kada je napajanje uključeno. Budući da uobičajene mogućnosti operativnog sustava još nisu dostupne u ovoj fazi, sustav se mora "pokrenuti sam od sebe", doslovno "služiti sam sebe". Tijekom ovog procesa jezgra sustava se učitava u memoriju i aktivira. Zatim se izvodi niz zadataka inicijalizacije, nakon čega je sustav spreman za posluživanje korisnika.

Vrijeme pokretanja je vrijeme kada je sustav posebno ranjiv. Greške u konfiguraciji, kvarovi ili nedostatak potrebne opreme ili oštećeni datotečni sustavi mogu spriječiti normalno pokretanje računala. Konfiguriranje načina pokretanja često je jedan od prvih zadataka koje administrator mora riješiti u a novi sustav, posebno pri dodavanju nove opreme. Nažalost, ovaj zadatak je jedan od najtežih, a za njegovo rješavanje potrebno je poznavanje mnogih drugih aspekata sustava.

Kada se napajanje uključi, izvršava se kod za pokretanje pohranjen na uređaju za pohranu samo za čitanje. Trebao bi pokrenuti kernel. Kernel ispituje status hardverskih uređaja i zatim pokreće init daemon, čiji je ID uvijek 1.

Prije nego što se sustav može u potpunosti pokrenuti, datotečni sustavi moraju biti provjereni i montirani te se moraju pokrenuti demoni sustava. Odgovarajuće procedure implementiraju se pomoću skripti interpretatora naredbi, koje uzastopno pokreće init daemon. Točna struktura skripti i način na koji se izvršavaju razlikuju se ovisno o sustavu.

Glavna stvar je aktivirati naredbenu ljusku

Na normalan rad sustavi izvode početno podizanje sustava izvanmrežni način rada, nakon čega mogu dobiti daljinski pristup administratori i korisnici. Međutim, administratori moraju imati dostupan alat za oporavak sustava u slučaju da neočekivani kvar diska ili neki problem s konfiguracijom spriječi sustav da normalno dovrši proces pokretanja. UNIX sustavi (umjesto pokretanja putem puni program") mogu se ograničiti samo na najnužnije, naime aktiviranje naredbene ljuske na konzoli sustava. Ova se opcija naziva stavljanje sustava u ono što se naziva "jednokorisnički način", način oporavka ili način održavanja - svi ovi izrazi koriste se naizmjenično. Jednokorisnički način ne dopušta mrežne operacije, a za korištenje sistemske konzole morate imati fizički pristup.

Na većini sustava, da biste ušli u jednokorisnički način rada tijekom pokretanja sustava, morate prenijeti određeni parametar jezgri na naredbenom retku. Ako je sustav već pokrenut i radi, možete ga staviti u jednokorisnički način pomoću naredbe isključivanje ili telinit.

Preuzimanje koraka

Tipična bootstrap procedura sastoji se od šest različitih koraka:

  • čitanje pokretačkog programa iz glavnog boot zapisa;
  • otkrivanje i konfiguracija uređaja;
  • stvaranje kernel procesa;
  • intervencija administratora (samo za jednog korisnika);
  • izvršavanje skripti za pokretanje sustava.

Gotovo sve faze ne zahtijevaju interaktivnu kontrolu od strane administratora. Naposljetku, administratori imaju mogućnost kontrolirati pokretanje sustava uređivanjem konfiguracijskih datoteka za skripte za pokretanje sustava ili mijenjanjem argumenata koje program za podizanje sustava prosljeđuje jezgri.

Inicijalizacija kernela

Kernel je program, a prvi zadatak pokretanja je zapisivanje programa u memoriju za kasnije izvođenje. Ime datoteke kernela daje njen proizvođač, ali tradicionalno se zove /unix ili /vmunix. Na Linux sustavima, kernelu se obično daje ime putanje kao varijacija teme /boot/ vmlinuz.

Na većini sustava učitavanje je proces u dva koraka. Prvo se mali program za pokretanje (nazvan bootloader) učitava u memoriju računala s diska (koristeći kod pohranjen na uređaju za pohranu samo za čitanje), koji zatim izvodi stvarno podizanje kernela. Ovaj postupak se izvodi izvan UNIX domene i stoga nije standardiziran među sustavima.

Kernel izvodi testove kako bi odredio koliko memorije sustav ima na raspolaganju. Dio unutarnje strukture kerneli imaju fiksnu veličinu, tako da kernel rezervira određenu količinu fizičke memorije za sebe. Ova memorija nije dostupna korisničkim procesima. Kernel javlja konzoli poruku o ukupnoj količini fizičke memorije i količini memorije koja je dostupna korisničkim procesima.

Konfiguracija hardvera

Jedan od prvih zadataka kernela je ispitivanje komponenti hardver. U procesu testiranja raznih sistemske sabirnice a inventar hardvera prikazuje kernel na konzoli kratka informacija o svakom otkrivenom uređaju. U mnogim slučajevima kernel učitava upravljačke programe kao neovisne module kernela. Za sustave usmjerene na osobnih računala, distribucije uključuju kernel koji se može izvoditi na većini računalnih hardverskih konfiguracija s malo ili nimalo potrebne konfiguracije.

Proces konfiguracije hardvera trebao bi biti relativno transparentan za administratore, posebno u Linux okruženju. Gotove jezgre imaju modularna struktura i automatski otkriva većinu uređaja. Međutim, možete naići na neprepoznate uređaje.

Stvaranje kernel procesa

Nakon dovršetka osnovne faze inicijalizacije, kernel stvara nekoliko "samoizvršavajućih" procesa u memorijskom području dodijeljenom korisničkim programima. To se događa zaobilazeći standardni mehanizam sustava vilica.

Broj takvih procesa ovisi o operacijskom sustavu, iako init daemon uvijek ima ID procesa ( PID) jednako 1. Većina UNIX sustava koristi sched kao proces s ID-om 0.B Linux proces s PID-om od 0 nedostaje. Demon init radi u sprezi s raznim rukovateljima memorije i kernel signala. Svi ovi procesi imaju male ID-ove, a njihova su imena u popisima naredbi ps zatvorena u uglate zagrade(Na primjer, ). Ponekad imena procesa mogu sadržavati kosu crtu na kraju i broj, kao što je . Broj označava procesor na kojem se proces izvodi. Ove informacije mogu biti korisne pri postavljanju višeprocesorskog sustava.

Neki od najčešćih kernel procesa na Linux sustavima
Svrha procesa

k journald Zapisuje ažuriranja dnevnika na disk
kswapd Zamjenjuje procese kada nema dovoljno fizičke memorije

ksoftirqd Rukuje mekim prekidima ako im se ne može pristupiti tijekom promjene konteksta

khubd Konfigurira USB uređaje

Postoji jedan kjoumald proces za svaki montirani ext3 ili ext4 datotečni sustav.

Od ovih procesa samo je init ispravan korisnički proces; ostatak su zapravo dijelovi kernela koje su napravili procesi iz konceptualnih razloga.

UNIX sustavi stvaraju slične procese jezgre, ali budući da ti procesi odražavaju karakteristike određene implementacije jezgre, nazivi ili funkcije ne mogu biti isti u različitim sustavima. Srećom, administratori nikada ne moraju izravno komunicirati s tim procesima.

Nakon što su ti procesi kreirani, kernel više ne sudjeluje u procesu pokretanja sustava. U ovom trenutku, međutim, niti jedan od procesa koji upravljaju osnovnim operacijama (kao što je prijavljivanje korisnika u sustav) još nije kreiran, a većina demona nije pokrenuta. O svemu tome (u nekim slučajevima neizravno) brine init daemon.

Radnje operatera (samo način oporavka)

Ako sustav treba pokrenuti u načinu oporavka, operater postavlja posebnu zastavicu na naredbeni redak, a kernel prosljeđuje te informacije init demonu kao obavijest o pokretanju. Tijekom jednokorisničkog pokretanja, trebali biste biti upitani da unesete svoju root lozinku. Ako je ispravno unesen, prevoditelj naredbi se pokreće s pravima superkorisnika. Ne morate postaviti lozinku, samo pritisnite kombinaciju tipki , nakon čega će se preuzimanje nastaviti u višekorisničkom načinu rada

U načinu rada za jednog korisnika, naredbe se izvršavaju na gotovo isti način kao u potpuno učitanom sustavu. Međutim, ponekad se montira samo korijenska particija. Da biste mogli koristiti programe izvan direktorija /bin, /sbin ili /etc, morate ručno montirati preostale sustave datoteka.

U mnogim jednokorisničkim okruženjima, korijenski direktorij datotečnog sustava montiran je samo za čitanje. Ako je direktorij /etc dio korijenskog datotečnog sustava (česta situacija), uređivanje mnogih konfiguracijskih datoteka neće biti moguće. Da biste to riješili, morat ćete započeti sesiju za jednog korisnika ponovnim montiranjem direktorija / u modu čitanja/pisanja. Sljedeća naredba izvodi željenu radnju na Linux sustavima.

# montiranje -o rw, ponovno montiranje /

Na većini drugih sustava možete pokrenuti naredbu montirati / za pristup datoteci fstab ili vfstab i shvatite kako datotečni sustav treba montirati.

U Crveni sustav Učitavanje šešira u jednokorisničkom načinu rada izvodi se nešto aktivnije nego inače. Dok se ne prikaže upit ljuske, ova će distribucija pokušavati montirati sve lokalne datotečne sustave. Iako se ovaj pristup na prvi pogled čini zgodnim, može uzrokovati probleme pri korištenju nedovoljno promišljenog datotečnog sustava.

Momčad fsck, koji provjerava i popravlja oštećene datotečne sustave, obično se izvodi tijekom automatsko preuzimanje. Ako se sustav pokrene u jednokorisničkom načinu rada, naredba fsck morat ćete ga unijeti ručno.

Kada naredbeni interpreter moda za jednog korisnika izađe, sustav će se nastaviti normalno dizati.

Izvršavanje skripti za pokretanje sustava

Onog trenutka kada sustav može izvršavati skripte za pokretanje, već se može zvati UNIX. Još uvijek nije potpuno učitan sustav, ali nema više "misterioznih" koraka u procesu pokretanja. Datoteke skripte su obične batch datoteke koje odabire i pokreće init daemon prema složenom, ali općenito razumljivom algoritmu.

Točna lokacija, sadržaj i organizacija skripti za pokretanje zaslužuju daljnje proučavanje.

Dovršavanje postupka preuzimanja

Nakon završetka inicijalizacijskih skripti, sustav je potpuno spreman za korištenje. Sistemski demoni kao što su DNS i SMTP poslužitelji prihvaćaju i servisiraju veze. Ne zaboravite da init daemon nastavlja igrati važnu ulogu čak i nakon završetka početnog pokretanja.

Demon pokretanja ima jednu jednokorisničku i nekoliko višekorisničkih "razina pokretanja" koje određuju koji će resursi sustava biti dostupni korisniku.

Za odabir i pokretanje operativnog sustava kada se računalo pokrene, koristi se specijalizirani program - boot loader. Najpopularniji bootloader je Grub. Kada instalirate više operativnih sustava, na primjer, Linux preko Windowsa, najnoviji instalirani OS bit će prvi u izborniku pokretačkog programa.

Ovo neće stvarati probleme korisnicima koji koriste Linux kao glavni sustav, za njih je čak i poželjnija opcija. Ali ako ste još uvijek početnik i želite koristiti Linux kao drugi sustav, a Windows je još uvijek glavni, dok se ne snađete, vjerojatno želite da Windows bude prvi. U ovom članku ćemo pogledati kako to učiniti učitavanje Windowsa najprije u Grub. Razmotrimo dva načina: pomoću programa Grub Customizer i ručno, kroz konfiguracijske datoteke Grub bootloadera.

Grub Customizer

Grub Customizer je program koji vam omogućuje prilagodbu raznih parametara Grub pokretački program. Uključujući položaj i redoslijed točaka utovara. Program možete instalirati iz službenih repozitorija. Na primjer, na Ubuntuu trebate koristiti ppa:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
$ sudo apt-get update
$ sudo apt-get instalirajte grub-prilagodbu

Za pokretanje programa otvorite terminal (Ctrl+Alt+T) i upišite grub-customizer:

Da bi program radio potrebno je root prava, na nekim sustavima ćete možda morati koristiti sljedeću naredbu:

gksu grub-prilagođavač

Program se također može pokrenuti iz glavnog izbornika. Glavni prozor izgleda ovako:

Nekoliko sekundi nakon pokretanja, program će skenirati instalirane operativne sustave, a zatim u istom prozoru možemo premjestiti pokretanje sustava Windows na prvo mjesto. Da biste to učinili, desnom tipkom miša kliknite željenu stavku da biste otvorili kontekstni izbornik:

Na izborniku odaberite Pomakni se gore. Ovaj korak morat ćete ponoviti nekoliko puta dok Windows ne bude prvi na popisu. Windows će se sada pokrenuti na zadani grub.

Ako kasnije poželite spustiti Windowse, postoji obrnuta radnja - Pomakni dolje.

Da biste spremili svoje postavke, jednostavno kliknite gumb Spremi. Spreman. Možete ponovno pokrenuti računalo i vidjeti što će se dogoditi.

Ali želim se dotaknuti još nekoliko postavki koje bi mogle biti korisne. Umjesto da se Windows prvo pokrene u Grubu, možete promijeniti zadanu stavku pokretanja. Idi na karticu Osnovne postavke:

Ovdje postoji popis za odabir zadane stavke koja se koristi prema zadanim postavkama Uključite se:

Osim toga, prema zadanim postavkama možete učitati posljednji učitani OS;

Promjena redoslijeda pokretanja Gruba putem terminala

Kao što sam obećao, sada ćemo pogledati kako natjerati WIndows da se prvo podigne u Grub pomoću konfiguracijskih datoteka. Grub konfiguracija se nalazi u datoteci /boot/grub/grub.cfg.

gksu gedit /boot/grub/grub.cfg

Tipično, trake izbornika izgledaju ovako:

menuetry item_name --options (
...

Na primjer, Windows stavka:

unos izbornika "Windows 8 (učitavač) (na /dev/sda1)" --class windows --class os $menuentry_id_option "osprob
er-chain-FC324E26324DE66C" (
....

Sada, da promijenite redoslijed stavki izbornika, samo izrežite sve do zadnje zagrade za zatvaranje, zajedno s ovim retkom, i zalijepite ga prije svih ostalih stavki. Zatim možete spremiti datoteku i gotovi ste. Ponovno pokrenite i gledajte. Windows se pokreće prema zadanim postavkama. Samo minus ovu metodu je da će se prilikom ažuriranja Grub konfiguracije izgubiti sve postavke.

Slično kao što smo konfigurirali zadanu učitanu stavku u Grub Customizeru, to se također može učiniti u terminalu.

Otvorite datoteku /etc/default/grub.

gksu gedit /etc/default/grub

Ovdje nas zanima linija:

Zamijenite 0 željenom stavkom za učitavanje, možete navesti i naziv stavke umjesto broja, na primjer:

GRUB_DEFAULT="Windows 8 (učitavač) (na /dev/sda1)"

Dostupne točke za preuzimanje možete vidjeti bez otvaranja konfiguracijske datoteke pomoću naredbe:

sudo grep menuentry /boot/grub/grub.cfg

Također možete konfigurirati učitavanje zadnjeg učitanog sustava, dodajte liniju

GRUB_SAVEDEFAULT=true

I u GRUB_DEFAULT navedite spremljeno:

GRUB_DEFAULT=spremljeno

Očita prednost ove metode je da se postavke neće izgubiti prilikom ažuriranja Grub konfiguracije, budući da se tijekom ažuriranja informacije preuzimaju iz ove datoteke. Sada ažurirajmo konfiguraciju i spremimo postavke naredbom:

Ova opcija ne radi na svim sustavima, pa možete koristiti drugu naredbu:

grub2-mkconfig -o /boot/grub/grub.cfg

to je sve Sada znate kako natjerati Windows da se prvi pokrene u Grubu. Ali informacije predstavljene u ovom članku mogu se koristiti u šire svrhe. Bit će korisno ne samo za Windows, već i za bilo koje druge sustave čiji redoslijed pokretanja treba kontrolirati.

Povezani postovi:


Redoslijed pokretanja Linux sustava sastoji se od sljedećih koraka:

BIOS (Basic Input-Output System - osnovni ulazno/izlazni sustav)

BIOS je sučelje najniže razine između računala i perifernih uređaja koje traži i izvršava boot sektor na bilo kojem uređaju za pohranu podataka spojenom na računalo.

Obično je ovo:

  • CD-ROM pogon
  • Tvrdi disk
  • Disk (sve manje korišten)

Popis ovisi o mogućnostima određenog BIOS-a, kao io vašem hardveru.

Prioritet pokretanja se može promijeniti u BIOS-u. Obično možete ući u izbornik za postavljanje BIOS-a pritiskom na tipke Del, F1, F2 ili F10 dok se računalo pokreće.

MBR (Master Boot Record)

Prvi sektor uređaja za pohranu s kojeg se može pokrenuti sustav rezerviran je za glavni zapis o pokretanju sustava. Kada se uređaj podigne, BIOS učitava i pokreće pokretač operativnog sustava koji se nalazi u MBR-u.

U većini slučajeva, bootloader je prilično složen i ne može stati u 512 bajtova koje je dodijelio MBR. U tom slučaju MBR sadrži tzv. stage1, program koji jednostavno učitava program drugog stupnja učitavanja operativnog sustava - stage2 (ponekad su boot sektor aktivne particije, boot manager ili program za autorizaciju pristupa i zaštitu). učitan kao stupanj2).

Konkretno, stage2 GRUB bootloadera čita podatke iz datoteke /boot/grub/grub.conf (ili /boot/grub/menu.lst, ovisno o verziji), koja sadrži popis svih dostupnih operativnih sustava i njihovih opcija za pokretanje . Nakon toga, na ekranu se prikazuje popis operativnih sustava s kojeg korisnik odabire OS za pokretanje.

Učitavač operativnog sustava

U nekim slučajevima, stupanj 1 GRUB-a (GRand Unified Bootloader) učitava stupanj 1.5, čiji se kod nalazi u prvih trideset kilobajta uređaja za pohranu odmah nakon MBR-a, a već stupanj 1.5 učitava stupanj 2.

Kada stage2 preuzme kontrolu, korisniku se prikazuje (pseudo)grafički izbornik za odabir OS-a za pokretanje. Vrijedno je napomenuti da se opcije pokretanja mogu promijeniti iz istog izbornika, što vam omogućuje vraćanje sustava nakon što su menu.lst ili grub.conf slučajno oštećeni.

Nakon što su odabrane opcije pokretanja, GRUB učitava odabranu jezgru u memoriju i prenosi kontrolu na jezgru, koja zatim nastavlja s pokretanjem sustava. GRUB također može prenijeti kontrolu ne na kernel, već na drugi bootloader, koristeći takozvano lančano učitavanje, na primjer na bootloader OS-a koji ne podržava Multiboot standard.

Jezgra

Zauzvrat, kernel provjerava hardversku konfiguraciju, inicijalizira uređaje i pokreće initrd (opcionalno), nakon čega montira uređaj naveden u parametrima za pokretanje kao "root" kao korijenski datotečni sustav.

Datotečni sustav uređaja otkriva se automatski. Ako iz nekog razloga montaža ne uspije, sustav izdaje kernel paniku i preuzimanje se zaustavlja.

Nakon uspješnog montiranja datotečnog sustava, kernel pokreće init daemon, koji postavlja ID procesa na jedan i pokreće ostatak sustava.

init

init je posljednji korak u nizu pokretanja sustava. init je roditelj (ili dalji predak) svih procesa koji se izvode na sustavu. Ovaj proces je prvi koji počinje u sustavu i pokreće ga izravno kernel. On sve pokreće procesi sustava pošto je to navedeno u /etc/inittab.

Dok sustav radi, init neće dovršiti. Vrijedno je napomenuti da je init korisnički proces, a ne sistemski, unatoč činjenici da se pokreće kao root.

Razine pokretanja

Svaki unos u /etc/inittab sadrži takozvani "runlevel" za proces, tj. informacije o tome na kojoj razini pokretanja sustava ovaj proces treba pokrenuti.

Na Linux sustavima postoji sedam mogućih vrijednosti za razinu izvođenja, od 0 do 6 uključujući:

  1. Zaustavljanje sustava
  2. Način rada za jednog korisnika
  3. Definira korisnik, obično višekorisnički način rada bez podrške za mrežu ili grafičku ljusku
  4. Višekorisnički način rada bez grafičke ljuske
  5. Korisnički definirano, općenito se ne koristi
  6. Višekorisnički način rada s grafičkom ljuskom

Na temelju trenutne razine pokretanja, init pokreće skripte koje se nalaze u poddirektoriju /etc/rc.d/, svaka razina pokretanja ima svoj poddirektorij, od /etc/rc.d/rc0.d do /etc/rc.d/rc6.d .

U stvarnosti, pokretanje skripti na svakoj razini izvođenja izvodi /etc/rc skripta, koja se poziva na svakoj razini izvođenja s parametrom jednakim trenutnoj razini. Poziv na /etc/rc s parametrom registriran je u /etc/inittab, za svaku od mogućih razina pokretanja.

Zadana razina pokretanja određena je unosom u /etc/inittab:

Id:3:initdefault:

Trenutna razina izvođenja može se promijeniti pozivom:

/sbin/telinit #

Gdje je # željena razina rada. one. pozivanje "/sbin/telinit 6" ponovno će pokrenuti sustav.

Pritisnite gumb za napajanje na jedinici sustava i nakon nekoliko sekundi vidjet ćete prozor za prijavu.

Usuđujem se pretpostaviti da je svakoga barem jednom zanimalo što se događa iza zastora splash ekrana i ekrana za učitavanje od trenutka kada se računalo uključi do trenutka kada se od njega zatraži prijava u sustav.

Predlažem da se upoznate sa sljedećim razinama tipičnog pokretanja Linuxa:

1.BIOS

  • BIOS je odgovoran za osnovni unos/izlaz podataka s/na uređaje.
  • Izvodi neke provjere integriteta uređaja. Osim toga, POST (samotestiranje pri uključivanju, poznato i kao "testiranje vlastite adekvatnosti", koji se izvodi kao faza prije pokretanja) odgovoran je za testiranje performansi elektronike, kojom upravlja BIOS
  • Traži, učitava i pokreće program za pokretanje OS-a
  • Preuzima učitavač s flopa, CD-a ili tvrdog diska. Dok učitavate BIOS, možete pritisnuti gumb (obično F12 ili F2 ili Del, ovisno o platformi) ako trebate napraviti neke promjene u vezi s hardverskim postavkama.
  • Nakon što je bootloader otkriven i učitan u memoriju, BIOS mu prenosi kontrolu.
  • Ukratko, BIOS učitava i izvršava Boot Record (MBR).

2.MBR

  • MBR je glavni zapis za pokretanje pohranjen na tvrdom disku
  • Nalazi se u 1. sektoru disk za pokretanje, na primjer /dev/hda ili /dev/sda
  • MBR zauzima manje od 512 bajtova. Sastoji se od tri komponente: 1) glavne informacije o pokretanju, "žive" u prvih 446 bajtova; 2) informacije o particijskoj tablici - u sljedeća 64 bajta; 3) i zadnja 2 bajta potrebna su za provjeru ispravnosti mbr.
  • Sadrži informacije o GRUB-u (ili LILO-u).
  • Jednostavnim riječima - MBR učitava i izvršava GRUB bootloader.

3.GRUB

  • GRUB - Grand Unified Bootloader.
  • Ako vaš sustav ima instalirano više od jednog kernela, imate mogućnost odabrati koji će se pokrenuti
  • GRUB prikazuje lijepu plymouth animaciju prskanja i nakon nekoliko sekundi interakcije korisnika, ako nisu pritisnuli nijednu tipku, učitava zadanu jezgru u grub konfiguracijskoj datoteci.
  • GRUB razumije što je datotečni sustav (stari Linux bootloaderi, na primjer, LILO to ne razumiju).
  • Grub konfiguracijska datoteka obično se nalazi duž staze /boot/grub/grub.conf (također /etc/grub.conf može biti simbolička poveznica do nje). Evo primjera konfiguracijske datoteke za CentOS:
    #boot=/dev/sda
    zadano=0
    vrijeme čekanja=5
    splashimage=(hd0,0)/boot/grub/splash.xpm.gz
    skriveni izbornik
    naslov CentOS (2.6.18-194.el5PAE)
    korijen (hd0,0)
    kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
    initrd /boot/initrd-2.6.18-194.el5PAE.img
  • Kao napomena uz gornju informaciju, konfiguracijska datoteka sadrži stazu do kernela i initrd slike
  • Ukratko, GRUB jednostavno učitava i izvršava kernel i initrd slike.

4. Kernel ili Kernel

  • Kernel montira datotečni sustav prema postavci "root=" u grub.conf
  • Izvršava program /sbin/init
  • Zato što je init prvi započeti proces Linux kernel, tako da ima ID procesa (PID) #1. Možete pokrenuti “ps -ef | grep init" i provjerite.
  • initrd je inicijalni RAM disk, odnosno privremeni disk u RAM-u
  • initrd sam kernel koristi kao privremeni korijenski datotečni sustav dok se kernel ne podigne u pravi montirani datotečni sustav. Ovaj privremeni disk također sadrži pokretačke programe koji vam omogućuju pristup particijama diska i drugom hardveru.

5. Init

  • Traži u datoteci /etc/inittab da odredi razinu izvođenja.
  • Postoje sljedeće razine izvršenja:
    • 0 – prekinuti izvršenje
    • 1 – Jednokorisnički način rada, takozvani “Single user mode”, ili drugim riječima konzola za oporavak
    • 2 – Višekorisnički način rada bez NFS podrške
    • 3 – Potpuni način rada za više igrača
    • 4 – ne koristi se
  • Init određuje zadanu razinu iz /etc/inittab i koristi je za učitavanje svih potrebnih programa.
  • Pokrenite "grep initdefault /etc/inittab" na vašem sustavu i saznat ćete koja je vaša zadana razina
  • Ako ne možete živjeti mirno, možete postaviti standardnu ​​razinu na 0 ili 6. :)
  • U većini slučajeva, razina 3 ili 5 će vam biti dovoljna.

6. Razina izvršenja programa (Runlevel)

  • Dok se Linux podiže, možete vidjeti razne usluge kako se učitavaju. Na primjer, to mogu biti poruke poput "pokretanje Postfixa ... OK" (Postfix se pokreće). Te se usluge nazivaju programi razine izvođenja i izvode se iz direktorija koji odgovara željenoj razini izvođenja.
  • Na temelju zadanih postavki, sustav će izvršiti datoteke prema sljedećim direktorijima.
    • Izvršna razina 0 – /etc/rc.d/rc0.d/
    • Izvršna razina 1 – /etc/rc.d/rc1.d/
    • Izvršenje razine 2 – /etc/rc.d/rc2.d/
    • Izvršenje razine 3 – /etc/rc.d/rc3.d/
    • Razina trčanja 4 – /etc/rc.d/rc4.d/
    • Izvršna razina 5 – /etc/rc.d/rc5.d/
    • Izvršenje razine 6 – /etc/rc.d/rc6.d/
  • Ali imajte na umu da u direktoriju /etc mogu postojati i simboličke veze. Na primjer, /etc/rc0.d je povezan s /etc/rc.d/rc0.d.
  • U direktorijima /etc/rc.d/rc*.d/ možete vidjeti popis programa čija imena počinju slovima S i K.
  • Za pokretanje se koriste programi koji počinju sa S. S jer s tartup.
  • Programi koji počinju slovom K koriste se - ispravno - za gašenje rada. K jer k bolestan
  • Uz slova S i K u nazivima programa također postoje brojevi. Ovi se brojevi koriste za određivanje redoslijeda pokretanja ovih programa.
  • Na primjer, S12syslog je dizajniran za pokretanje syslog demona, njegov redni broj je 12. S80sendmail je dizajniran za pokretanje sendmail demona, njegov redni broj je 80. Dakle, syslog program će se pokrenuti prije sendmaila.

to je sve Možda to nekima od vas nije novo i nije bilo posebnog interesa za čitanje članka, budući da je više fokusiran na početničko-srednje razine poznavanja Linuxa.
U ovom slučaju mogu samo reći da je "ponavljanje majka učenja" (c).

Dodaci, ispravci, pojašnjenja

Komentari su se više puta odnosili na tekst članka, pa mislim da je vrijedno uzeti u obzir neke važne komentare zajednice habra. (zahvaljujući artemlight, 3al, Tishka17, HhyperH, Next_Alex, Ilya_Shmelykh, Aux, soomrack, Xpeh)
  • artemlight: : "Pa, budimo iskreni, ne učitavaju se sve distribucije na ovaj način." Većina se složila s njim, primijetivši init, u-boot u stilu bsd-a, a iako je initrd izostavljen iz članka, vrijedi napomenuti da ga kernel ne treba u svim distribucijama. Također se napominje da je u slackware-u podrška za rc.d pružena samo kao kompatibilnost, a ugrađeni sustavi se drugačije učitavaju. Stolna računala ponekad imaju EFI, a osim toga, Linux je popularan u embedded svijetu i tamo postoji hrpa različitih platformi. Linux se drugačije učitava na telefonu.
  • soomrack, citirajući Wikipediju: Također bih želio dati komentar o MBR-u, prvom sektoru itd. Sve je postalo nešto kompliciranije posljednjih godina. Sada je prikladnije govoriti o EFI-ju.

    “GUID particijska tablica (GPT) je standardni format za postavljanje particijske tablice na fizički tvrdi disk. To je dio Extensible Firmware Interface (EFI), standarda koji je predložio Intel da zamijeni zastarjeli BIOS, jedan od posljednjih ostataka originalnog IBM PC-a. EFI koristi GPT gdje BIOS koristi Master Boot Record (MBR)...."

  • Također su nas zamolili da zapamtimo LILO. LILO, sjećamo te se! Zdravo!
  • Xpeh dodaje da se “BIOS (i (U)EFI, ovdje nespomenuti) prvenstveno bavi inicijalizacijom uređaja (uključujući učitavanje vlastitih BIOS-a PCI uređaja), o tome ništa nije napisano. Iako se ova uloga postupno smanjuje, kako se sve više i više hardvera inicijalizira i/ili podržava vruće uključivanje i stoga ga i dalje inicijalizira OS, ali, na primjer, uvijek inicijalizira RAM. „
  • VolCh pojašnjava preuzimanje za Debian-Ubuntu OS:
    Za Debian/Ubuntu:
    - ne postoji direktorij /etc/rc.d/;
    - direktoriji /etc/rc?.d/ su pravi direktoriji, a ne poveznice;
    - ovi direktoriji pohranjuju veze na skripte u /etc/init.d/ direktoriju

    Bolje je ne uređivati ​​ništa ručno u /etc/rc?.d/, već koristiti naredbu update-rc.d, koja vam omogućuje stvaranje veza, brisanje, zabranu (zapravo, preimenovanje iz S* u K*) i dopustite im (od K* do S*) pokretanje.