GRUB/GRUB-Shell

Hinweis:

Dieser Artikel beschreibt die Vorgehensweise unter GRUB (GRUB Legacy). Ab Ubuntu 9.10 wird der Nachfolger GRUB 2 (siehe dort) verwendet.

Inhaltsverzeichnis
  1. Konsole-Modi
  2. Hilfreiche Befehle
  3. Systemstart
  4. Editieren der Steuerdatei
  5. Befehlsübersicht
  6. Links

Die GRUB-Konsole – richtiger: GRUB-CLI (Command Line Interface) – ist ein wichtiges Modul, um den Rechner starten zu können. Das GRUB-Auswahlmenü wird z.B. in dieser Konsole dargestellt und die entsprechenden Steuerbefehle werden aus der menu.lst eingelesen und ausgewertet. Man kann mittels dieser Konsole hinterlegte Befehle temporär bearbeiten (editieren) und damit ein nicht startbares System zum Hochfahren bewegen.

Hinweis:

Der Bootloader GRUB agiert normalerweise losgelöst vom eigentlichen Betriebssystem. Daraus erklären sich die eigenen, GRUB-internen Bezeichnungen der gefundenen Datenträger und Partitionen: GRUB bezeichnet den ersten gefundenen Datenträger mit dem Namen (hd0) während der Linux-Kernel eigene Suchalgorithmen benutzt und Datenträger nach dem Schema /dev/sdX bezeichnet.

Konsole-Modi

minibash.png Es gibt verschiedene Möglichkeiten, um auf eine GRUB-Konsole zu gelangen:

Hilfreiche Befehle

Sofern weitere Steuerkommandos, Optionen oder Tasten zur Verfügung stehen, z.B. + , werden diese im unteren Bildschirmbereich angezeigt.

Systemstart

In den Beispielen werden die Bezeichnungen /dev/sdXY und (hdX,Y) benutzt. Diese müssen auf die eigenen Gegebenheiten abgestellt werden. GRUB Legacy beginnt bei (hdX,Y) immer bei 0 zu zählen (auch bei Partitionen).

  1. Start mit Symlinks:

    set root=(hdX,Y) 
    linux vmlinuz root=/dev/sdXY ro quiet splash
    initrd initrd.img
    boot  

    vmlinuz und initrd.img sind Symlinks im Verzeichnis /, die auf den aktuellen Kernel bzw. die Ramdisk verweisen. Diese eigentlichen Dateien sind unter /boot/ z.B. als vmlinuz-x.x.xx-xx-generic bzw. initrd.img-x.x.xx-xx-generic abgelegt.

  2. Start mit Kernelangabe:

    set root=(hdX,Y) 
    linux /boot/vmlinuz-2.6.31-14-generic root=/dev/sdXY ro quiet splash
    initrd /boot/initrd.img-2.6.31-14-generic
    boot  

    Hierbei wurde gezielt der Kernel 2.6.31-14-generic aus /boot auf /dev/sdXY ausgewählt.

  3. Start mit Chainloader:

    set root=(hdX,Y) 
    chainloader +1
    boot  

    Aufruf eines weiteren Bootloaders, chainloader +1 verweist dabei auf den 1. Sektor von (hdX,Y), wo der andere Bootloader liegen sollte.

  4. Start mit anderer Steuerdatei:

    set root=(hd0,1) 
    configfile /boot/grub/menu.lst 

    Einlesen und Auswerten einer eigenen Steuerdatei (.lst) oder einer Sicherung. Der Befehl boot entfällt, da Bestandteil der Konfigurationsdatei.

Editieren der Steuerdatei

tasten.png

Hinweis:

Da beim Start des Bootloaders noch kein deutsches Tastaturlayout vorhanden ist, ergeben sich Abweichungen, die in nebenstehender Abbildung rot hervorgehoben wurden.

Mit E im GRUB-Auswahlmenü gelangt man in den Edit-Modus. Hier kann die aktuell geladene Steuerdatei temporär bearbeitet werden. Dies kann sehr hilfreich sein, wenn man z.B. Bootoptionen oder sonstige Kernelmodifikationen ausprobieren möchte. Bei GRUB Legacy wird zur Kernelmanipulation die Zeile kernel bearbeitet, um die Veränderungen vorzunehmen.

