Grand Unified Bootloader

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Der Grand Unified Bootloader / GRUB (dt. "Grosser vereinheitlichter Bootloader") ist ein freier Bootloader, der während dem Bootvorgang oft zum Starten von unixoiden Betriebssystemen eingesetzt wird.

GRUB wurde innerhalb des GNU-Hurd-Projektes als Bootloader entwickelt. Aufgrund seiner höheren Flexibilität verdrängte GRUB in vielen Linux-Distributionen den traditionellen Bootloader LILO. GRUB wird auch in Solaris 10 x86 benutzt. Inzwischen liegt GRUB in zwei Varianten vor:

  • die ältere Fassung (auch bekannt als GRUB 0.98 oder GRUB Legacy) wird beispielsweise noch von Opensuse 11.3 verwendet.
  • die neuere, vollständig neu entwickelte Fassung GRUB 2 besitzt noch nicht ganz den Funktionsumfang des Vorgängers, kennt aber EXT4, und wird beispielsweise ab Ubuntu 9.10 verwendet.

Konzept

Beim Bootvorgang sucht das BIOS am Anfang des 512 Byte grossen Master Boot Record nach dem Bootloader. Hier liegt jedoch nur ein kleiner Teil von GRUB, die sogenannte "Stage 1", welche auf der Festplatte den Rest von GRUB sucht, "Stage 2".

Bei GRUB Legacy lädt die Stage 1 den Dateisystemtreiber "Stage 1.5" nach, sofern "Stage 2" in einer Datei liegt (meist unter "/boot"). Aufgrund des modularen Aufbaus von GRUB 2 entfällt Stage 1.5 - hier besitzt bereits Stage 1 alle notwendigen Kenntnisse.

Liegt nur Linux auf der Festplatte, so bekommt man GRUB bei einigen Distributionen (z. B. Ubuntu) gar nicht mehr zu sehen. Die Anzeige des Menüs kann dann durch Drücken der Umschalttaste direkt nach dem Einschalten des Rechners erzwungen werden.

Ein defekter GRUB kann daran erkanntw erden, dass sich kein Menü zeigt oder nach einer Meldung der Art "GRUB Loading stage 2..." das System anhält. Eine häufige Ausfallursache sind andere Bootloader, die GRUB einfach von der Festplatte werfen. Kann das Menü allerdings noch aufgerufen oder gesehen werden, so kann GRUB Linux aus irgendeinem Grund nicht laden.

Konfiguration

In GRUB heisst die Konfigurationsdatei "/boot/grub/menu.lst".

In GRUB 2 heisst die Konfigurationsdatei "/boot/grub/grub.cfg".

Hintergrundbild beim Bootvorgang

Das Hintergrundbild wird im XPM-Format in komprimierter Form abgelegt. In der Datei "/boot/menu.lst" wird dann auf die Bilddatei verweisen. Ein GRUB-Bootsplash darf maximal 640 x 480 Pixel gross sein und höchstens 14 Farben aufweisen.

Das Bild "file.png" Bild mit geringer Farbanzahl wird mit folgendem Befehl kann wie folgt in die GRUB-kompatible Datei "file.xpm" umgewandelt werden.

$ convert -resize 640x480 -colors 14 file.png file.xpm

Bilder mit hoher Farbtiefe werden allerdings besser mit GIMP umgewandelt. Nach Anpassen der Bildgrösse wird dazu im Kontextmenü "Bild > Modus > Indiziert..." die Anzahl der Farben verringert.

Zum Schluss wird die neue Bilddatei am besten noch komprimiert.

$ gzip file.xpm

Die entstandene Datei "file.xpm.gz" wird ins Verzeichnis "/boot/grub" gestellt und in der Konfigurationsdatei "menu.lst" folgender Eintrag gemacht.

splashimage=(hd0,0)/boot/grub/file.xpm.gz

In der Datei "menu.lst" können ebenfalls die Vorder- und Hintergrundfarben für die Texte in hexadezimaler Form angegeben werden, für weisse Schrift auf schwarzem Hintergrund z. B.

foreground ffffff
background 000000

Sicherung der GRUB-Konfiguration auf Diskette

Formatieren der Diskette.

$ fdformat /dev/fd0u1440

Erstellen eines Dateisystems. FAT ist dafür am besten geeignet, da die GRUB-Konfiguration so im Notfall sogar unter Microsoft Windows bearbeitet werden kann.

$ mkfs.msdos /dev/fd0

Einhängen der Diskette ins Dateisystem und Installation des Bootloaders GRUB.

$ mount /dev/fd0 /floppy
$ grub-install --recheck --root-directory=/floppy /dev/fd0

Kopieren der GRUB-Konfigurationsdatei aus dem Bootverzeichnis der Festplatte auf die Diskette.

$ cp /boot/grub/menu.lst /floppy/boot/grub

Aushängen der Diskette, bevor die aus dem Laufwerk genommen wird.

$ umount /floppy

Mit einer solchen Diskette kann Linux gestartet werden, falls eine Microsoft Windows-Installation den Bootloader überschrieben hat.

Wiederherstellung eines zerstörten GRUB

Zur Wiederherstellung eines zerstörten GRUB wird eine Linux-Live-CD gestartet, ein Terminalfesnter geöffnet und die Partition mit dem Linuxsystem eingehängt.

Anzeige von Informationen über die vorhandenen Partitionen.

$ sudo fdisk -l

Das Einhängen kann wie folgt aussehen, wenn Linux auf der ersten Festplatte in der ersten Partition liegt; der Einhängepunkt heisst hier "/mnt" und muss gegebenenfalls zuvor angelegt werden.

$ sudo mkdir /mnt
$ sudo mount /dev/sda1 /mnt

Nun wird das laufende System für das Terminal ausgeblendet, indem eine chroot-Umgebung geschaffen wird. Damit wird sichergestellt, dass GRUB nicht versehentlich die Einstellungen des Rettungssystems übernimmt.

$ sudo -o bind /dev /mnt/dev
$ sudo -o bind /proc /mnt/proc
$ sudo chroot /mnt

Nun muss herausgefunden werden, welche GRUB-Version auf der Festplatte vorhanden ist.

Im Fall von GRUB Legacy wird der Bootloader wie folgt wieder in den Master Boot Record geschrieben.

$ sudo grub-install --root-directory=/mnt/boot /dev/sda

Im Fall von GRUB 2 durchsucht der Befehl "update-grub" die Festplatte zuerst nach weiteren Betriebssystemen und erstellt das Menü. Anschliessend wird das Ergebnis in den Master Boot Record geschrieben.

$ sudo update-grub
$ sudo grub-install /dev/sda

Erscheint dabei eine Fehlermeldung, so kann die Durchführung des Vorgangs mit folgendem Befehl nochmals probiert werden.

$ sudo grub-install --recheck /dev/sda

Andere Wege zur Wiederherstellung von GRUB sollten nicht beschritten werden, da im Fall einer defekten Partitionstabelle sämtliche Daten der Festplatte unwiederbringlich verloren sind.

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Wikipedia ger GRUBwbm Enzyklopädischer Artikel
Canonical eng GRUB2wbm