Login
Newsletter
Werbung

Fr, 3. Januar 2003, 00:00

Der Bootloader GRUB

Vorwort

GRUB (GRand Unified Bootloader) ist der Bootloader des GNU-Projektes (deshalb heißt er offiziell auch »GNU GRUB«). GRUB hat im Gegensatz zu den meisten anderen Bootloadern wie LILO oder dem NT-Loader einen sehr großen Funktionsumfang und ist sehr komfortabel zu bedienen.

Zum einen wäre da die Multiboot-Fähigkeit. GRUB kann verschiedene UNIX-Derivate wie Linux, FreeBSD, NetBSD oder OpenBSD starten. Kommerzielle Betriebssysteme wie die Microsoft Windows-Palette oder OS/2 lassen sich über sogenanntes »chain-loading« starten. Dabei lädt GRUB den Bootloader des jeweiligen Systems in den Speicher und übergibt den Bootvorgang an ihn. Dieses Verfahren kann auch angewendet werden, um LILO oder GRUB selber zu starten. Zum anderen findet GRUB alle Dateien, die zum Systemstart von Nöten sind, direkt und nicht, wie z.B. LILO, mit Hilfe von Blocklisten. Auf diese kann er verzichten, da GRUB fähig ist, diverse Dateisysteme direkt zu lesen. Unter anderem unterstützt GRUB ext2, ReiserFS, FAT32 und BSD FFS. Das Booten von Partitionen, die größer als 8 GByte sind, stellt für GRUB ebenfalls kein Problem dar. Weiterhin bietet GRUB eine Kommandozeile an, durch die es möglich wird, Konfigurationen zu booten, die noch gar nicht eingerichtet sind. Auch ist es möglich, nach Dateien zu suchen oder sich beispielsweise die Partitionstabelle anzuschauen.

All diese Features machen GRUB zu einer ernsthaften Konkurrenz zum Linux Loader LILO.

Die im Folgenden beschriebenen Funktionen wurden unter Mandrake Linux 8.1, Red Hat Linux 7.3, Debian GNU/Linux 3.0 sowie sauberen GNU/LFS CVS-4.0 getestet, um eine hohe Kompatibilität zu garantieren und nicht auf den Patch-Wahn einiger Distributoren hereinzufallen.

Installation

Ohne Bootloader kann selbstverständlich kein System gestartet werden. Wir empfehlen daher unbedingt, eine Bootdiskette des alten Bootloaders für den Notfall bereitzuhalten.

Der erste Schritt zur Installation ist natürlich der Download des GRUB Bootloaders. Zu finden ist dieser unter ftp://alpha.gnu.org/gnu/grub/; hier muss man sich die Dateien grub-VERSION-i386.tar.gz und grub-VERSION-i386-pc.ext2fs herunterladen.

GRUB besteht aus zwei Teilen: stage1 wird direkt in den Master Boot Record (MBR) oder in den Bootsektor einer Partition geschrieben; stage2 ist etwas größer und liegt daher in einer Datei auf der Festplatte. Die Installation ist direkt in GRUB integriert, daher muss man sich zuerst eine Bootdiskette erstellen, indem man dd if=grub-VERSION-i386-pc.ext2fs of=/dev/fd0 eingibt.

Nun erstellt man als root ein Verzeichnis für GRUB, z.B. /usr/share/grub. Hierhin entpackt man das Tar-Archiv und kompiliert GRUB mit dem üblichen Dreigespann:

./configure
make
make install

Weiterhin wird das Verzeichnis /boot/grub benötigt, welches ebenfalls angelegt werden muss. Die Dateien aus dem GRUB-Verzeichnis werden hierhin kopiert. Um GRUB nun zu installieren, bootet man das System von der zuvor erstellten Diskette neu. Sobald der GRUB-Bildschirm erscheint, drückt man c, um die GRUB-Konsole aufzurufen. Zuerst muss man das Root Device setzen, auf dem sich das Verzeichnis /boot befindet. Wenn sich dieses Verzeichnis auf der ersten Partition der ersten Platte befindet, gibt man folgendes ein:

root (hd0,0)

Da GRUB bei 0 anfängt zu zählen, würde man entsprechend für die zweite Partition der zweiten Platte (hd1,1) wählen usw. Jetzt kann GRUB in den Masterboot Record (MBR) der ersten Platte geschrieben werden. Dies geschieht mit diesem Befehl:

