Aktionsbündnis

Zeigt Grub ein Textmenü ähnlich dem aus Abbildung 4, holen Sie über die Taste [E] die hinter einem Eintrag steckenden Aktionen hervor. Wie in einem Texteditor korrigieren Sie diese Einstellungen hier direkt und führen das Ergebnis dann mit [Strg]+[X] aus. Damit enden aber schon wieder die Gemeinsamkeiten, die eigentlichen Befehle unterschieden sich zwischen den beiden Grub-Versionen. Abbildung 6 zeigt ein Beispiel für Grub 2: Um Linux zu starten, benötigt der Bootmanager zunächst das Wissen um das Ext2-Dateisystem (insmod ext2), den Kernel findet er auf der ersten Partition der ersten Festplatte (set root='(hd0,1)') in der Datei /boot/vmlinuz-2.6.32-22-generic.

Abbildung 6: Grub 2 startet mit diesen Aktionen ein Ubuntu.

Bei Grub Legacy verhindert häufig ein vom Distributor aufgehübschtes Bootmenü den direkten Zugriff auf die Einstellungen (wie etwa bei OpenSuse). In diesem Fall ist die Konfigurationsdatei /boot/grub/menu.lst der passende Anlaufpunkt. Sie öffnen und bearbeiten sie als Administrator von einem Rettungssystem aus mit einem Texteditor – legen Sie aber vorher unbedingt eine Sicherheitskopie an. In der Datei finden Sie verschiedene Abschnitte, die jeweils mit dem Schlüsselwort title beginnen, dem dann der entsprechende Menüeintrag folgt (Abbildung 7).

Abbildung 7: Wie hier menu.lst verrät, besitzt das Bootmenü dieser OpenSuse-11.3-Installation drei Einträge.

Der nächste Befehl root (hd0,1) teilt Grub mit, dass sich der Kernel auf der zweiten Partition der ersten Festplatte befindet. Hinter kernel steht schließlich noch der vollständige Dateiname des Linux-Kernels.

Wenn Sie dasselbe unter Grub 2 erreichen möchten, können Sie entweder darauf hoffen, dass update-grub bei einer Neuinstallation die fehlerhaften Einträge korrigiert, oder müssen sich in die komplexen Konfigurationsdateien einarbeiten. Eine Anleitung dazu bietet ein Artikel aus LU 01/2010 [1].

Im Gegensatz zu Linux zählen übrigens beide Grub-Versionen die Laufwerke von 0 aus durch, /dev/sda mutiert hier zu hd0. Grub orientiert sich dabei an der Reihenfolge, die das BIOS vorgibt. Bei den Partitionen beginnt Grub 2 die Nummerierung bei 1, Grub Legacy startet hingegen bei 0. Die Angabe hd0,1 meint bei Grub 2 somit die erste Partition der ersten Festplatte, bei Grub Legacy hingegen die zweite Partition der ersten Platte.

Abbildung 8: Einige Distributionen (wie hier OpenSuse 11.3) bieten eine grafische Oberfläche, mit der man das Grub-Menü etwas bequemer nach seinen Wünschen verändern kann.

Fensterkette

Grub kann nicht nur Linux starten, sondern auch einen anderen Bootloader. Da der Anfang der Festplatte bereits belegt ist, muss der fremde Bootloader in den ersten 512 Bytes einer der primären Partitionen liegen. Dieser Bereich ist extra für diese Zwecke reserviert und heißt passend Partition Boot Record. Auf diese Weise starten Grub auch Betriebssysteme, mit denen er sich überhaupt nicht auskennt – wie etwa Windows: Das BIOS lädt Grub, der wiederum aus der Windows-Partition den Windows-Bootloader, welcher schließlich das Betriebssystem aus Redmond startet. Es entsteht eine Kette aus Bootloadern, die man auch als Chainloader bezeichnet.

Mit diesem Wissen lässt sich eine Unart von Windows beheben: Wenn Sie Microsofts Betriebssystem nach Linux installieren, überpinselt es ohne Nachfrage Grub mit seinem eigenen Bootloader. Um wieder Linux starten zu können, schreiben Sie zunächst Grub zurück und fügen ihm dann einen weiteren Menüeintrag für Windows hinzu. Grub-2-Besitzer gehen dazu einfach wie im Text unter "Restaurierung" beschrieben vor: Der Befehl update-grub findet automatisch den Bootloader von Windows und erstellt einen passenden Menüeintrag.

