ubuntuusers.de

ubuntuusers.deWikiGRUB

GRUB

Achtung!

Fehler bei der Konfiguration des Bootmanagers können zu einem unbenutzbaren System führen.

Hinweis:

Der ab Ubuntu 9.10 als Standard verwendete neue Bootloader GRUB 2 wird in einem eigenen Artikel behandelt. Der hier beschriebene Vorgänger wird inzwischen auch als "GRUB Legacy" bezeichnet. Grub 2 durch Grub ersetzen erläutert, wie man die ältere GRUB-Version dennoch nutzen kann.

Besitzer eines Apple, die Ubuntu installieren möchten, müssen unbedingt erst den Artikel Apple Computer lesen.

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Bei Ubuntu wird der Boot-Loader GRUB verwendet, um sich selbst und andere auf dem System installierte Betriebssysteme zu starten. Standardmäßig wird GRUB im MBR (Master Boot Record) der ersten Festplatte (/dev/sda) installiert. Dies bringt den Vorteil einer einfachen Installation und Aktualisierungsmöglichkeit des Bootloaders.

GRUB konfigurieren

Der GRUB Bootloader wird über die Datei /boot/grub/menu.lst konfiguriert. In dieser Datei befinden sich nicht nur die für GRUB notwendigen Informationen, wo welcher Kernel oder welches Betriebssystem zu finden ist, sondern auch Informationen für das Skript update-grub, welches die menu.lst automatisch neu schreiben kann. Das Skript wird z.B. bei einer Aktualisierung des Kernels ("kernel update") ausgeführt.

Für eine grafische Konfiguration kann man den Startup Manager verwenden.

Konfiguration während des Bootens ändern

Sollte es aufgrund einer Fehlkonfiguration zu einem Fehler wie beispielsweise

Error 17 : Cannot mount selected partition

kommen und der Rechner nicht mehr starten lassen, können die Grub-Einträge vorübergehend geändert werden. Wie das geht, ist unter Booten beschrieben.

Diese Änderungen werden allerdings nicht in die menu.lst geschrieben. Man muss die Datei nach erfolgreichem Booten selbst anpassen.

Installation

Bei der Installation von Ubuntu wird GRUB automatisch installiert. Sollte es hierbei zu einem Fehler kommen oder - was in seltenen Fällen vorkommen kann - GRUB auf der falschen Festplatte installiert worden sein, so kann dies nachgeholt werden. Dazu eignen sich die Methoden, die im folgenden Kapitel beschrieben werden. Ein eigener Artikel beschäftigt sich mit Sonderformen der Installation.

Achtung!

Die Installation von GRUB geht einher mit dem Überschreiben des eventuell bestehenden Bootloaders - zum Beispiel dem einer Windowsinstallation. Es wird daher empfohlen, zunächst eine Sicherung des bestehenden Bootloaders anzulegen.

Bootloader wiederherstellen

In manchen Fällen kann es notwendig sein, den Bootloader wiederherzustellen. Ein häufiges Beispiel ist die nachträgliche Installation eines Windows-Betriebssystems, bei dem der MS-eigene Bootloader in den MBR geschrieben wird.

Je nach vorhandener Rescue-CD gibt es hierbei verschiedene Möglichkeiten.

Achtung!

In folgenden Anleitungen wird davon ausgegangen, dass das Ubuntusystem auf der Partition /dev/sda2 installiert ist. GRUB soll im MBR derselben Platte - also /dev/sda - installiert werden. Diese Daten müssen natürlich an die eigene Situation angepasst werden.

Wenn man nicht sicher ist, welche Bezeichnung richtig ist, kann man sich mit

sudo fdisk -l 

eine Übersicht der Partitionen anzeigen lassen. sdb oder sdc stehen für die zweite bzw. dritte Festplatte.

Methode 1: Per "Super Grub Disk"

Alle, denen die nachfolgenden Lösungen zu kompliziert sind, sollten einen Blick auf die Super Grub Disk {en} werfen. Mit einer kleinen (ca. 3 MB) Boot-CD/USB-Stick lässt sich recht einfach nicht nur GRUB installieren, sondern auch ein vorhandenes Windows wieder starten.

Methode 2: "root-directory" Variante

Zunächst benötigt man eine Live-CD (Ubuntu Desktop-CD, Knoppix, etc.), von der man startet und dort dann ein Terminal öffnet [1].

Als erstes bindet man das Ubuntu-System mit

sudo mount /dev/sda2 /mnt 

