|
GRUB ist der Standard-Bootmanager unter Linux, der nun auch Windows Vista starten kann. Hier wird erklärt, welche Vorteile GRUB gegenüber LiLo hat, wie der Bootloader eingerichtet wird und wie er notfalls wieder hergestellt werden kann.
Allgemeines
Ursprünglich für das GNU/Hurd-System entwickelt, hat sich der Grand Unified Bootloader (GRUB) zum Standard unter Linux gemausert. In den meisten Distributionen hat er mittlerweile bereits den üblichen Linux Loader (LiLo) abgelöst. Der Grund dafür liegt in den zahlreichen Fähigkeiten, die GRUB mitbringt. So verfügt er beispielsweise über ein eigenes Installationsprogramm und ist damit nicht auf bereits bestehende Systeme angewiesen. Der Bootloader bietet unter anderem eine native Unterstützung für die Dateisysteme ReiserFS, ext2, FAT32 und BSD FFS. Eine der wichtigsten Eigenschaften besteht in der Multiboot-Fähigkeit. Dadurch lassen sich verschiedene Linux-Kernel oder Unix-Derivate wie FreeBSD und OpenBSD starten. Mittels des so genannten "Chainloading" wird zudem der Start kommerzieller Betriebssysteme wie Microsoft Windows ermöglicht.
Funktion
Beim Chainloading spricht GRUB die einzelnen Bootloader oder Bootsektoren der Betriebssysteme an und übergibt ihnen den Systemstart. GRUB stellt eine integrierte Kommandozeile zu Verfügung, mit der beispielsweise eine Dateisuche oder der Einblick in die Partitionstabellen möglich ist. Wie ein Standard-Linux-System beherrscht sie die Vervollständigung von Dateinamen mit Hilfe der Tabulatortaste. Der Master Boot Record (MBR) einer Festplatte bietet lediglich Platz für 512 Byte an Daten. Das ist zu wenig, um den kompletten Bootloader direkt aus dem MBR zu starten. Aus diesem Grund ist GRUB selbst in mehrere Einzelstücke aufgeteilt. Der erste Teil, stage1, liegt im MBR. Er dient dazu, die Dateien stage1_5 und stage2 nachzuladen, die auf der Festplatte selbst liegen. Die Komponente stage1_5 sorgt dafür, dass GRUB auf verschiedene Dateisysteme zugreifen kann, stage2 enthält den eigentlichen Bootloader.
Eine kleine Stolperfalle ist in der Zählweise enthalten, mit der GRUB die Festplatte anspricht. Die Nummerierung beginnt immer mit null. Einige Beispiele zeigt die Tabelle auf.
- (hd0) Erste physikalische Festplatte des Systems; /dev/hda
- (dh0,1) Zweite Partition der ersten physikalischen Festplatte; /dev/hda2
- (hd3,8) Neunte Partition der vierten physikalischen Festplatte
- (fd0) Diskettenlaufwerk
GRUB bezeichnet SCSI- und IDE-Festplatten gleich. In einem gemischten System nummeriert er zunächst IDE- und dann SCSI-Festplatten. CD- oder DVD-Laufwerke werden nicht berücksichtigt.
Die Datei menu.lst
GRUB liest die Einstellungen aus der Datei menu.lst aus, die in /boot/grub/ liegen muss. Ein Beispiel sieht wie folgt aus:
# menu.lst tecBoot
#default=1
timeout=20
password=tecchannel
title Linux-Rechner
root (hd0,1)
kernel /boot/vmlinuz root=/dev/hda2 vga=normal
initrd /boot/initrd
title Windows XP
rootnoverify (hd0,0)
chainloader +1
makeaktive
Die Menüpunkte bedeuten im Einzelnen:
- default definiert den Eintrag, den GRUB standardmäßig lädt. Auch hier beginnt die Nummerierung mit 0, das Beispiel definiert also Windows als Standardsystem.
- Der Wert timeout steht mit default in Zusammenhang. Die Zahl gibt die Zeit in Sekunden an, wann
das System startet, wenn keine Benutzerinteraktion erfolgt.
- password erklärt sich von selbst. Nur, wenn ein Benutzer das eingetragene Passwort kennt und eingibt, erhält er Zugriff auf die GRUB-Konsole.
- title definiert den Eintrag des angezeigten Betriebssystems. Im Beispiel kann man im Auswahlfenster
zwischen den Namen „Linux-Rechner“ und „Windows XP“ wählen.
- root gibt an, auf welcher Partition GRUB den Linux-Kernel und eine eventuell erforderliche Initial-RAMDisc finden kann.
- kernel und initrd definieren den genauen Ort der Startdateien. Die Zeile kernel kann zudem zusätzliche Startoptionen enthalten. Ist das zweite startbare System eine Windows-Partition, ersetzt der Eintrag rootnoverify den Befehl root.
- Das Kommando chainloader +1 liest den ersten Sektor der angegebenen Partition aus. Die
Windows-Versionen 95, 98 und ME starten im Anschluss direkt, für alle anderen Windows-Varianten
übergibt GRUB den Start an den Windows-eigenen Bootloader.
Rauten (#) kennzeichnen Notizen und Bemerkungen und werden bei der Verarbeitung der Befehle ignoriert.
GRUB und Vista
Vista bringt zwar einen eigenen Bootloader mit, kann aber auch über GRUB gestartet werden. Dabei unterscheidet sich das System kaum von vorherigen Windows-Betriebssystemen. Über die Konfiguration teilt man GRUB lediglich mit, wo er die Vista-Partition findet, anschließend wird per chainloader der Windows-Bootvorgang gestartet.
Beispiel für den Eintrag in der grub.lst
title=Windows Vista
rootnoverify (hd?,?)
chainloader +1
makeactive
- der Ausdruck hd?,? steht in diesem Fall wie bereits oben beschrieben für die physikalische Festplatte und die Partition, auf der Vista zu finden ist.
- Alternativ gibt es auch noch den anderen Weg, sprich, dass man GRUB mithilfe des Vista-Bootloaders startet. Das klappt allerdings nur, wenn der Bootloader nicht im MBR, sondern in der Linux-Partition selbst steht.
Sondersysteme – GRUB 2 und TrustedGRUB
Derzeit arbeiten die Entwickler am Nachfolger GRUB 2. Für diesen wird der komplette Code des Bootloaders neu geschrieben. Grund ist, dass der über die Jahre gewachsene Code sich kaum noch warten lässt. Entstanden ist GRUB 2 aus dem Forschungsprojekt PUPA. Der kommende Bootloader soll sich vor allem leichter anpassen lassen, womit neben der Portierung auf andere Architekturen auch die Unterstützung für internationale Zeichensätze gemeint ist.
TrustedGRUB ist ein Ansatz, den Bootloader in eine Trusted Module Platform zu integrieren und der die Anforderungen der Trusted Computing Group erfüllen soll. Entwickelt wird das System von der Sirrix AG, zusammen mit der Ruhr-Universität Bochum. Bei dem Projekt handelt es sich um keinen eigenständigen Bootloader, sondern um eine Erweiterung für GRUB. Sie wurde bereits auf einer Reihe von TMP-Chipsätzen erfolgreich getestet. Die Installation selbst läuft dann über ein Script ab, das alle weiteren Informationen liefert.
GRUB unter Vista wiederherstellen
Bei der Installation von Vista und Longhorn überschreibt das System ungefragt den Bootloader, sodass Multi-Boot-Umgebungen unter Umständen nicht mehr funktionieren. Falls Ihre Vista-Installation die GRUB-Einstellungen überschrieben hat, lassen sich die Einstellungen aber leicht wiederherstellen. Am einfachsten geht dies mit der Super GRUB Disk. Diese knapp 8,5 MByte große Live-CD kann den Master Boot Record sowohl für Linux als auch für Windows automatisch reparieren. Alternativ gibt es einen manuellen Weg; auch hier sollten Sie eine Live-CD zur Hand haben. Die folgenden Anweisungen setzen eine Ubuntu-basierte Live-CD voraus.
- Starten Sie von der CD, und rufen Sie ein Terminal auf. Hier tippen Sie sudo grub ein, worauf Sie den Prompt „grub>“ erhalten sollten. Das bedeutet, dass Sie nun direkt in GRUB arbeiten.
- Als Nächstes müssen Sie herausfinden, auf welcher Festplatte und Partition Ihre Stage1 liegt. Das geschieht mit dem Befehl find /boot/grub/stage1.
- Suchen Sie nun aus den Ergebnissen Ihre Linux-Partition heraus.
- Sie tragen Sie mittels root (hd?,?) in den Loader ein. Die Fragezeichen stehen dabei wieder für physikalische Festplatte und die Partition. Wichtig ist, dass Sie sich immer noch auf dem GRUB-Prompt, also in „grub>“ befinden.
- Sind die Werte eingetragen, schreiben Sie GRUB mit dem Befehl setup (hd0) in den Master Boot
Record der ersten Festplatte. Mit dem Befehl quit verlassen Sie anschließend den GRUB-Prompt.
- Wenn Sie nun den Rechner neu starten, sollte GRUB wie gehabt erscheinen.
Notfallinstallation via Diskette
Wenn das CD-Laufwerk streikt oder Sie keine Live-CD zur Hand haben, können Sie auch auf die Disktette
zurückgreifen. Die Beschreibung geht von einem komplett installierten Linux-System aus, das bereits GRUB verwendet und in dem der Benutzer als Superuser root angemeldet ist.
- Als Erstes präpariert man eine Diskette als Bootmedium. Dazu dient bei eingelegter Diskette der Befehl mke2fs /dev/fd0 Dieser formatiert das Medium mit dem ext2-Dateisystem.
- Als Nächstes erstellt das Kommando mkdir /floppy das Verzeichnis /floppy.
- Die Diskette wird im Anschluss mittels mount -t ext2 /dev/fd0 /floppy in den Verzeichnisbaum und das eben erstellte Verzeichnis eingehängt. Wichtig ist, dass die Bootdiskette den Ordner /boot enthält.
- Diesen richtet mkdir /floppy/boot ein.
Installation auf Diskette
- beim nächsten Schritt werden die stage*-Dateien aus dem GRUB-Hauptverzeichnis benötigt. Dabei handelt es sich jedoch nicht um die Dateien aus /boot/grub/. Unter SUSE Linux 9.2 liegen sie beispielsweise in /usr/lib/grub. Eventuell müssen Sie Ihr System durchsuchen und den Pfad gegebenenfalls anpassen.
- cp -a /PFAD/ZU/GRUB/ /floppy/boot/ kopiert nun das gesamte Verzeichnis auf die Bootdiskette. Nun ist die oben beschriebene Menüdatei notwendig. Die an das System angepasste menu.lst gehört in den Ordner /floppy/boot/grub/.
- Beim letzten Schritt wird GRUB im Bootsektor der Diskette installiert. Das Kommando grub startet die GRUB-Shell.
- Nun benötigt das Programm die Pfadangaben zum Datenverzeichnis. Sie liegen bereits auf dem Medium, der Befehl root (fd0) teilt dies dem Bootloader mit.
- setup (fd0) schließlich startet die Installation in den Bootsektor des Datenträgers. Nach der erfolgreichen Installation gelangt man mittels quit wieder auf das normale System.
Als Test kann bei einem Neustart des Systems per BIOS die Diskette als erstes Bootmedium gewählt werden. Wenn alles geklappt hat, startet das System nun von der Bootdiskette.
Fazit:
GRUB ist mächtig, keine Frage. Er bietet mehr Funktionen als LiLo und lässt sich auch einrichten, wenn die Linux-Partition nicht mehr erreichbar ist. Zu Recht setzen immer mehr Distributionen auf GRUB für die Bootverwaltung. Das Beste an GRUB ist allerdings, dass er aktiv weiterentwickelt wird. Auch die Fertigstellung von GRUB2 rückt langsam näher. Für normale Anwender wird sich nicht viel ändern, allerdings verspricht der überarbeitete Code einen deutlich kompakteren und übersichtlicheren Bootloader.
Unter der Homepage des Projektes findet sich unter anderem ein Wiki in dem zukünftige Erweiterungen
geplant sind. Erweitert werden soll in Zukunft die Zahl der unterstützten Dateisysteme. Auch soll GRUB mehr Loader, beispielsweise den von NetBSD, verwalten können. Zudem finden sich zusätzliche Features
wie ein Playback für Journaling-Dateisysteme, eine Erweiterung der internen Kommandos oder eine
bessere Installationsroutine auf der Todo-Liste der Entwickler.
Qellenverzeichnis:
dieser Artikel
http://www.tecchannel.de/storage/grundlagen/429774/
Wikipedia
http://de.wikipedia.org/wiki/GRUB
http://en.wikipedia.org/wiki/GNU_GRUB
Vista-Bootloader einrichten
http://www.tecchannel.de/pc_mobile/windows/478974/
GRUB2
http://www.nongnu.org/pupa/
http://www.gnu.org/software/grub/grub-2.en.html
Trusted GRUB
http://www.sirrix.com/content/pages/trustedgrub.htm
http://sourceforge.net/projects/trustedgrub
Super GRUB Disk
http://www.supergrubdisk.org/?section=home
GRUB Project
http://www.gnu.org/software/grub/
|