Bei Grub Legacy fügen Sie zunächst als Administrator der Datei /boot/grub/menu.lst am Ende die folgenden Zeilen hinzu:

title Windows
  root (hd0,5)
  makeactive
  chainloader +1

Dabei passen Sie die Festplattenangabe an Ihre Gegebenheiten an. Die Zeile chainloader +1 sorgt dafür, dass Grub den Windows-Bootloader auf seiner Partition weckt.

Pinguine an die Macht

Konnte Grub den Linux-Kernel finden, startet er diesen und übergibt ihm die Kontrolle. Das freie Betriebssystem schaut sich jetzt zunächst im Computer etwas um, ermittelt die verbaute Hardware und lädt dazu die passenden Treiber. Dabei muss Linux häufig Treiber laden, die nicht fest im Kernel integriert sind. Zu diesem Zeitpunkt gibt es aber noch keinen Zugriff auf die Festplatte. Um das Dilemma zu lösen, schnüren viele Distributionen ein absolutes Mini-Linuxsystem und verpacken es in eine einzige Datei, die meist den Namen initrd trägt und im Verzeichnis /boot liegt.

Die Funktionsweise dieser Initial RAM-Disk ähnelt den bekannten ISO-Dateien für CDs: Grub lädt die Datei initrd in den Hauptspeicher, wo der Kernel ihren Inhalt wie eine Mini-Festplatte sieht. Da die Initial RAM-Disk wichtige Treiber enthält, bleibt das System ohne sie im schlimmsten Fall stehen. Wo die initrd zu finden ist, ermittelt Grub Legacy aus der Pfadangabe hinter initrd in der Datei menu.lst (Abbildung 7). Bei Grub 2 finden Sie diese Zeile, indem Sie in seinem Bootmenü den entsprechenden Eintrag ansteuern und dann [E] drücken (Abbildung 6).

Sobald der Kernel alle grundlegenden Treiber geladen hat, entfernt er die initrd wieder aus dem Speicher und bindet dafür die Festplattenpartition mit dem richtigen Linux-System ein. Welches Laufwerk beziehungsweise welche Partition die richtige ist, gibt ihm noch Grub mit auf den Weg. Wenn Sie einen Blick in die Datei menu.lst werfen, beziehungsweise im Fall von Grub 2 auf Abbildung 6, finden Sie diese Zusatzinformationen am Ende der Zeile kernel respektive linux. Die Partition mit dem kompletten Linux-System steht dort hinter root=.

Mittlerweile verwenden alle Distributionen keine Gerätenamen mehr, sondern identifizieren die Partitionen anhand eindeutiger Identifikationsnummern, den Universally Unique Identifier, kurz UUIDs. Sollte der Kernel zwar starten, irgendwann aber das Root-Dateisystem nicht mehr einbinden können, ist möglicherweise diese Nummer falsch. Ersetzen Sie sie dann gegen den entsprechenden Gerätenamen, beispielsweise root=/dev/sda1. Bei Grub Legacy müssen Sie dazu die Datei menu.lst anpassen. Bei Grub 2 steuern Sie im Bootmenü den Linux-Eintrag an, drücken [E] und ändern den Befehl im Text (siehe Abbildung 9).

Abbildung 9: Hier wurde die (falsche) UUID der Festplatte gegen den Gerätenamen /dev/sda1 ausgetauscht.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 08/2016: Multimedia

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Aktuelle Fragen

Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...
Probleme beim Hochfahren der Terastaion 5400 mit Unix-Distrib
Sheldon Cooper, 10.07.2016 09:32, 0 Antworten
Hallo ihr lieben, habe seit zwei Tagen das Problem, das das NAS (Raid5) nicht mehr sauber hoch...
Mit Firewire Videos improtieren?
Werner Hahn, 09.06.2016 11:06, 5 Antworten
Ich besitze den Camcorder Panasonic NV-GS330, bei dem die Videos in guter Qualität nur über den 4...
lidl internetstick für linux mint
rolf meyer, 04.06.2016 14:17, 3 Antworten
hallo zusammen ich benötige eure hilfe habe einen lidl-internetstick möchte ihn auf linux mint i...