Was ist GRUB der Bootmanager?
Allgemeines
Grub ist ein Bootmanager, der geeignet ist, Betriebssysteme von verschiedenen Partitionen zu starten. Grub ist nicht auf Blocklisten zum Finden der Dateien für den Systemstart angewiesen und kann eine ganze Reihe von Dateisystemen direkt lesen: ext2, ext3, reiserfs, jfs Linux, bzw Fat32, Fat16 - Windows , UFS -BSD, Minix und viele andere.
Grub beherscht BIOS-Erweiterungen (kann also Partitionen oberhalb der 8 GByte booten!) und kennt keine 1024-Zylindergrenze. Grub ist es ziemlich egal wo der Kernel physikalisch liegt, er braucht nur die Angabe der Partition und den Pfad des zu bootenden Kernels (dies kann auch ein Symlink sein). Nach Änderung der Konfiguration (also der
menu.lst) ist kein Programmaufruf wie bei Lilo nötig, die neue Konfiguration wird beim nächsten Booten eingelesen.
KANOTIX verwendet Grub beim Booten von CD. und bei einer HD-Installtion wird standarmäßig Grub verwendet. Grub kann dennoch problemlos nachträglich installiert werden. Grub wird mit folgendem Befehl aus einer Root-Shell in den MBR installiert werden - für
KANOTIX Versionen 2005-03 oder älter ist im folgenden
media durch
mnt zu ersetzen.
# grub-install --root-directory=/media/hdaX /dev/hdY
/media/hdaX steht hierbei für die schreibend gemountete Partition, auf der im Verzeichnis /boot/grub die benötigten Dateien (stage2, stage1_5xxx) abgelegt werden.
Die Konfigurationsdatei
menu.lst muß ebenfalls in diesem Verzeichnis erstellt werden.
/dev/hdY ist die Platte, in deren MBR Grub installiert wird, normalerweise /dev/hda.
Laufwerks-Bezeichnungen/Gerätenamen
Grub unterscheidet nicht zwischen SCSI- und IDE-Festplatten. (hd0) ist immer die erste Festplatte, die in der Bootreihenfolge (Einstellung im BIOS) auch die erste ist, egal ob nun IDE oder SCSI. Ungewöhlich ist die Zählweise,die 1. Partition auf der ersten Festplatte heißt (hd0,0). Die primären Partitionen haben die Ziffernfolge von 0-3 und die logischen Partitionen zählen dann ab 4 aufwärts.
Grub |
Linux |
Lezeichnung |
(fd0) |
/dev/fd0 |
Disketten-LW (unter Windows) |
(hda0) |
/dev/hda |
erste Festplatte |
(hd0,0) |
/dev/hda1 |
Part.1 auf Festpl.1 |
(hd0,5) |
/dev/hda6 |
erweit. Part. auf Festpl. 1 |
Alle Bezeichnungen für Geräte werden für Grub in Klammern () gesetzt. Man beachte jedoch die Einträge hinter dem Kernel, im Gegensatz zu Grub benötigt der Kernel die Angaben in der für Linux üblichen Art. Die Einträge im folgenden Beispiel zeigen beide auf die gleiche Partition, die nämlich die vierte auf der ersten Platte. Der obere Eintrag in der Grub-Schreibweise, der untere in der für Linux typischen Art:
root (hd0,3)
kernel /boot/vmlinuz root=/dev/hda4
Command-Modus (Grub-Shell)
Ein besonders angenehmes Feature von Grub ist der Command-Modus. Er wird mit "c" aufgerufen, es erscheint die Grub-Shell. Damit ist man in der Lage, auch bei einer fehlerhaften menu.lst verschiedene Systeme und Dateien (z.B. Kernel) zu finden und zu booten.
Um ein wenig zu testen, kann Grub auch aus einem gebooteten
KANOTIX in einer Root-Shell mit
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> help
blocklist FILE boot
cat FILE chainloader [--force] FILE
color NORMAL [HIGHLIGHT] configfile FILE
device DRIVE DEVICE displayapm
displaymem find FILENAME
geometry DRIVE [CYLINDER HEAD SECTOR [ halt [--no-apm]
help [--all] [PATTERN ...] hide PARTITION
initrd FILE [ARG ...] kernel [--no-mem-option] [--type=TYPE]
makeactive map TO_DRIVE FROM_DRIVE
md5crypt module FILE [ARG ...]
modulenounzip FILE [ARG ...] pager [FLAG]
partnew PART TYPE START LEN parttype PART TYPE
quit reboot
root [DEVICE [HDBIAS]] rootnoverify [DEVICE [HDBIAS]]
serial [--unit=UNIT] [--port=PORT] [-- setkey [TO_KEY FROM_KEY]
setup [--prefix=DIR] [--stage2=STAGE2_ terminal [--dumb] [--no-echo] [--no-ed
terminfo [--name=NAME --cursor-address testvbe MODE
unhide PARTITION uppermem KBYTES
vbeprobe [MODE]
grub>
# grub gestartet werden. In der Grub-Shell kann man sich mit "help" alle verfügbaren Befehle anzeigen lassen. Detailierte Hilfe zur jedem Befel gibt es mit "help befehl", zur Linux-Shell kehrt man mit quit" zurück (die Grub-Shell wird beendet). In der Grub-Shell funktioniert die Tabulatortaste ähnlich wie in der Linux-Shell, das ist eine sehr große Erleichterung. Kommandos, Laufwerksbezeichnungen und Dateinamen lassen sich mit der TAB-Taste automatisch vervollständigen.
Grub bietet hierbei z.B. die Möglichkeit, die Lage des Kernels und der initrd noch vor dem eigentlichen Booten mittels
find festzustellen, z.B. gibt Grub auf den Befehl
find /boot/vmlinuz
(hd0,3) (hd1,0)
die Partitionen aus, die einen Kernel mit dem Namen vmlinuz im Verzeichnis /boot enthalten:
Die verfürgbaren Partitionen kann man mit dem Befehl "geometry" festellen, ein
geometry (hd0)
drive 0x80: C/H/S = 3648/255/63, The number of sectors = 58605120, /dev/hda Partition num: 0,
Filesystem type is fat, partition type 0xb Partition num: 1,
Filesystem type is fat, partition type 0xb Partition num: 2,
Filesystem type is fat, partition type 0xc Partition num: 4,
Filesystem type is ext2fs, partition type 0x83 Partition num: 5,
Filesystem type unknown, partition type 0x82 Partition num: 6,
Filesystem type is fat, partition type 0xb
Nachdem der Kernel und eine eventuell vorhandene initrd (oder auch miniroot.gz) gefunden wurde, kann mit boot gestartet werden.
Edit-Modus
Dieser Modus ermöglicht es die Einträge der Datei menu.lst während des Bootens zu ändern. Dies geht auch, wenn Grub von CD gebootet wird und die Datei schreibgeschützt ist. Dazu muß zuerst die ESC-Taste dann bestätigen mit Returnund dann die Taste "e" gedrückt werden. Die Parameter werden dann einfach ans Ende der Zeile geschrieben oder man bewegt sich in der Zeile mit den Cursor-Tasten.
grub1
grub2
menu.lst (Beispiele für Einträge)
Kommentarzeilen werden mit # eingeleitet und stören den Bootvorgang nicht, sie können also in der Datei verbleiben.
# Beispiel /boot/grub/menu.lst
################################################
# setkey verändert die Tastaturbelegung auf die deutsche Tastatur
setkey y z
setkey z y
setkey Y Z
setkey Z Y
setkey equal parenright
setkey parenright parenleft
setkey parenleft asterisk
setkey doublequote at
setkey plus bracketright
setkey minus slashs
setkey slash ampersand
setkey ampersand percent
setkey percent caret
setkey underscore question
setkey question underscore
setkey semicolon less
setkey less numbersign
setkey numbersign backslash
setkey colon greater
setkey greater bar
setkey asterisk braceright
# stellt die Zeit in Sekunden ein, nach der automatisch gebootet wird
# in dieser Zeit kann mit "e" oder "c" der Edit- bzw. Command-Modus aufgerufen werden timeout 30 # stellt das Default-System das nach dem Timeout gebootet wird ein default 0
# merkt sich die zuletzt gebootete Partition wenn "savedefault" unter Title steht #default saved
# wird gebootet, falls das Booten des Default-Eintrages fehlschlät fallback 1
# Vordergrund/Hintergrund-Farben festlegen
# Auswahl: blinkt rot Hintergrund: blau color white/blue blink-red/blue
# Eintrag 1 ist default 0 und bootet z.B. Windows 98 ###############
title Windows 98 (Partition 1 auf Platte 1)
rootnoverify (hd0,0)
makeactive
chainloader +1
# Eintrag 2 ist default 1 und bootet z.B. Windows 2000
###############
title Windows 2000 (Partition 2 auf Platte 1)
rootnoverify (hd0,1)
makeaktive
chainloader
/bootsect.dos
# Eintrag 3 ist default 2 und bootet Suse
###############
title Suse-Linux
root (hd1,5)
kernel /boot/vmlinuz
root=/dev/hdb6 read-only
# auch andere Parameter sind möglich z.B:
# kernel /boot/vmlinuz root=/dev/hdb6 single kernel /boot/vmlinuz root=/dev/hdb6 vga=ask
# Eintrag 4 ist default 3 und bootet Debian
###############
title GNU/Debian (erste erweiterte Partition auf Platte 2)
root (hd1,4)
kernel /boot/vmlinuz
root=/dev/hdb5 read-only
# Eintrag 5 ist default 4 und bootet DOS von Festplatte
###############
title DOS (Partition 3 auf Platte 1)
root (hd0,2)
makeactive chainloader +1
# Eintrag 6 ist default 5 und bootet von Diskette
###############
title Diskette
chainloader (fd0)+1
Von sekundärer Platte booten (z.B. mehrere Windows-Installationen)
Manche Leute brauchen/wollen mehrere Windows-Installationen. Windows will aber immer von der 1.Platte starten. Wir müssen also eine Partition verstecken und eine andere aktivieren. Die folgenden Befehle sollte man auf der GRUB-Kommandozeile eingeben und bei Erfolg in die menu.lst eintragen. Das sollte dann für jede Windows-Partition geschehen. Backup nicht vergessen! ;-)
hide (hd0,0) # versteckt Partition 1 der Platte 1
unhide (hd0,1) # macht Partition 2 der Platte 1 sichtbar
rootnoverify (hd0,1) # macht Partition 2 der Platte 1 zum Root-FS
makeactive # macht Partition 2 der Platte 1 aktiv
chainloader +1 # zeigt auf der ersten Sektor der Start-Partition
boot # bootet das Betriebssystem
Wenn man von der 2.Platte ein 2.Windows starten will, vertauscht man virtuell Platte 1 und 2. Dadurch wird Windows eine erste Platte vorgegetäuscht:
map (hd0) (hd1)
map (hd1) (hd0)
Stolperfallen
Grub kennt zwar keine 1024 Zylindergrenze und kann Systeme oberhalb von 1024 Zylindern booten, aber /boot/grub/
stage2? muß durch das Bios erreichbar sein (also davor liegen).
stage2? darf nach der Installation nicht verschoben oder in seiner Lage verändert werden (z.B. könnte Defrag sowas versuchen). Beim Setup werden Daten geschrieben, die dann nicht mehr stimmen würden. Es ist sinnvoll,
stage2? mit einem Schreibschutz zu versehen (man muß sich im aktuellen Verzeichnis befinden):
Dos: attrib +r +s stage2
LINUX: # chmod a -w ./stage2
Neugierig geworden?
... dann lade Dir eine Grub-Disketten-Image (ca. 580 kB) und probiere damit ein wenig herum. Auf der Diskette ist auch ein funktionierendes
FreeDOS? und ein Editor. Wenn du den Schreibschutz der Diskette entfernst, kannst Du die menu.lst der Diskette editieren und an deine Gegegenheiten anpassen.
Du kannst auch die offizielle FAQ zu Grub nachlesen.
Sofern man eine unterstützte Netzwerkkarte besitzt, kann Grub auch über das Netzwerk booten. Eine entsprechende Boot-Disk kann man sich hier erstellen lassen und anschließend downloaden (allerdings mit einer älteren Version von Grub).
CategoryFaqs