setup (hd0)

Konfiguration

GRUB sollte natürlich vor der endgültigen Installation im MBR bereits konfiguriert werden, da sich das System sonst nur auf Umwegen starten lässt. Die Datei, die für ein Bootmenü notwendig ist, muss menu.lst heißen und unterhalb von /boot/grub angelegt werden. Im Folgenden sehen Sie ein Beispiel-Listing, welches nach und nach erklärt wird.

# menu.lst Beispiel für Pro-Linux Artikel
#
default=0 password=strenggeheim
splashimage=(hd0,0)/grub/splash.xpm.gz root (hd0,0)
 kernel /vmlinuz-2.4.18 ro root=/dev/hda2
 initrd /initrd-2.4.18.img chainloader (hd1,0) +1

Der erste Eintrag nach den Kommentaren ist default=0, der vorgibt, welcher Eintrag im Bootmenü vormarkiert sein soll. Auch hier beginnt GRUB bei 0, wollte man Windows als Default wählen, müsste man den Wert also auf 1 setzen. Anschließend folgt timeout=10. Diese Wert gibt an, nach wie viel Sekunden GRUB den markierten Eintrag automatisch startet. Lässt man diesen Eintrag weg, wartet GRUB solange, bis man einen Eintrag wählt und mit Enter bestätigt. password=strenggeheim legt ein Passwort fest, mit dem sich der Zugriff auf die GRUB-Konsole kontrollieren lässt. Da dieses unverschlüsselt in der Konfigurationsdatei steht, sollte man deren Rechte so setzen, dass nur der Systemverwalter sie lesen kann. splashimage gibt die Position eines Hintergrundbildes für das Boot-Menü an. Dies funktioniert leider nur mit den wenigsten GRUB-Versionen, weshalb hier nicht näher auf diese Funktion eingegangen werden soll. Wie man an dieser Beispielkonfiguration bereits erkennen kann, benutzt GRUB für Parameter, die an den Kernel übergeben werden sollen, keine append-Zeile wie LILO. Sämtliche Parameter wie z. B. hdx=ide-scsi werden direkt mit einem Leerzeichen dazwischen an den Aufruf des Kernels angehängt.

Weitere Optionen

GRUB bietet noch einige weitere Optionen, die es beispielsweise ermöglichen, den Text im Boot-Menu nach Belieben anzupassen, die Keymap einzustellen, das Passwort zu verschlüsseln oder einige andere, teils sehr interessante und ungewöhnliche, Features zu realisieren.

Passwort-Verschlüsselung

GRUB unterstützt die Verschlüsselung des Passworts als MD5-Hash. Um das zu nutzen, muss das Passwort also erstmal verschlüsselt werden. Dazu ruft man an der Konsole (oder in einem X-Term)

grub-md5-crypt

auf. Nach der Eingabe eines Passwortes bekommt man den verschlüsselten String zurück. Dieser wird dann in der Konfigurationsdatei wie folgt weiterverarbeitet:

password -md5 MD5-PASSWORT

GRUB unterstützt auch die Passwortabfrage bei bestimmten Auswahlen. Wenn Sie obigen Befehl beispielsweise unter die Angaben title Windows schreiben, würde GRUB nur beim Versuch, Windows zu booten, nach einem Passwort fragen.

Leider funktioniert grub-md5-crypt in grub-0.9.1 durch einen Bug im Makefile nicht, ein Patch findet sich unter folgender Adresse: http://www.mail-archive.com/bug-grub@gnu.org/msg05212.html, betroffen davon ist unter anderem GRUB in Mandrake 8.2.

Spezielle Konfigurationsdatei nach Passworteingabe laden

Wenn Sie möchten, daß einige Menu-Einträge nur durch den Admin sichtbar sind, so ist das auch kein Problem. Sie können an die Passwort-Abfrage Parameter anhängen. Wird dort eine Datei angegeben, wird diese als Konfigurationsdatei interpretiert. Diese könnte beispielsweise so aussehen:

password -md5 $1$91nYZ/$6VqqiGwU74JXhKK9TngRD /boot/grub/geheim-menu.lst

Damit kann auch wunderbar versteckt werden, dass noch "Feindbetriebssysteme" installiert sind...

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung