SuSE Linux: Versionen ab 8.1
Der größte Unterschied zu LILO besteht darin, dass Grub mehrere Dateisysteme direkt unterstützt
(u. a. alle Dateisysteme, die unter SuSE Linux verwendet werden können sowie vfat). Dadurch,
dass Grub noch vor dem Booten auf das Dateisystem zugreifen kann, ist es nicht notwendig, Grub
nach dem Verändern der Grub-Konfigurations-Datei neu zu installieren. Grub liest beim Booten
den Inhalt der Menü-Datei neu ein.
Auch wenn ein neuer Kernel (/boot/vmlinuz) installiert
bzw. die initiale Ramdisk (/boot/initrd) verändert wird, findet Grub diese selbständig. Für
Grub ist es egal, wo der Kernel physikalisch liegt, solange nur die Angabe der Partition und
der Pfad des zu bootenden Kernels in der Menüdatei richtig eingetragen ist. Daher entfällt die
Neuinstallation des Bootloaders z. B. nach dem Kernel kompilieren.
Ein weiterer sehr großer Vorteil von Grub ist die Möglichkeit des Editierens aller Boot-Parameter noch vor dem Booten. Dies ist praktisch, falls beim Editieren der Menüdatei Fehler gemacht wurden.
Weiterhin ist es sogar möglich, die Bootkommandos in eine Art Eingabeaufforderung einzugeben. Damit lassen sich auch Betriebssysteme booten, für die (noch) kein Eintrag im Bootmenü existiert. Grub bietet hierbei die Möglichkeit, die Lage und Bezeichnung des Kernels und der initrd noch vor dem Booten festzustellen.
Im Folgenden soll nach einem Kurzüberblick über den Grub Bootprozess zunächst die Konfiguration mittels YaST2 erläutert werden. Anschließend wird der Aufbau der eigentlichen Konfigurationsdatei (die Datei /boot/grub/menu.lst) erklärt. Es folgt die Erläuterung der Dateien /boot/grub/device.map, in welcher die Zuordnung der Massenspeichergeräte zu den BIOS-Device-Namen festgelegt wird, sowie der Datei /etc/grub.conf, die hauptsächlich von YaST2 benutzt wird. Es wird desweiteren kurz angerissen, auf welche Weise Grub per Hand installiert werden kann. Abschließend werden die Möglichkeiten erläutert, die das Grub Bootmenu bieten.
Die erste Stufe von Grub ("stage 1") ist nach der Installation von SuSE Linux im Master Boot Sektor, in den Bootsektor einer Festplattenpartition oder in den Bootsektor einer Diskette gespeichert worden. Da diese erste Stufe nur sehr klein sein darf, da im MBR bzw. den Bootsektoren nur wenig Platz zur Verfügungs steht, besteht die einzige Aufgabe dieses Teils ausschließlich darin, die zweite Stufe von Grub zu laden.
Die zweite Stufe von Grub stellt die eigentlichen Funktionen des Bootloaders bereit: u. a. das Auswahlmenü (bzw. verborgen die Grub-Shell, s. u.) und den Programmcode, mit dem die Steuerung des Rechners an das Betriebssystem übergeben wird. Die "stage 2" Datei befindet sich unter SuSE Linux unter /boot/grub/stage2. In der "stage 1" Datei wird beim Installieren des Bootloaders eingetragen, an welcher physikalischen Stelle der Festplatte die "stage 2" zu finden ist.
Das Editieren von Parametern ist meist nur in "Notfällen" nötig, zum Beispiel, wenn ein Betriebssystem nicht gebootet werden kann. Die Änderungen gelten nur für dieses eine Mal, werden also nicht dauerhaft übernommen. Beachten Sie, daß beim Booten lediglich die amerikanische Tastaturbelegung zur Verfügung steht. Die Belegung der Sonderzeichen ist somit vertauscht.
Zum Editieren eines Menüeintrags drücken Sie, wie beschrieben, zunächst ESC. Wählen Sie mit Hilfe der Cursor-Tasten den zu editierenden Eintrag aus und drücken Sie "e". Falls Sie beispielsweise den "Linux"-Eintrag ausgewählt haben, werden die folgenden Zeilen ausgegeben:
kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791 initrd (hd0,4)/initrdMit den Cursor-Tasten wählen Sie eine Zeile aus. Durch ein nochmaliges Drücken von "e" kann die Zeile editiert werden. Zum Beispiel können auf diese Art und Weise Partitionsangaben und Pfadangaben korrigiert werden. Durch Drücken der Taste ENTER kommen Sie zurück in das Menü, aus dem der Eintrag mit "b" gebootet werden kann. Weitere Möglichkeiten werden in einem Hilfetext am unteren Rand (in englischer Sprache) angezeigt.
Eine weitere Möglichkeit für Experten, die allerdings sehr selten benötigt wird: Mit "c" (für "command line") finden Sie sich in der Grub Shell wieder, einer Art Eingabeaufforderung. Eine Übersicht über die zur Verfügung stehenden Kommandos bekommen Sie mit "help". Mit der Taste "ESC" kommen Sie in das Boot-Menü zurück.
Die Grub Shell ermöglicht das Starten von Betriebssystemen, die nicht im Grub-Menü zu finden sind. Praktisch ist diese Möglichkeit zum Beispiel, wenn testweise mit einem selbstkompilierten Kernel gebooten werden soll, für den (noch) kein Eintrag im Grub-Menü angelegt wurde.
Um per Grub-Shell ein System zu booten, können zum Beispiel folgende Kommandos per Hand eingegeben werden (in diesem Fall für das Booten eines Linux-System mit einer Boot-Partition auf /dev/hda5 und einer Root-Partition auf /dev/hda7):
grub> kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791 [Linux-bzImage, setup=0x1400, size=0xe9a45] grub> initrd (hd0,4)/initrd [Linux-initrd @ 0x369000, 0x863c9 bytes] grub> bootDie Syntax können Sie der Datei /boot/grub/menu.lst auf Ihrem System entnehmen. Eine Erläuterung finden Sie im Kapitel Beispiel der Menüdatei weiter unten im Artikel. Wichtig: Abschließend ist die Eingabe von "boot" erforderlich, damit das System gestartet wird.
Praktisch an dieser Stelle: Da Grub schon beim Booten direkt auf das Linux-Dateisystem zugreifen kann, kann (wie in der bash) bei der Eingabe von Dateinamen die TAB-Taste benutzt werden, um unvollständige Namen automatisch ergänzen zu lassen. Nützlich ist dies unter Umständen, wenn die genaue Bezeichnung von Dateien nicht bekannt ist. Weiterhin nützlich: Falls nicht bekannt ist, auf welcher Partition sich der Linux Kernel befindet, kann dieser mit den Befehlen
find /boot/vmlinuzbzw.
find /vmlinuzgesucht werden. Diese Kommandos würde in unserem Beispiel die folgende Ausgabe liefern:
(hd0,4)Natürlich kann mit dem Kommando find auch nach jeder anderen Datei (wie der initrd..) gesucht werden.
Desweiteren kann sogar mit Hilfe des Befehls cat der Inhalt einzelner Dateien angezeigt werden. Zum Beispiel können Sie sich den Inhalt einer Grub-Konfigurationsdatei ausgeben lassen, allerdings auch den Inhalt jeder anderen Datei. Auch jene Dateien, auf die Linux-Benutzer ohne root-Rechte im gestarteten Linux-System keinen Zugriff haben, können eingesehen werden!
Da dies aus sicherheitstechnischen Gründen nicht immer erwünscht ist, kann in der Datei /boot/grub/menu.lst ein Passwort gesetzt werden. Hierdurch ist das Starten der Betriegssysteme aus dem Menu heraus nach wie vor möglich, jedoch werden die interaktiven Möglichkeiten ("e" und "c") für Unbefugte gesperrt. Diese werden erst nach dem Drücken von "p" und der nachfolgenden Eingabe des Passworts freigegeben. Zum Setzen eines Passworts vergleichen Sie bitte den Abschnitt Die Konfiguration von Grub mittels YaST2 weiter unten im Text.
Mit Weiter wechseln Sie in einen Dialog, in welchem die Wartezeit des Boot-Prompts konfiguriert sowie ein Passwort für Grub festgelegt werden kann. Bitte beachten Sie, daß dieses Passwort das Ausführen von speziellen Grub-Befehlen am Boot-Prompt schützt. Es beeinflusst nicht die Betriebssystemen-Auswahl (Mehr zum Ausführen von speziellen Grub-Befehlen am Boot-Prompt im Kapitel "Die Möglichkeiten des Grub Boot-Menüs" weiter unten im Artikel).
Weitere Optionen erhalten Sie in den Einstellungen für Experten.
Mit Weiter gelangen Sie zur Konfiguration der Tabelle Abschnitte. Jeder Abschnitt steht für einen Eintrag im Bootmenü. Sie haben die Möglichkeit, Abschnitte hinzuzufügen, zu löschen sowie als Standard festzulegen. Mit der Auswahl Bearbeiten kann ein Abschnitt zum Beispiel umbenannt werden, oder (unter Einstellungen für Experten) können Kernelparameter geändert werden.
Das Drücken von Weiter führt Sie zurück zur Konfiguration der Abschnitte.
Wählen Sie Aktuelle Konfiguration speichern und drücken Sie auf Beenden, um die Änderungen auf die Festplatte zu speichern.
Im Punkt Manuelle Konfiguration für Experten können die Grub Konfigurations-Dateien /boot/grub/menu.lst sowie /etc/grub.conf manuell bearbeitet werden. Erläuterungen finden Sie dazu in den nachfolgenden Kapiteln.
Wählen Sie Ursprüngliche Konfiguration wiederherstellen, um die während der Installation vorgeschlagenen Einstellungen wiederherzustellen.
Beispiele:
(fd0) Diskettenlaufwerk (hd0) Erste Festplatte im System (die Boot-Festplatte) (hd1) Zweite Festplatte (hd0,0) Erste Partition auf der ersten FestplatteBei der Nummerierung der Partitionen sind 0 bis 3 die vier primären Partitionen. Die logischen Partition werden ab Ziffer 4 beginnend gezählt:
(hd0,0) Die erste primäre Partition auf der ersten Festplatte (hd0,1) Die zweite primäre Partition (hd0,2) Die dritte primäre Partition (hd0,3) Die vierte primäre und in der Regel die Erweiterte Partition (hd0,4) Die erste logische Partition (hd0,5) Die zweite logische Partition (hd0,6) Die dritte logische Partition usw.Weiterhin wichtig zu wissen: Bei der Bezeichnung der Festplatten unterscheidet Grub nicht zwischen IDE, SCSI oder sonstigen Geräten. Es werden alle Festplatten, die vom BIOS bzw. weiteren (SCSI-, RAID-, usw.) Controllern erkannt werden, der Bootreihenfolge nach durchgezählt. (hd0,0) ist immer die Festplatte, die in der Bootreihenfolge, die im BIOS eingestellt ist, die erste ist, egal ob nun IDE, SCSI oder RAID.
Auch dies möchte ich nochmal an einem Beispiel verdeutlichen: In einem System mit zwei IDE- und zwei SCSI Festplatten ist im BIOS die Bootreihenfolge "IDE vor SCSI" eingestellt. Somit ergibt sich für Grub die folgenden Bezeichnungen:
(hd0) Erste IDE-Festplatte (hd1) Zweite IDE-Festplatte (hd2) Erste SCSI-Festplatte (hd3) Zweite SCSI-FestplatteWeitere Einzelheiten hierzu finden Sie im Kapitel Die Map-Datei.
gfxmenu (hd0,4)/message color white/green black/light-gray default 0 timeout 8 title linux kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791 initrd (hd0,4)/initrd title windows root (hd0,0) makeactive chainloader +1 title floppy root (fd0) chainloader +1 title failsafe kernel (hd0,4)/vmlinuz.shipped root=/dev/hda7 ide=nodma apm=off acpi=off vga=normal nosmp maxcpus=0 3 initrd (hd0,4)/initrd.shippedDie Einträge haben folgende Bedeutung:
Weitere spezielle Informationen zum Booten von DOS/Windows-Betriebssystemen finden Sie in den Artikeln "Windows von der zweiten Festplatte booten" (http://sdb.suse.de/de/sdb/html/fhassel_grub_win1.html) und "Mehrere Windows-Installationen von einer Festplatte booten" (http://sdb.suse.de/de/sdb/html/fhassel_grub_win2.html).
Noch einmal zurück zum Thema, wie Grub in einem Mischsystem die Festplatten nummeriert. In einem System, in dem Festplatten an unterschiedlichen Controllern angeschlossen sind (also z. B. sowohl IDE- als auch SCSI-Platten angeschlossen sind), muß Grub mit Hilfe eines speziellen Verfahrens versuchen, die Bootreihenfolge festzustellen (Grub kann ja nicht in das BIOS gucken). Grub muß stattdessen errechnen, ob von der IDE- oder der SCSI Festplatte gebootet wird.
Das Ergebnis speichert Grub in einer Datei ab. Diese findet sich unter /boot/grub/device.map. Diese hat in unserem Beispiel (im BIOS sei in der Bootreihenfolge IDE vor SCSI eingestellt) folgenden Inhalt:
(fd0) /dev/fd0 (hd0) /dev/hda (hd1) /dev/hdb (hd2) /dev/sda (hd3) /dev/sdbWichtig: Falls (bei Bootproblemen) der Inhalt der Datei manuell editiert wird, muß anschließend
grub --batch --device-map=/boot/grub/device.map </etc/grub.confaufgerufen werden, um Grub neu zu installieren. Der Parameter --device-map spezifiziert, daß grub die vorhandene Mapdatei auslesen soll. Die weiteren Kommandos werden der Datei /etc/grub.conf entnommen, die im folgenden Abschnitt erklärt werden soll.
root (hd0,4) install /grub/stage1 d (hd0) /grub/stage2 0x8000 (hd0,4)/grub/menu.lst quitMit dem Eintrag root wird die Partition, auf der sich die Grub-Dateien befinden, "gemountet". Mit dem Befehl install wird Grub installiert. In diesem Beispiel wird die "stage 1" Datei in den MBR der ersten Festplatte installiert (d (hd0)). Die "stage 2" Datei soll in die Speicheradresse 0x8000 geladen werden (/grub/stage2 0x8000). Mit dem Eintrag (hd0,4)/grub/menu.lst wird die Lage der Menüdatei angegeben.
SDB-fhassel_grub_overview
)