Lilos Erben

Der "Grand Unified Boot Loader" GRUB

01.07.2002
Der für GNU/Hurd entwickelte Boot-Manager GRUB stellt dank vieler Features eine wirkliche Alternative zum Linux-Standard-Boot-Manager LILO dar. Wir zeigen, wie der Umstieg funktioniert.

Bis vor Kurzem setzten sämtliche Linux-Distributionen den Boot-ManagerLilo als unangefochtenen Standard ein. Doch beim Umgang mit Lilo kann viel schief gehen – diejenigen, die statt eines bootenden Linux schon einmal fassungslos auf ein "LIL-" auf dem Monitor gestarrt und sich gefragt, was denn nun zu tun sei, können ein Lied davon singen.

Außerdem fehlten und fehlen Lilo viele Features, die sich Anwender von einem Boot Loader wünschen: So gibt es beispielsweise erst seit kurzer Zeit ein grafisches Menü. Der Boot-Manager GRUB des GNU-Betriebssystems Hurdumgeht viele Fettnäpfchen, in die Lilo noch mit dem größten Vergnügen hineingetreten ist, und bringt viele praktische Features mit. So verfügt GRUB über eine Kommando-Shell, bei der es sich um eine Abwandlung der Bash handelt: Diese erlaubt es, nach dem Rechten zu sehen, wenn der Boot-Vorgang aus irgendeinem Grund fehlschlägt.

Er kann zudem auf verschiedene Dateisysteme zugreifen und liest deshalb seine Konfigurationsdatei bei jedem Boot-Vorgang aufs Neue – man muss den eigentlichen Boot Loader nicht jedesmal neu installieren, wenn man eine Änderung an der Konfigurationsdatei vorgenommen hat. Des Weiteren eignet sich GRUB hervorragend zum Erstellen einer Rettungsdiskette, mit der man das System starten kann, wenn irgendetwas schief gelaufen ist.

Dieser Artikel zeigt, wie Sie GRUB mit ein paar einfachen Handgriffen installieren und konfigurieren und wie Sie eine Rettungsdiskette für Notfälle erstellen.

Zuvor sei noch auf eines hingewiesen: Offenbar mögen die GRUB-Entwickler keine Windows-Anwender: GRUB kann weder DOS noch Windows direkt booten und benutzt deswegen, ähnlich wie Lilo, eine Chainloader-Funktion, die im Vergleich zu Lilo jedoch recht kompliziert einzurichten ist. Benutzern, die Linux und Windows auf einer Platte einsetzen wollen, ohne lange Dokumentation zu wälzen, raten wir daher momentan noch von GRUB ab. Möchten Sie es trotzdem versuchen, hilft die Dokumentation auf [1].

Auf GRUB umrüsten

Die Installation des Grand Unified Boot Loader erweist sich als verhältnismäßig einfach: Jeder aktuellen Distribution liegen RPM-Pakete bei, die sich von CD installieren lassen. Benutzer der Debian-Linux-Versionen Woody oder Sid spielen die aktuelle Ausgabe mittels apt-get install grub ein.

Lediglich Benutzer von Debian Linux 2.2 (Potato) haben das Nachsehen – deren GRUB-Version ist prähistorisch, eine Übersetzung der aktuellen Quellen wird notwendig. Die aktuellen GRUB-Sourcen können von [2] heruntergeladen und mit dem bekannten Installationsdreischritt ./configure, make und make install installiert werden.

Mandrake- und SuSE-Benutzer können diesen Schritt überspringen, weil das jeweilige GRUB-Paket die benötigten Verzeichnisse bereits erstellt und die Dateien an die richtige Stelle entpackt. Sie dürfen sofort zum Abschnitt "Die Konfigurationsdatei" weiter gehen.

Benutzer anderer Distributionen erstellen mittels mkdir /boot/grub zuerst das Verzeichnis /boot/grub, in dem später alle wichtigen Dateien liegen. Als nächstes müssen sie die Dateien stage1 und stage2 in dieses Verzeichnis kopieren. Bei Red Hat liegen sie in /usr/share/grub/i386-redhat, bei Debian in /usr/lib/grub/i386-pc:

cp /usr/lib/grub/i386-pc/stage1 /boot/grub
cp /usr/lib/grub/i386-pc/stage2 /boot/grub

Der folgende Schritt hängt vom Dateisystem ab, das Sie auf der Festplatten-Partition verwenden, auf der sich Ihr /boot-Verzeichnis befindet. Benutzen Sie das Ext2-Dateisystem, kopieren Sie die Datei e2fs_stage1_5, die im selben Verzeichnis liegt wie stage1 und stage2, nach /boot/grub. Wenn Sie das Reiser-Dateisystem verwenden, heißt die Datei Ihrer Wahl reiserfs_stage1_5:

cp /usr/lib/grub/i386-pc/e2fs_stage1_5 /boot/grub

Zuletzt kopieren Sie bitte den Kernel, den Sie verwenden möchten, falls noch nicht geschehen, nach /boot.

Die Konfigurationsdatei

