Bootloader Grub

Ein Bootloader ist ein Programm, dass nach ladbaren Komponenten zum Start eines Systems sucht. Dies geschieht, bevor das Betriebssystem geladen wird.  Sehr bekannt und beliebt (auch meinerseits) ist der GRUB-Bootloader. Er kann über eine CD gestartet werden oder in den MBR (Master Boot Record) installiert werden. Ich empfehle vor der Installation in den MBR ein Booten von CD zu testen.

Namenskonvention

Die Gerätesyntax, die in GRUB verwendet wird, unterscheidet sich geringfügig von dem, was Sie zuvor in Ihrem Betriebssystem gesehen haben, und Sie müssen es wissen, damit Sie ein Laufwerk / eine Partition angeben können.

Sehen Sie sich die folgenden Beispiele und Erklärungen an:

(fd0)

GRUB verlangt zunächst, dass der Gerätename mit ‚(‚ und ‚)‘ eingeschlossen wird. Der ‚fd‘ Teil bedeutet, dass es eine Diskette ist. Die Zahl ‚0‘ ist die Laufwerksnummer, die von Null gezählt wird. Dieser Ausdruck bedeutet, dass GRUB die gesamte Diskette verwendet.

(hd0, msdos2)

Hier bedeutet „hd“, dass es sich um eine Festplatte handelt. Die erste ganze Zahl ‚0‘ gibt die Laufwerksnummer an, d. H. Die erste Festplatte, die Zeichenfolge ‚msdos‘ gibt das Partitionsschema an, während die zweite Ganzzahl ‚2‘ die Partitionsnummer (oder die PC-Segmentnummer in der BSD-Terminologie). Die Partitionsnummern werden von eins gezählt, nicht von Null (wie in früheren Versionen von GRUB). Dieser Ausdruck bedeutet die zweite Partition des ersten Festplattenlaufwerks. In diesem Fall verwendet GRUB eine Partition der Festplatte anstelle der gesamten Festplatte.

(hd0, msdos5)

Dies gibt die erste erweiterte Partition des ersten Festplattenlaufwerks an. Beachten Sie, dass die Partitionsnummern für erweiterte Partitionen unabhängig von der tatsächlichen Anzahl der primären Partitionen auf Ihrer Festplatte von „5“ gezählt werden.

(hd1, msdos1, bsd1)

Dies bedeutet die BSD ‚a‘ Partition auf der ersten PC Slice Nummer der zweiten Festplatte.

Um tatsächlich auf die Festplatten oder Partitionen mit GRUB zuzugreifen, müssen Sie die Gerätespezifikation in einem Befehl wie ’set root = (fd0)‘ oder ‚parttool (hd0, msdos3) hidden-‚ verwenden. Um herauszufinden, welche Zahl eine gewünschte Partition angibt, verfügen die GRUB-Befehlszeilenoptionen (siehe Befehlszeilenschnittstelle) über die Argumentvervollständigung. Dies bedeutet, dass Sie beispielsweise nur eingeben müssen

