GRUB-FAQ
========

Írta: Nagy Gergely <algernon@debian.org>
Licensz: GNU FDL (http://www.gnu.org/copyleft/fdl.html)
Utolso frissites: 2001.07.10.

Tartalom:

1. A GRUB-ról
2. Fordítás
3. Telepítés
4. Konfiguráció és használat

-------------
1. A GRUB-ról
-------------

Q: Mi az a GRUB ?
A: A GRUB egy boot loader, ix86 architektúrára. Arra való, hogy
az operációs rendszert betöltse és átadja neki a vezérlést. Emellett
még van jópár extra szolgáltatása is, melyekbõl önkényesen a
következõket emelném ki: nem kell minden kernel telepítés után
újratelepíteni (errõl lesz még szó!); bootoláskor van lehetõség arra,
hogy menübõl válassz operációs rendszert, sõt, akár parancssoros
módba is lehet menni, ahol kézzel lehet az egyes paramétereket
állítani; a kernel image-t hálózatról is le tudja tölteni (amennyiben
ez bele van fordítva). Körübelül ennyit tudnék mondani róla dióhéjban.

Q: Miért jó ez nekem ?
A: Több okból. Egyrészt azért jó a GRUB, mert a rémesen egyszerû
konfigurálni, a konfigurációs állománya (szerintem legalábbis)
ésszerû és áttekinthetõ. Másrészt azért, mert minden különösebb
trükk nélkül tud más operációs rendszereket bootolni, nem csak Linuxot
(HURD-ot például csak és kizárólag GRUB-al lehet bootolni). Persze,
ezt más boot loader illetve boot manager is megcsinálja. Na de nem
ilyen rugalmasan! A GRUB ugyanis nem azt teszi, mint a legtöbb
hasonló program, hogy telepítéskor (ezalatt az MBR-be vagy hasonló
helyre való telepítést értem) az egyes kernelek vagy alternatív
boot loaderek (chainloading esetén) merevlemezen lévõ helyét
beleépíti a telepített programba. Nem, a GRUB teljesen másképp
mûködik. Amikor telepítõdik, akkor a boot blockba a GRUB egyes
részeinek helye épül be, nem a kernelek. Hogy hogyan találja meg
a kerneleket ? Egyszerû! Amikor bootolsz, a GRUB elsõ része betölti a
másodikat, ami tartalmazza a menüs felületet és az úgynevezett
file-rendszer értelmezõt. Ennek az a haszna, hogy a GRUB meg tudja
nézni, hogy milyen állományok vannak az egyes particiókon, így a
kerneleket ez alapján tudja megtalálni. Jó nem ? Ez iszonyú hasznos
abban az esetben például amikor a Linux kernel valamiért nem akar
bootolni, de szerencsére van belõle egy backup, ami viszont mûködik.
Nomármost, LILO-nál ha a konfigurációs állományból kimaradt a backup
kernel, akkor az egy kellemes ígyjárás, és bootlemezzel kell megoldani
a dolgot. GRUB-nál egyszerûen átváltok parancssorba, és megmondom, hogy
ne a hibás kernelt, hanem a mûködõ backupot töltse be.
No és persze az sem elhanyagolható, hogy paramétereket is át lehet
adni a kernelnek, és természetesen ez is szerkeszthetõ. Így LILO
futtatás nélkül, akár a bootolás végigvárása nélkül lehet változtatni
az egyes kernel paramétereket (IRQ-k, DMA-k, VGA és egyéb device
paraméterek beállításakor ez nagyon hasznos tud ám lenni!).

Q: Miért jobb a GRUB mint például a LILO ?
A: Ennek a kérdésnek egy részét fentebb azt hiszem már megválaszoltam.
Röviden: egyszerûbb konfiguráció, rugalmasság, barátságosság, egyszerûség.
Arról nem is beszélve, hogy a LILO-t mindenféle hülye paraméterrel
kell indítani ahhoz, hogy az 1024.-ik cilinder feletti particíóról bootoljon
(legalábbis amikor én utoljára LILO-t láttam, akkor még így volt, és
így sem sikerült megoldanom a dolgot).

Q: Honnan tudom megszerezni ?
A: Debian-ban alapból benne van (potato-tól kezdve ha minden igaz). Ennek
ellenére én inkább a forrásból való telepítést javasolnám. Forrást az
ftp://alpha.gnu.org/gnu/grub/ címrõl lehet szerezni. De én ennél is tudok
jobbat: a CVS-ben lévõ forrás a legújabb, és szerintem a legjobb is. Jelen
iromány írásakor a legfrisebb kiadott GRUB (0.5.96.1) tartalmaz egy-két
apróbb, nagyon ritka, de annál bosszantóbb hibát (például egy olyat amit
eddig csak én észleltem :(). A CVS verzió azonban ezek jelentõs részétõl
már meg lett szabadítva. Ennek a megszerzése egy picit bonyolultabb (kell
hozzá a cvs csomag is pl):

$ cvs -d :pserver:anoncvs@subversions.gnu.org:/cvs login
Password: <egy enter simán, minden egyéb nélkül>
$ cvs -d :pserver:anoncvs@subversions.gnu.org:/cvs checkout grub
....
$

Nem is volt nehéz, igaz ? Innentõl a telepítés további része olyan, mintha
az ftp archívumból szedted volna a forrást.

-----------
2. Fordítás
-----------

Q: Hogyan fordítom le a GRUB-ot ?
A: ./configure && make && make install

Q: Mi van ?!
A: <no comment>

Q: Milyen opciókat támogat a configure sciprt ?
A: Ezt itt felsorolni és mind lefordítani túl nagy munka. Ennyi
angol tudást mindenkibõl kinézek :). Alapvetõen egy ./configure --help
és a netboot/README.netboot file áttanulmányozása minden kérdésre
választ kell adjon.

------------
3. Telepítés
------------

Q: Hogyan telepítsem a GRUB-ot ?
A: Elsõ lépésként a /usr/local/share/grub/i386-pc könyvtár
tartalmát másold a /boot/grub könyvtárba. Ezután indítsd el
a grub-ot (a grub paranccsal a gyengébbek kedveért :) Ezután
írd be, hogy root (hd0,0). A (hd0,0) helyett azt a particíót
kell beírni, ahol a grub file-jai (/boot/grub/*) vannak. A
partíciókról kicsit késõbb még lesz szó. Ha ez megvan, akkor
egy setup (hd0) paranccsal végeztünk is a telepítéssel.

Q: MI az a (hd0,0) ?
A: Az elsõ merevlemez (primary master) elsõ partíciója. Azt
lehetne gondolni, hogy (hd1,0) pedig a primary slave elsõ
partíciója. Ez viszont nem mindíg igaz (tulajdonképpen az
sem, hogy hd0 a primary master, de ezt most hagyjuk). A hd1
az a második merevlemez. Ha van primary slave, akkor az lesz
a hd1, ha nincs, akkor secondary master, ha az sincs, akkor
a secondary slave, ha az sincs, akkor nincs is hd1 :)

Q: Honnan a frászból tudom én meg melyiken vannak a file-ok ?
A: TAB-kiegészítéssel. (hd<TAB> kilistázza az elérhetõ merevlemezeket,
(hd0,<TAB> kilistázza az elérhetõ partíciókat az elsõ merevlemezen.
Természetesen a listához a filerendszer tipusa is hozzá tartozik. Innentõl
kisérletezéssel meg lehet találni a megfelelõ partíciót.

----------------------------
4. Konfiguráció és használat
----------------------------

Q: Hogyan hozok létre menüt ?
A: Csinálni kell egy /boot/grub/menu.lst állományt. Ez fogja tartalmazni
a menüt. Minden menüpont egy "title <cím>" sorral kezdõdik. Ezután jönnek
a grub parancsok, melyek betöltik a kernelt. Egy egyszerû menüpont így néz ki:

title GNU/Linux
root (hd0,0)
kernel /vmlinuz root=/dev/hda3 vga=ask

Ez annyit tesz, hogy megmondja a grubnak, hogy alapból minden állományt
az elsõ merevlemez elsõ partícióján keressen, majd töltse be a kernelt,
ami a gyökérkönyvtárban van vmlinuz néven, és adja át neki a megfelelõ
paramétereket.

Egyszerû, nem ?

Windows bootolás valahogy így néz ki:
title Dozer
rootnoverify (hd4,0)
makeactive
chainloader +1

FreeBSD bootolás pedig így:
title FreeBSD
root (hd0,a)
kernel /boot/loader

A legérdekesebb azonban a Hurd:
title GNU/Hurd
root (hd1,0)
kernel /boot/gnumach.gz root=hd2s1
module /boot/serverboot.gz

Hmmm. Van még ennél is érdekesebb:
title Linux NetBoot
bootp
root (nd)
kernel /tftproot/vmlinuz-2.4.0 root=/dev/nfs vga=ask ip=bootp nfsroot=192.168.0.1:/home/service/NFS

Remélem érthetõ :)

Q: lilo-nal van olyan, hogy `append="hdb=ide-scsi"' és ehhez hasonlók, GRUB-nál
ezt hogyan lehet megoldani ?

A: Hihetetlenül egyszerûen: abban a sorban, amiben megmondod neki a kernelt,
a kernel után odaírod paraméterként, mintha normál program lenne. Példaképpen
vegyük a kérdésben szereplõ esetet:
kernel /boot/bzImage hdb=ide-scsi
Lényegében ami az append= után következõ idézõjelben, azt a kernel-es sor végére
kell írni, és kész is van minden.

Q: A parancssoros modbol hogyan jutok ki ?
A: ESC -ppel

Q: Van valami default timeout ami utan rogton az elso menupont bootol ?
A: Nincs. Neked kell beallitani. A menu.lst file-ban az elso menupont
ele irjal egy timeout [másodperc] parancsot.

Q: Nem, nem érthetõ.
A: mail -s "GRUB-FAQ: Valami meg hianyzik..." algernon@debian.org