it-swarm.com.de

grub: boote von ISO

Wie kann ich in GRUB eine ISO-Datei booten? Die ISO-Datei befindet sich auf einer reiserfs-Partition und GRUB kann darauf zugreifen (das wurde bereits getestet).

41
Albert

Das größte Problem beim Booten einer ISO-Datei ist, dass ISOs, die zum Booten vorgesehen sind, fast immer zum Booten von einer CD vorgesehen sind. Wie erklärt in Marcos Blog in Bezug auf Grub 2 (Hervorhebung meiner):

GRUB kann ISO9660-Images (ISO) lesen. Es kann zum Beispiel die ersten Sektoren laden und booten. Aber die meisten Menschen wissen nicht, was dann ist. Was würde das geladene Betriebssystem tun? Es wird höchstwahrscheinlich nach einer CD-ROM suchen, die es nicht findet, und fehlschlagen.

Der einfachste Weg , von einer zufälligen ISO-Datei zu booten, besteht darin, sie als virtuelle CD in eine virtuelle Maschine (VirtualBox, VMware oder Virtual PC) zu laden und zu booten es dort. Das sollte fast immer funktionieren, da es sich bei der VM nicht um eine ISO-Datei handelt, sondern um eine echte CD auf echter CD-Hardware.

Das Booten von einer ISO-Datei auf Bare Metal ist viel schwieriger. Wie Sie dies tun, hängt davon ab, welche Version von Grub Sie verwenden. Die Ergebnisse hängen davon ab, welche ISO-Datei Sie verwenden und wie sie zum Booten konfiguriert wurde. Aus diesem Grund extrahieren die meisten Boot-ISO-from-USB-Tools (Unetbootin, WinToFlash usw.) in der Regel die ISO-Inhalte auf das Laufwerk, da auf diese Weise direkt und ohne Verwirrung zugegriffen werden kann das Betriebssystem wird gebootet.


Grub 1

... nicht sicher. Wenn möglich, sehen Menüeinträge wahrscheinlich Grub4DOS sehr ähnlich, obwohl ich denke, dass der Befehl "map --hook" eine Erweiterung von Grub4DOS ist. Andererseits bietet Grub eine umfassendere Unterstützung für Dateisysteme als Grub4DOS.

Ein Hinweis auf Grub mit reiserfs (nicht bestätigt) zeigt an, dass Sie "Ihre Partition mit notail mounten müssen, damit sie funktioniert".

Memdisk ist eine Option; siehe unten.


Grub4DOS

Grub4DOS bietet experimentelle "CD-Emulation" die mit einigen ISOs funktioniert. Leider liest Grub4DOS nur FAT32/NTFS-Dateisysteme. Grub4DOS herunterladen.

Hier ist ein Beispieleintrag ( source ):

title fdfullcd.iso (0xFF)
  find --set-root /fdfullcd.iso
  map /fdfullcd.iso (0xFF)
  map --hook
  root (0xFF)
  kernel /isolinux/data/memdisk
  initrd /isolinux/data/fdboot.img

Angeblich kann die Win7 ISO gebootet werden mit diesem Eintrag :

title Windows 7
  map (hd0,0)/win7.iso (hd32)
  map --hook
  chainloader (hd32)

Andere ISOs können gebootet werden mit Memdisk :

title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
  kernel /memdisk iso
  initrd /hdt.iso

Sie können auch einen Menükonfigurator wie MultiBootISOs.exe von PenDriveLinux verwenden. Legen Sie ISOs auf das Flash-Laufwerk und führen Sie das Dienstprogramm aus, um den Bootloader zu installieren und das Boot-Menü zu konfigurieren.

Hier ist eine Hak5-Episode zur Installation von Grub4DOS.


Grub 2

Hier sind einige Beispiele für Grub2-Einträge. chainloader funktioniert derzeit nicht, um ein ISO zu booten, daher müssen diese Einträge (1) ein Loopback verwenden, um das ISO zu "mounten", und ( 2) Fügen Sie etwas wie iso-scan oder findiso in die linux -Zeile ein, die die ISO-Datei angibt.

Leider gibt es keine generische Möglichkeit, dies zu tun. Jeder unterschiedliche Starteintrag muss an den Inhalt des Ziel-ISO angepasst werden. Die meisten Linux LiveCDs verwenden ISOLINUX als Bootloader. Suchen Sie die Datei isolinux.cfg und überprüfen Sie diesen Starteintrag, um festzustellen, was normalerweise gestartet wird.

Beispieleinträge ( Quelle ):

menuentry "Ubuntu Live 9.10 32bit" {
 loopback loop /boot/iso/ubuntu-9.10-desktop-i386.iso
 linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-9.10-desktop-i386.iso noeject noprompt --
 initrd (loop)/casper/initrd.lz
}

menuentry "Grml small 2009.10" {
  loopback loop /boot/iso/grml-small_2009.10.iso
  linux (loop)/boot/grmlsmall/linux26 findiso=/boot/iso/grml-small_2009.10.iso apm=power-off lang=us vga=791 boot=live nomce noeject noprompt --
  initrd (loop)/boot/grmlsmall/initrd.gz
}

Wenn Sie versuchen, eine Nicht-Linux-LiveCD zu starten, haben Sie möglicherweise Pech. Auch hier kann Memdisk helfen :

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}
54
quack quixote

Sie können dd vom Terminal aus verwenden, um eine ISO-Datei auf eine Partition zu schreiben. Seien Sie vorsichtig, wenn Sie dd wrong verwenden, können Sie alles abwischen. Es sollte ungefähr so ​​aussehen: dd if = Desktop/LinuxCDFile.iso von =/Path/To/Partition

1
Naos parth