16.04.2024, 20:53 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

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).

Für alle, die es lieber graphisch haben


...Gibt es den selbst erklärenden Grub Customizer. Man kann ihn hier herunterladen, entpacken, Installieren mit
cmake .
	make
	sudo make install]



zurück

XML Revisions of $tag
Seiten-History :: Letzter Editor : stalin2000 :: Eigentümer : guide ::
Powered by pnWikka 1.0
 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.