Sve što trebate znati o GRUB bootloaderu
GRUB ili punim nazivom GRand Unified Bootloader je prvi program koji se pokreće nakon što BIOS prepusti kontrolu učitavanja operacijskog sustava. Direktno je zadužem za učitavanje kernela operacijskog sustava, koji dalje učitava ostatak.
Ovaj bootloader je najrašireniji u Linux svijetu danas, no nije i jedini. Naime, postoji i LILO bootloader koji se i dalje koristi, ali manje
Sadržaj
Opis
GRUB je zadužen, kao i ostali bootloaderi za učitavanje kernela operacijskog sustava ili čak daljnje učitavanje drugog bootloadera (kao što je to slučaj sa MS Windowsima). Radi preko tri stanja odnosno Stage-ova.
Stage 1
Nalazi se u 512 byteova MBR sektora što mu omogućava podizanje ostatka sebe samog iz Stage 2 dijela koji se nalazi unutar /boot/grub direktorija tvrdog diska.
Stage 1.5
Zapravo je međustanje koje se nalazi unutar prvih 30 KB slijedećeg sektora od MBR-a i služi za učitavanje Stage 2 dijela u koliko se ti podaci nalaze na datotečnom sustavu koji nije Ext2 ili Ext3.
Stage 2
Podiže preostale datoteke potrebne GRUB-u, a nalaze se u /boot/grub direktoriju. Rezultat učitanog Stage 2 dijela GRUB-a je poznati GRUB meni na početku podizanja Linuxa.
Podešavanje
Sve bitno i potrebno za podešavanje GRUB-a nalazi se unutar datoteke /boot/grub/menu.lst. Datoteka je tekstualna i lako se editira preko bilo kojeg tekstualnog editora instaliranog unutar vaše Linux distribucije. Kako je ovo od prilične važnosti za ispravno učitavanje ostatka operacijskog sustava, proći ćemo kroz sve bitne opcije koje se nalaze unutar menu.lst datoteke
Zadani redak izbornika
Ako želite da vam GRUB meni odmah odebare željenu redak u svom meniju, potrebno je podesiti opciju default:
default n
gdje je n redni broj izbornikovog redka. Pazite, prvi redak ima oznaku 0 (nula), drugi - 1 itd.
Vrijeme čekanja na odabir
Ako želite promijeniti vrijeme čekanja GRUB-a da sam odabere zadani redak u izobrniku, onda to radite preko opcije timeout:
timeout n
gdje je n vrijeme čekanja na automatski odabir u sekundama
Sljedeći izbor
Za podešavanje koji je sljedeći mogući izbor, ukoliko GRUB iz određenog razloga ne može startati zadani redak činite opcijom fallback:
fallback n
gdje je n redni broj izbornikovog redka. Pazite, prvi redak ima oznaku 0 (nula), drugi - 1 itd.
Definicije operacijskog sustava
Ovim opcijama definiraju se svi potrebni parametri za ispravno učitavanje kernela određenog operacijskog sustava. Ako na ovom mjestu pogriješite, nećete moći učitati željeni operacijski sustav. Mudro je, ako radite neka nova podešavanja da ih radite kao novu instancu, a prema kopiji starih, a stara (koja rade uredno) ostavite unutar menu.lst-a sve dok niste potpuno sigurni da novokreiranim redkom izbornika možete normalno podići operacijski sustav.
Dakle, svaka instanca za učitavanje kernela operacijskog sustava počinje sa opcijom title, koja predstavlja tekst koji se pojavljuje u GRUB izborniku. Odnosno, predstavlja opis onoga što pokrećete tim odabirom. Definira se ovako:
title Opis operacijskog sustava u izborniku
Slijedi obično opcija root, koja definira koji disk i particija predstavlja korijen operacijskog sustava. Definira se ovako:
root (hdx,y)
Gdje je:
- x - redni broj tvrdog diska na kontroleru. Prvi disk je 0, drugi - 1 itd.
- y - redni broj particije na x-tom disku. Prva particija je 0, druga - 1 itd.
Slijedeća opcija je kernel kojom se daju sve potrebne definicije za ispravno učitavanje slike kernela sa diska:
kernel /boot/vmlinuz-... root=UUID=... opcije kernela
Gdje je:
- /boot/vmlinuz-... - mjesto i naziv datoteke slike kernela koji se starta
- root=UUID=... - UUID oznaka root (/) particije datotečnog stabla instaliranog operacijskog sustava. UUID oznaku particije možete lako dobiti naredbom blkid
- opcije kernela - ako se želite uključiti određene opcije kernela, koje on izvršava tijekom svojeg postavljanja, onda ih upisujte ovdje i razmaknite ih praznim mjestima
Slijedi opcija initrd koja učitava inicijalni ramdisk. Unutar initrd-a nalaze se svi potrebni driveri koji kernelu trebaju priliko podizanja operacijskog sustava, a ne nalaze se u samoj slici kernela.
initrd /boot/initrd.img-...
Gdje je /boot/initrd.img-... - mjesto i naziv datoteke slike initrd-a koji se učitava.
Cijeli blok opisa završava se opcijom quiet koja nije nužna i više je estetske prirode, a zadatak joj je da ne prikazuje nepotreban tekst na ekranu priliko daljnjih faza podizanja operacijskog sustava. Ona nema parametara.
quiet
Primer
Primjer jednog bloka za ispravno učitavanje Ubuntu distribucije možete vidjeti ispod:
title Ubuntu 8.04.1, kernel 2.6.24-22-generic root (hd1,1) kernel /boot/vmlinuz-2.6.24-22-generic root=UUID=af03b0cc-0fcb-4006-9fc4-105745fc9187 ro quiet splash initrd /boot/initrd.img-2.6.24-22-generic quiet
Učitavanje MS Windows operacijskog sustava
|
Mnogi žele uz Linux imati i MS Windows operacijski sustav na svom računalu, te prilikom pokretanja odabirati operacijski sustav po želji. Međutim, GRUB ne može direktno učitati Windowse preko sebe, nego se služi tzv. chain-loading-om. Takvo učitavanja donekle komplicira stvar oko podešavanja GRUB-a, ali uz ova objašnjenja pokušati ćemo i tu stvar donekle olakšati.
Prvi problem na kojeg možete naići jest ako želite podići WIndows-e sa diska koji nije prvi disk u sistemu (u slučajevima da ste za Linux kupili novi disk, te ga postavili u računalo kao prvi disk u sustavu, a stari disk, na kojemu se od prije nalaze Windowsi premjestili na drugu poziciju kontrolera). Kako se Windowsi ne mogu podići sa diska koji nije prvi treba napraviti prividnu zamjenu diskova. To se radi preko GRUB opcije map ovako:
map (hd0) (hd1) map (hd1) (hd0)
|
Nakon ovoga, naš Windows disk sada postaje hd0, a Linux disk hd1. Zapamtite da se ova zamjena dešava samo prilikom podizanja Windowsa, ali ne i Linuxa. Također, ako su vaši WIndowsi i dalje na jednom te istom disku kao i ranije, a Linux ste instalirali na drugu particiju tog istog diska, onda za ovim neće biti potrebe.
Slijedeći problem može iskrsnuti u koliko imamo na jednom disku više od jedne instalacije Windowsa. Što se može desiti ako imate i WindowsXP i Vistu na istom disku, ali na dvije particije. Takva stvar može zbuniti GRUB. Da bi riješili i taj nered, posegnuti ćemo za hide i unhide opcijama za particije. Neka u našem primjeru postoje dvije instalacije Windows-a i to na 1. i 2. particiji diska, a mi želimo učitati Windowse iz 1. particije. U tom slučaju drugu particiju moramo sakriti, a prvu otkriti ovako: unhide (hd0,0) hide (hd0,1) Opet, ako nemamo slučaj višestrukih instalacija Windows-a ona izbacujemo i ove naredbe.
Sada dopisujemo ostatak bloka opcija za podizanje Windows operacijskog sustava:
rootnoverify (hd0,0)
Podešavamo root particiju operacijskog sustava (slično kao opcija root), samo ova služi u slučajevima kada GRUB ne može pristupiti dijelovima diska (zbog npr. nepodržanog datotečnog sustava)
chainloader +1
Jednostavno, učitava prvi sektor trenutne particije (definirane ispred sa rootnoverify)
makeactive
Postavlja trenutnu particiju - aktivnom.
boot
Izvršava učitani bootsektor (učitan opcijom chainloader +1) ili točnije, pokreće učitavanje Windows operacijskog sustava
Primjeri
Imamo dvije instalacije Windowsa na drugom disku po redu (WindowsXP na 1. particiji i Vistu na 2. particiji)
Učitavanje WindowsXP-a:
title Windows XP map (hd0) (hd1) map (hd1) (hd0) unhide (hd0,0) hide (hd0,1) rootnoverify (hd0,0) chainloader +1 makeactive boot
Učitavanje Viste:
title Vista map (hd0) (hd1) map (hd1) (hd0) unhide (hd0,1) hide (hd0,0) rootnoverify (hd0,1) chainloader +1 makeactive boot
Imamo jedne WindowseXP i jedan Linux na istom disku. Windowsi su na 1. particiji, a Linux na 2. particiji
title WindowsXP rootnoverify (hd0,0) chainloader +1 makeactive boot