Linux boot protsess
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
- IBM.com artikkel Linuxi buutprotsessist
- LILO tutvustus
- GNU GRUB FSF kodulehel
- Lühiülevaade buutimise sammudest
- Artikkel "How Linux Boots" CPU Magazine 07/2009
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