2302001

ISO-Dateien direkt aus Grub heraus booten

15.09.2018 | 16:27 Uhr |

Der Bootloader Grub 2 kann eine ganze Menge mehr als einfach nur ein Menü darstellen und verschiedene Betriebssysteme starten. Grub 2 kann Livesysteme auch direkt aus ihren ISO-Dateien heraus booten.

Ein Livesystem, das unabhängig vom fest installierten Linux-Betriebssystem läuft, ist immer wieder nützlich zur Arbeit an Festplatten oder für Komplettbackups und deren Wiederherstellung. Aber wo war gleich wieder der USB-Stick mit dem benötigten System? Für Betriebssystembastler gibt es einen anderen Weg, häufig benötigte Livesysteme zu starten als über externe Bootmedien. Mit geringem Aufwand kann das Bootmenü des Bootloaders Grub 2 ein Livesystem starten, das als ISO-Datei auf Festplatte liegt. Das gelingt ohne komplizierte Installationsprozedur oder Auspacken der Systemdateien aus dem Image.

Allerdings wollen nicht alle Linux-Distributionen und Livesysteme aus dem ISO heraus starten. Als Voraussetzung, dass das klappt, müssen die Init-Scripts des Linux-Systems dies unterstützten. Die wichtigsten Live- und Notfallsysteme unterstützen den Start per ISO-Datei, so etwa auch die Linux-Welt-Rettungs-DVD , die hier als Beispiel dienen soll.

Siehe auch: Diese Live-Systeme retten Ihren PC im Notfall

Grub 2: Aufbau der Konfiguration

Menüeintrag für die LinuxWelt Rettungs-DVD: Grub 2 liefert mit der Datei „40_custom“ schon eine Vorlage mit, die eigene Ergänzungen für das Bootmenü aufnimmt.
Vergrößern Menüeintrag für die LinuxWelt Rettungs-DVD: Grub 2 liefert mit der Datei „40_custom“ schon eine Vorlage mit, die eigene Ergänzungen für das Bootmenü aufnimmt.

Der Schlüssel zum Booten des ISO ist ein Menüeintrag in Grub 2 mit den passenden Bootparametern. Es ist nicht immer ganz einfach, die richtigen Parameter von Linux-Distribution und Livesystemen zu ermitteln, denn diese sind oft komplett undokumentiert. Viele Systeme nutzen aber sehr ähnliche Init-Scripts und deshalb funktionieren dieselben Parameter.

Der Bootloader „Grand Unified Bootloader 2“ - kurz „ Grub 2 “ ist kein Buch mit sieben Siegeln, wartet aber mit umfangreichen Konfigurationsscripts auf. Grub 2 muss mit unterschiedlichen Linux-Systemen sowie Windows zurechtkommen.

Damit deren Einbindung automatisch erfolgt, kümmern sich einige Scripts im Verzeichnis „/etc/grub.d“ um die Erstellung der eigentlichen Konfiguration. Diese Scriptdateien sind durchnummeriert und werden in der vorgegebenen Reihenfolge bei einem Update der Grub-2-Konfiguration ausgeführt, beispielsweise bei jedem Upgrade auf einen neuen Kernel.

Das wichtigste Script „10_linux“ sucht unter „/boot“ nach Linux-Kerneln, den zugehörigen initialen Ramdisk-Images und erstellt daraus die Einträge für das Bootmenü.

Das Script „30_os-prober“ ist für die Suche nach Windows-Systemen zuständig, „30_uefi_firm-ware“ bindet Dateien von der EFI-Partition ins Menü ein. Dazu steuern Variablen in der Datei „/etc/default/grub“ das Verhalten von Grub 2. Üblicherweise müssen Anwender nur in Ausnahmefällen etwas an der Datei „/etc/default/grub“ ändern und an den Scripts noch seltener. In diesem Fall ist aber eine Ergänzung der Scripts gefragt, um eine ISO-Datei dauerhaft ins Bootmenü zu bringen.

Linux-Top-20: So finden Sie Ihr Lieblings-Linux

Loopback: Ein ISO-Image booten

Der fertige Eintrag im Grub-Bootmenü: Der neue Punkt „LinuxWelt Rettungs-DVD“ startet jetzt das Livesystem von der Festplatte direkt aus der ISO-Datei heraus.
Vergrößern Der fertige Eintrag im Grub-Bootmenü: Der neue Punkt „LinuxWelt Rettungs-DVD“ startet jetzt das Livesystem von der Festplatte direkt aus der ISO-Datei heraus.