Als Beispiel wird hier eine menu.lst von GRUB Legacy bearbeitet, die Fehler aufweist.

  1. Um bei diesem Fehler fortfahren zu können, muss man eine beliebige Taste drücken, um das GRUB-Auswahlmenü zu erhalten.

     Ubuntu, kernel 2.6.28-14-generic                                    
     Ubuntu, linux 2.6.28-14-generic (recovery mode)
     Ubuntu, memtest86+
     Chainload into GRUB 2

  2. Mit + den Eintrag auswählen (Zeile wird markiert) und mit E zum Bearbeiten aktivieren. Am unteren Bildschirmrand wird man auf weitere Optionen und Tastenkombinationen hingewiesen, die zur Bearbeitung hilfreich sind.

  3. Fehlerhaften Eintrag suchen +

    linux 2.6.28-14-generic (recovery mode)

    , erneut mit E zum Bearbeiten auswählen.

  4. Überschreiben des fehlerhaften linux mit der korrekten Bezeichnung kernel

    kernel  

    und den Vorgang mit bestätigen.

  5. Mit B den geänderten Eintrag starten.

Nach diesem Schema lassen sich alle Zeilen in einer Steuerdatei temporär bearbeiten.

Da diese Änderungen nur für den Startvorgang modifiziert wurden, müssen sie anschließend – sofern gewünscht – in der entsprechenden Steuerdatei /boot/grub/menu.lst mit einem Editor und Root-Rechten permanent gemacht werden. Einzelheiten sind den entsprechenden Artikeln zu entnehmen.

Befehlsübersicht

Befehlsübersicht
Befehl Beschreibung
blocklist Ausgabe der Blocklist-Notation einer Datei: blocklist file, siehe auch hier {en}
boot Bootet das System oder den Chainloader, der vorher geladen wurde
cat Datei-Inhalt anzeigen: cat <file>. Hilfreich, um die Root-partition zu finden: cat /boot/grub/grub.cfg
chainloader Laden eines anderen Bootloaders: chainloader [--force] <file>, z.B. chainloader (hd0,1)+1 (--force wird genutzt, um das Ende des Bootsektors 0xaa55 zu überlesen).
cmp Vergleicht zwei Dateien: cmp <file> <file1>. Bei unterschiedlicher Größe, Ausgabe i.d.F.: 0x1234 [foo], 0x4321 [bar]
color Farben: "black, blue, green, cyan, red, magenta, brown,light-gray, dark-gray, light-blue, light-green, light-cyan, light-red, light-magenta, yellow, white"
configfile Laden einer anderen Steuerdatei, z.B configfile (hd0,2)/boot/grub/menu.lst
default Setzen des Default-Starteintrags: default <num>
device Erklärt das angegebene Laufwerk als aktuelles BIOS-Laufwerk: device (fd0) /floppy-image / device (hd0) /dev/sd0
fallback Wenn der Standardeintrag einen Fehler hat, gehe zu: fallback <num>, siehe auch default
find Suche nach Dateien: find <file>
geometry Information über das Laufwerk: geometry drive [cylinder head sector [total_sector]]
halt Rechner anhalten: halt [--no-apm]. Ohne Option wird das BIOS-APM aufgerufen.
help Hilfefunktion der "buildin-commands" : help --all [pattern ...]
hexdump Hexdump: hexdump [ -s offset ] [-n length] { <FILE> | (mem) }, z.B. MBR anzeigen: hexdump (hd0)0+1
hiddenmenu Kein Auswahlmenü anzeigen.
hide Partition verstecken: hide partition, hilfreich bei DOS und Windows mit mehreren Primär-Partitionen. Siehe auch hier {en}
initrd Laden der initialen "Ramdisk" und setzen der entsprechenden Parameter: initrd <file> ...
kernel Laden des entsprechenden Kernels mit seinen Parametern: kernel [--type=type] [--no-mem-option] <file> ...
lock Recovery-Kernel sperren, siehe auch passwort und GRUB.
makeactive Setze die aktive Partition als GRUB's root device. Der Befehl ist auf primäre Partitionen begrenzt.
map Mapping für DOS/Windows: map to_drive from_drive
md5crypt Teil der Passwortverschlüsselung
pager Zeilenweise Ausgabe der Auflistung: pager [flag] Flag= off / on oder 0 / 1
parttype Wechsel des Partitionstyps: parttype part type; "type"= neuer Partitionstyp und muss im Bereich "0-0xff" liegen
passwort Passwort
reboot System neu starten
root Setzen des Root-Device
terminal Gibt aus, was für ein Terminal genutzt wird, z.B.: Available terminal(s): gfxterm console Current terminal: gfxterm
title Auswahl-Titel im Auswahlmenü
unhide Sichtbarmachen einer versteckten Partition: unhide partition , siehe auch hide
vbeprobe Liste des kompatiblen VESA-BIOS-extension-video-mode