Linux boot protsess

From EIK wiki

Linuxi boot (või alglaadimise) protsess kujutab endast Linux-operatsioonisüsteemi initsialiseerimist ja kattub vaid osaliselt Windowsi omaga- POST (Power-On Self-Test) e. käivitustesti ja MBR (Master Boot Record) e. peabuutsktori lugemiseni.

Loodetavasti annab see artikkel aimu, mis samme läbitakse enne oma Linuxi distro potensiaali saavutamist. Lisaks, kui arvuti "ei lähe käima", siis troubleshootimisel võib see osutuda kasulikuks informatsiooniks.

Süsteemi käivitamine

Kui arvuti voolu-nupule vajutada alustab arvuti, ja pea kõik teised elekroonilised seadmed, POST-iga, mille käigus:

  • kontrollitakse BIOS’i koodi terviklust
  • tehakse kindlaks arvuti käivitamise põhjus (külmkäivitus, soekäivitus )
  • leitakse üles süsteemi põhimälu ning kontrollitakse selle suurust ja korrasolekut
  • leitakse üles, lähtestatakse ja kataloogitakse kõik süsteemisiinid ja seadmed
  • vajaduse korral antakse osa funktsioone üle spetsialiseeritud BIOS’idele (näiteks SCSI BIOS, video-BIOS jt)
  • pakutakse kasutajaliidest süsteemi konfigureerimiseks
  • identifitseeritakse, organiseeritakse ja valitakse välja buutimisele kuuluvad seadmed
  • luuakse operatsioonisüsteemile vajalik keskkond

See tehakse otseloomulikult enne ühegi operatsioonisüsteemi käivitamist.

Master Boot Record

Pärast buutimisele kuuluvate seadmete kindlaks määramist annab bootstrap loader "juhtimise üle" peabuudikirjele e. Master Boot Record'ile, mis on sektsioneeritud mäluseadme esimene sektor (nullsektor) ja kujutab endast 512-baidist buutsektorit ja mida nimetatakse ka jaotussektoriks, mida kasutatakse:

  • operatsioonisüsteemi buutimiseks pärast seda, kui BIOS on andnud juhtimise üle peabuutsektoris leiduvatele masinakäskudele
  • primaarse jaotustabeli hoidmiseks
  • mäluseadme unikaalse nime hoidmiseks

Nagu mainitud - täidetakse seejärel seal resideeruv programm, mida kutsutakse buudilaaduriks ning mille ülesandeks on anda "teatepulk edasi" operatsioonisüsteemile, mis teostab buutimisprotsessi lõpuni. Tänasel päeval on võimalik buutida näiteks CD-lt, mälupulgalt, SSD-lt, kõva- või võrgukettalt (viimast pakub GRUB).

Ja siitmaalt tekivad lahknevused Linuxi ja Windowsi laadimisel.

Buudilaadur

Buudilaadur on väike programm, mis on võimeline laadima operatsioonisüsteemi.

Saadaval on erinevaid buudilaadureid nagu GNU GRUB e. GNU GRand Unified Bootloader, LILO e. LInux LOader või NTLDR, BOOTMGR (viimased 2 on seotud Windowsi süsteemidega). Suurem osa tänapäeva Linuxi distrosid kasutavad GNU GRUB'i, või lühidalt GRUB'i, enda buudilaadurina.

Mitmeid buudilaadureid saab seadistada nii, et annavad kasutajale valiku mitme buutimisviisi vahel- erinevad operatsioonisüsteemid (dual või multibooting), sama süsteemi erinevate versioonide vahel, erinevad operatsioonisüsteemi laadimisvalikud (näiteks safe mode) jne.

LILO

LILO on buudilaadur Linux/x86 ja teiste PC-operatsioonisüsteemide jaoks. See vastutab Linuxi kerneli laadimise eest flopi- või kõvakettalt ja annab sellele juhtimise üle. Suudab buutida ka kõvaketta 1024-ndast silindrist edasi, kui BIOS toetab EDD paketikutse laiendusi int 0x13 liidesele. LILO’t saab kasutada ka paljude teiste operatsioonisüsteemide buutimiseks, sh DOS, kõik Windows’i versioonid, OS/2 ja BSD variandid. LILO distributsioon sisaldab kõiki vajalikke lähtekoodi-, dokumentatsiooni- ja tugifaile.

GNU GRUB