GRUB liest die benötigten Daten, ähnlich wie Lilo, aus einer Konfigurationsdatei aus. Diese heißt menu.lst und gehört ebenfalls ins Verzeichnis /boot/grub. Die Befehlssyntax, die in der Datei menu.lst zum Einsatz kommt, unterscheidet sich jedoch grundlegend von der in lilo.conf verwendeten. Musste man in lilo.conf noch jeden Eintrag für einen speziellen Kernel mit image= einleiten und eine Reihe von Argumenten angeben, so ist es bei GRUB möglich, in menu.lst einfach den Namen des Menü-Eintrags sowie den Pfad zum Kernel auf dem Laufwerk anzugeben. Das Herausfinden des richtigen Laufwerk-Eintrags gestaltet sich dabei jedoch etwas schwierig, denn GRUB benutzt ein eigenes Format für Laufwerksnamen und akzeptiert deswegen keine Laufwerkspfade wie /dev/hda.

Die Festplatten und -partitionen sind bei GRUB durchnummeriert, beginnend mit 0. Somit trägt die erste Festplattenpartition auf der ersten Harddisc die Bezeichnung (hd0,0), die vierte Partition auf der ersten Festplatte heißt (hd0,3) und die zweite Partition auf der dritten Platte hört auf den Namen hd(2,1). Beachten Sie bitte, dass nur Festplatten gezählt werden und dass diese Zählung völlig unabhängig von den Einträgen im /dev-Verzeichnis ist. Es tut also nichts zur Sache, ob Ihre zweite Festplatte unter Linux über /dev/hdd angesprochen wird, weil an /dev/hdb und /dev/hdc CD-ROM-Laufwerke angeschlossen sind – die zweite Festplatte heißt bei GRUB immer (hd1).

Das folgende Beispiel geht davon aus, dass /dev/hda die erste Festplatte in Ihrem System darstellt und Ihr /-Dateisystem mit dem /boot-Verzeichnis auf /dev/hda1 beheimatet ist. Möchten Sie nun den Kernel /boot/vmlinuz-2.4.18 booten, so sähe der korrekte Eintrag für die menu.lst wie folgt aus:

title Linux (2.4.18)
kernel (hd0,0)/boot/vmlinuz-2.4.18 root=/dev/hda1

kernel ist hierbei das Schlüsselwort, das festlegt, was in der Zeile angegeben wird. (hd0,0) bezeichnet das Laufwerk, /boot/vmlinuz-2.4.18 gibt an, wo darauf der Kernel liegt, und root=/dev/hda1 erfüllt den selben Zweck wie schon das root=-Schlüsselwort in der lilo.conf.

Sollten Sie den Standard-Kernel Ihrer Distribution benutzen, müssen Sie eventuell zu jeder kernel-Zeile noch eine initrd-Zeile angeben. Eine initrd-Datei enthält eine "Initial RAM-Disk", in der diverse Module abgelegt sind, die beim Booten geladen werden. Heißt die initrd-Datei /boot/initrd-2.4.18, so lautet der korrekte Eintrag für die menu.lst in unserem Beispiel

initrd (hd0,0)/boot/initrd-2.4.18

Um die richtige initrd-Datei für Ihren Kernel herauszufinden, vergleichen Sie die Ausgabe von uname -r am besten mit den initrd-*-Dateien in /boot.

Eine vollständige GRUB-Konfigurationsdatei mit Kommentaren finden Sie auf der Heft-CD. Sie können das Beispiel einfach übernehmen, die für Sie relevanten Dinge abändern und die Datei dann unter /boot/grub/menu.lst abspeichern.

Ist die Konfigurationsdatei fertig, kann GRUB in den Boot-Sektor der Festplatte geschrieben werden. Das folgende Beispiel geht davon aus, dass Sie GRUB in den Master Boot Record der ersten Festplatte, hier /dev/hda, installieren wollen. Führen Sie dazu als Benutzer root den Befehl grub auf der Konsole aus. Sollte in Ihren Rechner kein Diskettenlaufwerk eingebaut sein, verwenden Sie bitte grub --no-floppy. Sie befinden sich nun auf der grub-shell und müssen als nächstes festlegen, auf welcher Partition bei Ihnen das /boot-Verzeichnis beheimatet ist. Das erledigen Sie mit dem Schlüsselwort root:

grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83

GRUB erkennt dabei zwar das Dateisystem auf dem Laufwerk, kann damit aber trotzdem nicht umgehen. Das Schlüsselwort embed schafft Abhilfe:

grub> embed /boot/grub/e2fs_stage1_5 (hd0)
16 sectors are embedded.

Die Zahl vor sectors kann dabei situationsabhängig variieren und sollte deswegen unbedingt notiert werden. Sie ist für den nächsten Befehl, der GRUB in den Master Boot Record der Festplatte schreibt, von enormer Bedeutung. Zum Installieren des Boot Loaders verwenden Sie nun das install-Schlüsselwort:

grub> install /boot/grub/stage1 d (hd0) (hd0)1+notierte_Zahl /boot/grub/stage2 /boot/grub/menu.lst

Verlassen Sie die GRUB-Shell mittels quit, und rebooten Sie Ihren Rechner. Beim Neustart sollte nun das GRUB-Menu anstelle des Lilo-Prompts erscheinen.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 12/2014: ANONYM & SICHER

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...