ein.

Nutzt das System eine separate boot-Partition, so muss diese mit

sudo mount /dev/sda3 /mnt/boot 

eingebunden werden. Bei einer normalen Installation ist diese Partition nicht vorhanden, und somit dieser letzte Befehl nicht erforderlich.

GRUB lässt sich nun leicht durch

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

neu installieren.

Der Befehl "update-grub" kann bei dieser Methode nicht verwendet werden.

Der Parameter --recheck sollte zusätzlich verwendet werden, wenn es zu folgender Fehlermeldung kommt:

/dev/sda does not have any corresponding BIOS drive

Methode 3: Chroot über ein Live-System

Jedes Live-System ist zur Reparatur geeignet - ob Ubuntu Desktop-CD, Knoppix oder ein Mini-Linux von Diskette.

Hinweis:

Es ist wichtig, dass die Systemarchitektur des Live-Systems mit der des installierten Ubuntu-Systems übereinstimmt. Es ist also nicht ohne weiteres möglich, sich mit chroot und einer 32Bit-LiveCD in ein 64-Bit-System einzuloggen. Wird die gleiche CD wie zur Installation genutzt, so sollte es keine Probleme geben.

Nach dem Start des Live-Systems muss die Partition mit dem installierten Ubuntu-System eingebunden werden. Dazu muss ein Terminal geöffnet werden [1] und der Befehl

sudo mount /dev/sda2 /mnt 

ausgeführt werden.

Nutzt das System eine separate boot-Partition, so muss diese mit

sudo mount /dev/sda3 /mnt/boot 

eingebunden werden. Bei einer normalen Installation ist diese Partition nicht vorhanden und somit dieser letzte Befehl nicht erforderlich.

Vor dem Wechsel in das installierte System muss diesem der Zugriff auf wichtige Systeminformationen zugesichert werden. Man bindet dazu das Verzeichnis mit den Gerätedateien innerhalb des installierten Systems ein:

sudo mount -o bind /dev /mnt/dev 

und /sys

sudo mount -o bind /sys /mnt/sys 

Ähnlich verfährt man mit dem Schnittstellendateisystem /proc. Dieses wird mit

sudo mount -t proc /proc /mnt/proc 

eingebunden.

Nun erfolgt der Wechsel in das installierte System:

sudo chroot /mnt /bin/bash 

Und endlich kann GRUB neu geschrieben werden:

grub-install /dev/sda 

Sollte hier der Fehler "Could not find device for /boot: Not found or not a block device." auftreten, gibt man folgende Zeile vor dem grub-install ein:

cp /proc/mounts /etc/mtab 

Falls GRUB zum ersten Mal installiert wird, sollte nun auch

update-grub 

ausgeführt werden.

Abschließend wird die chroot-Umgebung mit

exit 

verlassen und das Live-System beendet.

Sollten nach der Neuinstallation von GRUB Probleme auftreten (zum Beispiel fehlender Sound), kann es helfen, sich wieder als Besitzer seines Homeverzeichnisses einzutragen:

sudo chown -hR user:user /home/user 

wobei "user" hier gegen den eigenen Benutzernamen ausgetauscht werden muss.

Methode 4: GRUB mit Alternate-CD neu schreiben

Sollte man gerade keine Live-CD zur Hand haben (oder nicht so lange warten wollen, bis sie gebootet hat), kann man auch die Ubuntu Alternate-CD nehmen. Einfach die Installation so lange durchlaufen lassen, bis die Frage nach den Partitionen kommt. Mit Alt + F2 auf die Konsole wechseln und mit bestätigen. Man ist jetzt automatisch als Root angemeldet.

mount /dev/sda2 /mnt/ 

Vor dem Wechsel in das installierte System muss diesem der Zugriff auf wichtige Systeminformationen zugesichert werden. Man bindet dazu das Verzeichnis mit den Gerätedateien innerhalb des installierten Systems ein:

mount -o bind /dev /mnt/dev 

Ähnlich verfährt man mit dem Schnittstellendateisystem /proc. Dieses wird mit

mount -t proc /proc /mnt/proc 

eingebunden.

Jetzt bewegt man sich in das eingebundene Verzeichnis und wechselt in das Ubuntu-System ( Strg + D verlässt das Verzeichnis wieder):

cd /mnt/
chroot /mnt/ 

Jetzt kann die neue Konfiguration in den MBR geschrieben werden:

grub-install /dev/sda 