GRUB-ist rääkides peetakse tänapäeval silmas GRUB 2-te, esialgne GRUB kannab nime GRUB Legacy. Erinevalt LILOst mõistab GRUB tavalisemaid failisüsteeme- ext2, ext3 ja ext4. Selle saavutab 3-sammulise buudilaadijana.

  • Samm 1. Identne LILO-ga, eesmärgiks laadida järgmisesse staadiumisse (1.5 samm)
  • Samm 1.5. Läbitakse juhul kui Linuxi kerneli kujutis ei asu "tavalises" failisüsteemis (näiteks ext3) vaid näiteks fat-is. Eesmärgiks on olla sillaks samm 1 ja 2 vahel, st buudilaadija mõistab seda failisüsteemi (näiteks fat-i).
  • Samm 2. See on mida palju peavadki GRUB-iks. Kasutajale kuvatakse menüüd kõikidest võimalikest laaditavatest kernelitest (kirjas grub.conf või samaväärses failis)

Kuna GRUB salvestab oma seaded faili, mitte MRB-sse ja võimaldab kasutada CLI-d, on seda tavaliselt kergem taastada ja/või muuta. Leidub ka GUI tööriistu.

Kirje näide grub.cfg failist, mida kasutaja on pisut muutnud:

menuentry "My Default Karmic" {

set root=(hd0,1)

search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8

linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash

initrd /boot/initrd.img-2.6.31-11-generic

}


Elementaarne GRUB menüü konfiguratsioon, et buutida kas Red Hat Enterprise Linuxit või Microsoft Windows 2000:

default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz

# section to load Linux
title Red Hat Enterprise Linux (2.4.21-1.ent)
        root (hd0,0)
        kernel /vmlinuz-2.4.21-1 ro root=/dev/sda2
        initrd /initrd-2.4.21-1.img

# section to load Windows
title Windows
        rootnoverify (hd0,0)
        chainloader +1

Lisalugemist GRUB 2 dokumentatsiooni näol huvilistele.

Kui teine samm astutud (2 staadiumi buudilaadija mälus), laetakse vaikimisi kerneli ja initrd kujutised mällu.

Kernel

Kui kerneli kujutis on mällu loetud ja buudilaadur võimu ära andnud, algab kerneli buutimine. Kerneli kujutis pole jooksutatav, vaid pakitud kerneli kujutis. Tavaliselt on selleks kas zImage (pakitud ja alla 512KB) või bzImage (suur pakitud kujutis, üle 512 KB), mida on varem pakitud zlib-iga. Kerneli kujutises on funktsioon, mis korraldab alguses riistvara ettevalmistamise ja siis leiab aset kujutise lahtipakkimine (decompressing). Kui initrd (initial RAM disk) kujutis on olemas, siis see funktsioon liigutab selle mällu, hilisemaks kasutamiseks. Funktsioon kutsub seejärel välja kerneli ja kerneli buut algab. Initrd kasutatakse ajutiselt rootfailisüsteemina, kuni kernel on laetud ja tegelik failisüsteem saab ühendatud (mounted). Lisaks sisaldab see vajalikke kompileeritud daivereid.

Init

Kui kernel on buuditud ja initsialiseeritud, alustab kernel esimest user-space rakenduse. Desktop Linuxi süsteemis on selleks tavaliselt /sbin/init. Kuna see on tavaliselt esimene käivitatav programm siis ta saab PID 1. Kuid mitte alati pole see nii- manussüsteemidel on harva vaja nii ulatuslikku inistisaliseerimist mida pakub init (nagu seadistatud /etc/inittab-is).

Kokkuvõte

Nagu Linux isegi, on ka buutimise protsess väga paindlik- toetades mitmeid erinevaid protsessoreid ja riistvara platvorme. Kui alguses pakkusid buudilaadijad võimalust "lihtsalt" tööle saada (loadlin), siis LILO pakkus mingeidki "vilesid ja nuppe". GRUB, aga see-eest on samm veel edasi- mugavam, paindlikum, kuid samas "sophisticated"- toetades suurt hulka erinevaid failisüsteeme.

Kasutatud materjalid

Välislingid

Kirjutas

Kristjan Vaik A21

kvaik ät itcollege.ee

Versioonid

Versioon Lisatud   Kommentaar
0.1 26.04.2011     Artikli loomine
0.1.1 26.04.2011     Väike parandus
1.0 03.05.2011     Artikli lisamine
1.1 17.05.2011     Täiendamine
1.1.1 17.05.2011     Terve joru pisikesi täpsustusi
1.1.2 19.05.2011     Pisike parandus kokkuvõttes
2.0 19.05.2011     Hindamiseks valmis