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