Der nächste Befehl analysiert das root-System und schreibt eine Standard-Konfiguration. Das ist nur notwendig, falls keine Konfiguration vorliegt oder Fehler enthalten sind.

update-grub 

Danach wird mit folgenden Befehlen die chroot-Umgebung verlassen und das System schließlich neu gestartet:

exit
reboot 

Methode 5: GRUB wiederherstellen bei Benutzung von LVM

Sollte man einen Logical Volume Manager für seine Festplatte benutzen, muss man ein bisschen mehr Aufwand treiben. Am besten ist hierfür die Desktop-CD von Ubuntu zu nutzen.

Zur Nutzung des Logical Volume Managers muss als erstes das Paket lvm2 installiert werden.

sudo apt-get install lvm2 

Nun muss der LVM-Kerneltreiber geladen werden.

sudo modprobe dm-mod 

Dann muss man das LVM zugänglich machen. Das geht im Terminal [1] mit den Befehlen

sudo vgscan
sudo vgchange -a y 

Wenn man sich nicht sicher ist, wie die Namen der Volumes im LVM lauten, kann man diese mit folgendem Befehl anzeigen lassen.

sudo lvscan 

Nun sollte man die Partition mit dem Root-Verzeichnis (/) einbinden:

mkdir /mnt/ubuntu
mount /dev/mapper/LV-root /mnt/ubuntu 

Ebenso müssen die anderen Logical Volumes eingebunden werden:

mount /dev/mapper/LV-usr /mnt/ubuntu/usr
mount /dev/mapper/LV-home /mnt/ubuntu/home 

Das /dev/mapper/LV-* muss nach den eigenen Namensvergaben angepasst werden.

Die üblicherweise separate boot-Partition muss mit

sudo mount /dev/sda3 /mnt/ubuntu/boot 

eingebunden werden.

Nun kann man ganz normal mit der chroot-Umgebung (siehe oben) weiter machen.

Methode 6: GRUB wiederherstellen mit der GRUB-Konsole

Bei dieser Methode müssen sämtliche Arbeitschritte manuell ausgeführt werden, die ansonsten vom Skript grub-install durchgeführt werden. Darin liegt die besondere Bedeutung dieser Methode: Sollte grub-install - aus welchem Grund auch immer - mit der Systemkonstellation nicht zurechtkommen, so ist eine manuelle Installation hilfreich. Oft werden bei diesem Vorgang auch hilfreiche Fehlermeldungen ausgegeben, die bei der Suche nach der Ursache des Problems helfen können.

Zunächst muss sichergestellt werden, dass die benötigten Komponenten im Verzeichnis /boot/grub/ der Rootpartition abgelegt wurden. Wird eine separate Bootpartition verwendet, so müssen die Komponenten statt dessen dort im Verzeichnis /grub/ vorliegen. Mögliche Komponenten finden sich normalerweise im Verzeichnis /usr/lib/grub/i386-pc. Bei anderen Architekturen muss der Pfad angepasst werden. Im Zweifelsfall sollte man alle Dateien kopieren.

Jetzt wird die GRUB-Konsole mit Root-Rechten gestartet [1]:

sudo grub 

Als nächstes wird die Partition festgelegt, die das Verzeichnis /boot/grub (bzw. /grub bei Verwendung einer boot-Partition) beinhaltet. Diese kann über den Befehl

find /boot/grub/stage1 

aufgerufen werden. Anschließend wird mit nachfolgendem Befehl die Boot-Partition gewählt:

grub> root (hd0,x) 

Dabei wird x durch die oben gefundene Partition ersetzt. Nun kann die eigentliche Installation mit

grub> setup (hd0) 

durchgeführt werden. Probleme - zum Beispiel fehlende Komponenten - werden für gewöhnlich an dieser Stelle von GRUB gemeldet.

Abschließend kann die GRUB-Konsole mit

grub> quit 

verlassen werden.

Zu beachten ist, dass Geräte und Partitionen in der GRUB-eigenen Notation angegeben werden müssen: Die Platten- und Partitionszählung beginnt bei Null! Die hier in allen Beispielen verwendete Rootpartition /dev/sda2 wäre demnach (hd0,1).

Sicherheitsaspekte

Man kann GRUB auch vor unautorisiertem Zugriff schützen, insbesondere den Recovery Modus. Näheres dazu siehe hier.

Problem mit GRUB unter Adaptec SCSI Controllern