Die Fähigkeit, Livesysteme und Distributionen aus der ISO-Datei heraus zu starten, hat Grub 2 schon seit seiner Beta-Phase. Der Bootloader bindet Images über Parameter über ein Loopback-Device ein und startet den enthaltenen Kernel mit der initialen Ramdisk. Ab dann übernimmt das Linux-System den weiteren Start aus dem ISO. Es dauerte eine Weile, bis Linux-Distributionen sich diese Möglichkeit zunutze machten.

Dieser Ansatz lässt sich auch mit dem Grub-2-Bootlaoder des fest installierten Linux-Systems nachbauen. Im folgenden praktischen Beispiel dient dazu die LinuxWelt-Rettungs-DVD . Als installiertes Linux-System dient ein Ubuntu 16.04, jedoch sollte der gezeigte Weg mit allen Distributionen gleichermaßen funktionieren.

1. Die ISO-Datei „lwRescue601.iso“ kommt mit diesem Befehl im Terminal kurzerhand ins Verzeichnis „/boot“ auf der Systempartition:

sudo cp lwRescue601.iso/boot  

2. Das Verzeichnis der ISO-Datei ist nun bekannt. Aber es wird noch die Kennung von Laufwerk und Partition gebraucht, auf der „/boot“ liegt. Diese zeigt der Befehl

df /boot  

unter „Dateisystem an“, beispielsweise „/dev/sda1“. Dies wäre die erste Partition auf dem ersten Laufwerk.

3. Netterweise gibt es unter den Grub- 2-Scripts bereits eine Vorlagendatei namens „40_custom“, die benutzerdefinierte Booteinträge aufnimmt. Diese Datei lädt man mit sudo oder root-Rechten in einen Texteditor:

sudo nano /etc/grub.d/40_custom

4. In die Datei „40_custom“ kommt nun unter die wenigen bereits bestehenden Zeilen ein neuer Menüeintrag, den der Inhalt des Kastens „Menüeintrag: LinuxWelt-Rettungs-DVD booten“ zeigt. Anzupassen wäre hier lediglich die Zeile „set root=(hd0,msdos1)“, die der im Schritt 2 ermittelten Laufwerks- und Partitionskennung entspricht. Der Parameter „hd0“ steht für die erste Festplatte und „msdos1“ für die erste Partition.

5. Nach einer Kontrolle des neuen Menüeintrags und dem Speichern der Datei „40_custom“ geht es noch in die Datei „/etc/default/grub“. Hier gilt es, beim Systemstart das Bootmenü anzuzeigen, das in Ubuntu standardmäßig ausgeblendet ist. Dazu setzt man vor die Zeilen

GRUB_HIDDEN_TIMEOUT=3  GRUB_HIDDEN_TIMEOUT_QUIET=true  

jeweils das Zeichen #, um diese auszukommentieren.

Außerdem ändert man die Zeile „GRUB_TIMEOUT“ ab, falls nötig: GRUB_TIMEOUT=10 Dies zeigt ab jetzt beim Systemstart für zehn Sekunden das Bootmenü an.

6. Der letzte Schritt ist die Aktualisierung des Bootmenüs:

sudo update-grub  

Fehler finden und beheben: Beschwert sich Grub 2 bei der Wahl des neuen Booteintrages darüber, dass die Datei „/boot/lwRescue601.iso“ nicht gefunden wurde, so ist eine Kontrolle des Speicherpfades und der Laufwerkssowie Partitionskennung (siehe Schritt 4) nötig.

Denn bei diesen Angaben schleichen sich gerne Fehler ein. Schlägt der Befehl sudo update-grub wegen eines Syntaxfehlers fehl, so fehlt meist am Ende des gesamten Menüeintrags in der Datei „40_custom“ eine abschließende geschweiften Klammer. Nach jeder Änderung in der Konfigurationsdatei muss stets der Update-Befehl

sudo update-grub  

von Grub 2 ausgeführt werden.

Grub-Menüeintrag für die LinuxWelt-Rettungs-DVD

menuentry „LinuxWelt Rettungs-DVD (64 Bit)“ {

insmod part_msdos

insmod ext2 gfxpayload=$linux_gfx_mode

set root=(hd0,msdos1)

loopback loop/boot/iso/lwRescue601.iso

linux (loop)/isolinux/rescue64 iso loop=/boot/lwRescue601.iso scande lay=1 dostartx setkmap=de

initrd (loop)/isolinux/initram.igz

}

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
2302001