set root = (

gefolgt von einem TAB, und GRUB wird die Liste der Laufwerke, Partitionen oder Dateinamen anzeigen. Daher sollte es ziemlich einfach sein, den Namen Ihrer Zielpartition zu bestimmen, selbst wenn Sie nur wenig über die Syntax wissen.

Beachten Sie, dass GRUB IDE nicht von SCSI unterscheidet – es zählt einfach die Laufwerksnummern unabhängig von ihrem Typ von Null. Normalerweise ist jede IDE-Laufwerksnummer kleiner als eine SCSI-Laufwerksnummer, obwohl dies nicht zutrifft, wenn Sie die Boot-Sequenz durch Austauschen von IDE- und SCSI-Laufwerken in Ihrem BIOS ändern.

Jetzt ist die Frage, wie man eine Datei spezifiziert? Betrachten Sie wieder ein Beispiel:

(hd0, msdos1) / vmlinuz

Dies gibt die Datei mit dem Namen ‚vmlinuz‘ an, die sich auf der ersten Partition des ersten Festplattenlaufwerks befindet. Beachten Sie, dass die Argumentvervollständigung auch mit Dateinamen funktioniert.

Installieren von GRUB mit grub-install

Um GRUB unter einem UNIX-ähnlichen Betriebssystem (z. B. GNU) zu installieren, rufen Sie das Programm grub-install (siehe Aufruf von grub-install) als Superuser (root) auf.

Die Verwendung ist grundsätzlich sehr einfach. Sie müssen nur ein Argument für das Programm angeben, nämlich wo der Bootloader installiert werden soll. Das Argument muss eine Gerätedatei sein (wie ‚/ dev / hda‘). Zum Beispiel wird unter Linux der  GRUB in den MBR des ersten IDE-Laufwerks installiert:

# grub-install  / dev / sda

Wenn Sie möchten, dass GRUB Images in ein anderes Verzeichnis als / boot kopiert, müssen Sie die Option –boot-directory angeben. Die typische Verwendung besteht darin, dass Sie eine GRUB-Bootdiskette mit einem Dateisystem erstellen. Hier ist ein Beispiel:

# mke2fs / dev / fd0
# mount -t ext2 / dev / fd0 / mnt
# mkdir / mnt / boot
# grub-install --boot-verzeichnis = / mnt / boot / dev / fd0
# umount / mnt

Beachten Sie, dass grub-install eigentlich nur ein Shell-Skript ist und die eigentliche Aufgabe von anderen Tools wie grub-mkimage erledigt wird. Daher können Sie diese Befehle direkt ausführen, um GRUB zu installieren, ohne grub-install zu verwenden. Tun Sie das jedoch nicht, es sei denn, Sie sind mit den Interna von GRUB sehr vertraut. Die Installation eines Bootloaders auf einem laufenden Betriebssystem kann äußerst gefährlich sein.

 

Starten mit Hilfe der Kommandozeile

GRUB 2 bietet die Kommandozeile dem Benutzer alle für den Systemstart wichtigen Befehle. Die Befehle, die man in der Kommandozeile einzeln, nacheinander eingeben muss sind die selben, wie sie auch in der Konfigurationsdatei verwendet werden. Nach dem Booten der SuperGrub – CD finden Sie in der Auswahl die Option: Boot manually. Damit kann die Kommandozeile von Grub aufgerufen werden.

Da die Eingaben in der Kommandozeile aber nicht dauerhaft gelten, sondern nur einmalig für den entsprechenden Systemstart(versuch), kann man sich auf die nötigsten Angaben beschränken. Anders als bei einer Konfigurationsdatei die einmalig erstellt wird, müssen die Befehle nicht so gestaltet werden, dass sie spätere Veränderungen am System von vornherein berücksichtigen.

Der Systemstart aus der Kommandozeile erfolgt nach foglendem Schema:

  • Zunächst muss GRUB mitgeteilt werden, auf welchen Datenträger sich die Startdateien des zu startenden Betriebssystems befinden. Diese Angabe wird der Variablen root zugewiesen.
  • Danach gibt man den genauen Pfad zu den Startdateien des Betriebssystems an. Sofern GRUB diese nicht direkt laden kann – wie es z.B. für Windows der Fall ist – fordert man GRUB einfach auf, den ersten Sektor des zuvor festgelegten Startdatenträgers zu laden. Dieser Sektor enthält dann das Boot-Programm, des fremden Betriebssystems.
  • Abschließend weißt man GRUB durch den Befehl boot an, das System mit den zuvor festgelegten Angaben zu starten.

Tipp: In Grub funktioniert auch „Tab“ zur Dateinamenexpansion, d.h. man kann sich bis zu der richtigen Datei „durchhangeln“, ohne den exakten Namen zu wissen.

In der Grub Kommandozentrale ist die englische Tastatur aktiv. Hier gibt es eine Übersicht der Unterschiede:

Beispiel: Linux über die GRUB Konsole starten

(bitte beachten: das Beispiel ist für den genkernel)
Es müssen der Reihe nach die folgenden Befehle eingegeben werden Die Variablen sind die Platte (hd) und Partition. Diese müssen dem eigenen System entsprechend ersetzt werden.

  1. Start-Datenträger festlegen:
    set root=(hd0,1)
  2. Falls der Home-Ordner auf eine eigene Partition ausgelagert ist muss dieses eingebunden werden:
    set home=(hd0,1)
  3. Pfad zu den Startdateien angeben:
    linux /boot/kernel/genkernel-xx  root=/dev/sdXY

    sdXY muss dabei natürlich auch auf das eigene System angepasst werden.

  4. Pfad zur Ramdisk:
    initrd /boot/initramfs
  5. System starten:
    boot

 

Beispiel: Windows starten

Um ein MS-Windows zu booten muss zusätzlich das Packet sys-fs/ntfs3g installiert sein. 

Die folgenden Kommandos müssen der Reihe nach eingegeben werden:

Startdatenträger festlegen (sdX,Y muss dem eigenen System entsprechend ersetzt werden.):

set root=(sdX,Y)

Den ersten Sektor des Startdatenträgers laden lassen:

chainloader +1

System starten:

boot 
  •  

Das Programm grub-mkconfig  erzeugt  grub.cfg Dateien, die für die meisten Fälle geeignet sind. Es eignet sich für die Verwendung beim Aktualisieren einer Distribution und ermittelt verfügbare Kernel und versucht, Menüeinträge für sie zu generieren.

grub-mkconfig  -o /boot/grub/grub.cfg

Ein Beispiel:

sdb1 /boot/grub # grub-mkconfig -o /boot/grub/grub,cfg
GRUB-Konfigurationsdatei wird erstellt …
Linux-Abbild gefunden: /boot/kernel-genkernel-x86_64-4.14.61-gentoo
initrd-Abbild gefunden: /boot/initramfs-genkernel-x86_64-4.14.61-gentoo
Linux-Abbild gefunden: /boot/kernel-genkernel-x86_64-4.14.8-gentoo-r1
initrd-Abbild gefunden: /boot/initramfs-genkernel-x86_64-4.14.8-gentoo-r1
Linux-Abbild gefunden: /boot/kernel-genkernel-x86_64-4.12.12-gentoo
initrd-Abbild gefunden: /boot/initramfs-genkernel-x86_64-4.12.12-gentoo
Linux-Abbild gefunden: /boot/kernel-genkernel-x86_64-4.9.95-gentoo
initrd-Abbild gefunden: /boot/initramfs-genkernel-x86_64-4.9.95-gentoo
Linux-Abbild gefunden: /boot/kernel-genkernel-x86_64-4.9.76-gentoo-r1
initrd-Abbild gefunden: /boot/initramfs-genkernel-x86_64-4.9.76-gentoo-r1
Linux-Abbild gefunden: /boot/kernel-genkernel-x86_64-4.9.72-gentoo
initrd-Abbild gefunden: /boot/initramfs-genkernel-x86_64-4.9.72-gentoo
/run/lvm/lvmetad.socket: connect failed: Datei oder Verzeichnis nicht gefunden
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
Gentoo/Linux auf /dev/sdb2 gefunden
Gentoo/Linux auf /dev/sdb6 gefunden
erledigt

Über den OS-Prober kann geschaut werden, welche Betriebssysteme erkannt werden. Dieses Paket muss nachinstalliert werden. Es ist standardmaäßig nicht installiert

Es erscheint nur ein Eingabepromt mit blinkendem Cursor?
In diesem Fall ist die Konfigurationsdatei grub.cfg nicht gefunden oder nicht korrekt konfiguriert. Zum Beispiel:Die Grub-Datei kann manuell über grub-mkconfig neu erstellt werden. Die Installation von Grub erfolgt über grub-install /dev/sdx . Der MbR ist die erste Platte ohne Nummer. Wird die Platte mit sda erkannt ist die erste Partition /dev/sda1 . Der MbR ist /dev/sda

Wenn Sie versuchen, Windows von GRUB Legacy oder LILO zu starten, wird nur ein schwarzer Bildschirm angezeigt. Was soll ich machen?

Dies ist ein bekanntes Problem und gilt nur für ältere Bootloader wie GRUB Legacy und LILO. Windows verweigert das Starten, wenn es nicht auf der ersten Festplatte installiert ist, und zeigt einen schwarzen / leeren Bildschirm an. Um dies zu umgehen, ist es notwendig, Windows zu glauben, dass es auf der ersten Festplatte mit ein paar Verbesserungen in der Bootloader-Konfiguration installiert ist. Dies geschieht durch die Option chainloader. Bitte beachten Sie, dass Gentoo im folgenden Beispiel auf / dev / sda (erster Datenträger) und Windows on / dev / sdb (zweiter Datenträger) installiert ist. Passen Sie die Konfiguration nach Bedarf an. Beispiel für einen Eintrag für Windows in grub.conf 

/boot/grub/grub.conf 

title Windows XP
     map (hd1) (hd0)
     map (hd0) (hd1)
     rootnoverify (hd1,0)
     chainloader +1

Fehlermeldung not an assigment: Hier kann die Angabe der Partition / Platte  falsch sein.

 

SuperGrub bietet die Möglichkeit über eine CD verfügbare Systeme / Kernel zu suchen und ggf. zu booten. Mit Hilfe des SuperGrub kann somit eine Fehleranalyse im Boot-Bereich durchgeführt werden.

  1. Werden die Platte(n) angezeigt?
  2. Wird das System angezeigt?
  3. Wird der Kernel angezeigt?
  4. Ist ein Booten erfolgreich?

Zum Download: http://www.supergrubdisk.org

Anzeige der Betriebssysteme mit SuperGrub
Grub mit verschiedenen installierten Systemen

Super-Grub mit verschiedenen installierten Systemen