Ein recht häufiges Problem mit Adaptec SCSI-Controllern ist der "GRUB Hard Disk Error". Es kommen auch andere Fehlermeldungen vor, jedenfalls lässt sich der Computer nicht starten. Das verflixte an dem Fall ist, dass man mit der Super GRUB Disk unter der Funktion "direkt von MBR starten" einfach booten kann. Das Problem liegt an der Übergabe der LBA-Festplattengeometriedaten vom SCSI-Controller zum BIOS. Hier hat GRUB keine Chance. Auch LILO kann hier nichts ausrichten.

Der Trick zur Lösung besteht in der Installation von GAG (Graphical Boot Manager). Dieser Bootmanager kann zwar weder Linux noch Windows allein booten, doch er kann auf vorhandene Booteinstellungen zugreifen, und er hat kein Problem mit dem oben beschriebenen Bug. Wichtig ist hier, dass GRUB nicht mehr im MBR, sondern auf der Linux Bootpartition installiert wird. Und das beste an diesem Manager ist, dass er direkt beim Booten konfigurierbar ist. Um GRUB auf einer Partition (hier sda5) zu installieren, muss zum Beispiel folgendes als root eingeben:

grub-install /dev/sda5 

Aber erst nach der Installation von GAG (link siehe unten).

GRUB Error 12, 13 und 21

Error vor dem GRUB-Bootmenü

Sollte die Fehlermeldung kommen, bevor der GRUB das Bootmenü auflistet, kann die Ursache mehrere Quellen haben.

Ursache 1

GRUB ist nicht auf der richtigen Festplatte/Partition installiert.

Hinweis:

Bei einer Standardinstallation darauf achten, dass die Festplatte, auf die Ubuntu installiert werden soll, auch an erster Stelle in der BIOS-Bootreihenfolge steht, da GRUB automatisch auf (hd0,0) installiert wird. Sollte sich auf dieser Festplatte der Master Boot Record (MBR) eines anderes Betriebssystem befinden, so wird dieser überschrieben. Um ihn wiederherzustellen, muss man den MBR wiederherstellen. Wie das geht, steht weiter unten im Artikel.

Ursache 2

Die Einträge groot und kopt in der menu.lst sind nicht korrekt. Um herauszufinden, welche Festplatte dort eingetragen werden muss, gibt man mit Hilfe einer Live-CD in der Konsole

sudo fdisk -l 

ein.

Hinweis:

/dev/sda1 ist die erste Festplatte, dafür steht das "a", und die "1" steht für die erste Partition dieser Festplatte. In der Spalte boot zeigt ein * an, ob die Partition aktiv (im Sinne von startbar) ist.

Für groot und kopt=root müsste nun, wenn der MBR von Ubuntu auf /dev/sda1 liegt,

groot=(hd0,0) und für kopt=root=/dev/sda1 ro

eingetragen werden.

Achtung!

Dies müssen nicht unbedingt die richtigen Einträge für Root in den Kerneleinträgen für Ubuntu sein.

Error nach dem GRUB-Bootmenü

Es kommt öfters vor, dass GRUB zwar das Bootmenü auflistet, man aber beim Auswählen eines Betriebssystems eine Fehlermeldung zurückbekommt. Sollte der Fehler Error 12, Error 13 und Error 21 sein, drückt man im GRUB-Bootmenü C . Jetzt befindet man sich in der Grubkonsole. Hier gibt man

find /vmlinuz 

ein. Damit wird angezeigt, auf welcher Partition GRUB Ubuntu erwartet. Dies gibt man anschließend in der menu.lst bei den Kerneleinträgen unter root ein.

Fehler bei Windows-Boot

Sollte eine Fehlermeldung bei der Auswahl von Windows erscheinen, so lässt dies entweder

  1. einen falsch eingegebenen root-Eintrag vermuten

  2. die Weiterleitung des GRUB zum Windows-Bootloader mittels chainload +1 ist nicht eingegeben

  3. oder es muss noch der "map-Trick" angewendet werden. Ein Hinweis auf dieses Problem ist, wenn nach Wahl des Menüeintrags nur die Meldung "Starting up..." ohne weitere Fehlermeldung erscheint. Einzelheiten zur Anwendung der map-Anweisung findet man im Artikel menu.lst

Zuerst muss man aber herausfinden, auf welcher Festplatte GRUB Windows erwartet. Hier die Möglichkeiten, wie man die richtige Festplatte für den root-Eintrag findet.

Möglichkeit 1

Beispiel: Eingebaut sind zwei Festplatten. Auf Festplatte Nr.1 ist Windows. Auf Festplatte Nr.2 sind Ubuntu und GRUB installiert. Im BIOS steht Festplatte zwei an erster Stelle zum Booten. Damit glaubt GRUB, Ubuntu müsse sich auf Festplatte 1 (hd0,0) befinden. Die Festplatte eins steht aber an der zweiten Stelle. Damit erwartet GRUB Windows auf Festplatte 2 (hd1,0).

Möglichkeit 2

Eine zwar nicht so elegante, aber dennoch effektive Methode ist es, Windows einfach mit allen möglichen Varianten in der menu.lst zu erstellen und anschließend auszuprobieren. Damit erspart man sich die langen Ladezeiten der Live-CD.

Eine Platte mit sechs Partitionen

  • Jeweils von (hd0,0) bis (hd0,6) bei Windows unter root eintragen.

Zwei Festplatten mit je drei Partitionen

  • Jeweils von (hd0,0) bis (hd0,3) und (hd1,0) bis (hd1,3) bei Windows unter root eintragen.

Hinweis:

Bei RAID 0-Systemen werden beide Festplatten als eine erkannt. Das heißt, (hd0,0) steht in diesem Fall für sda und sdb. Eine dritte Festplatte folgt mit (hd1,0). Es ist auch möglich, dass ein RAID 0 aus zwei SATA-Festplatten als (hd1,0) erkannt werden und SATA 3 als (hd0,0). Darum ist es immer besser, alle Varianten durchzuprobieren.

GRUB deinstallieren

Um GRUB aus dem Master Boot Record zu entfernen, gibt es verschiedene Möglichkeiten.

Falls man ein reines Linux-System hat, kann man eine Sicherung des Master Boot Records einspielen (siehe oben).

Falls man ein Dualbootsystem mit Windows hat, kann man bei:

  • 2000/XP von der Windows Installations-CD booten und im "Setup" mit der Taste R die Wiederherstellungskonsole starten. Nun wählt man aus der Liste die eigene Windows-Installation aus und gibt das Administratorkennwort ein. Mit dem Befehl fixmbr wird der MBR überschrieben und GRUB deinstalliert. Dabei bleiben die Partitionen erhalten. Danach wird mit dem Befehl fixboot der Bootsektor der Windows-Partition neu geschrieben. Mit exit verlässt man die Wiederherstellungskonsole und startet den Computer neu. Nun wird Windows booten.

  • Vista/7/8 von der Installations-CD booten und beim ersten Fenster des Installationsprozesses nach dem Auswählen der Sprache die Option Computerreparaturoptionen auswählen. Nachdem der Computer nach bereits vorhandenen Installationen von Windows gesucht hat, startet man die Eingabeaufforderung. Mit dem Befehl Bootrec /FixMbr wird der MBR überschrieben und GRUB deinstalliert. Dabei bleiben die Partitionen erhalten. Danach wird mit dem Befehl Bootrec /FixBoot der Bootsektor der Windows-Partition neu geschreiben. Mit exit verlässt man die Wiederherstellungskonsole und startet den Computer neu. Nun wird Windows booten.

Hinweis:

Die Wiederherstellungskonsole gibt es nicht auf allen Windows-CDs. So ist diese bei einigen OEM- oder Recovery-Versionen nicht vorhanden!

Wer keine Installations-CD zur Hand hat, kann sich unter Windows NT, 2000, XP, Server 2003, Vista, Server 2008, 7 und PE auch MBRFix {en} {dl} herunterladen (Dokumentation {en}) und dann in einem Terminal unter Windows den Befehl:

MbrFix /drive <num> fixmbr 

eingeben, wobei für <num> die Laufwerksnummer (Zählung beginnt mit Null) anzugeben ist. Falls Windows Vista verwendet wird, lautet der Befehl

MbrFix /drive <num> fixmbr /vista 

Achtung!

Eine fehlerhafte Verwendung der Software kann möglicherweise zu einem Totalverlust der Daten auf der Festplatte führen!

GRUB-Shell

Die Funktionen der GRUB-Shell werden in einem eigenen Artikel beschrieben: GRUB/GRUB-Shell.

Auf welcher Festplatte ist GRUB installiert?

Um herauszufinden, auf welcher Festplatte (oder Partition) der Bootloader installiert ist, kann man eine der hier beschriebenen Methoden verwenden: Skripte/GRUB finden.

Diese Revision wurde am 2. April 2014 18:15 von Das Wort erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Windows, Installation, Server