2010-06-18 14:25:36 +0000 2010-06-18 14:25:36 +0000
41
41

grub: Booten von ISO

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

Antworten (2)

55
55
55
2010-06-18 18:30:23 +0000

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

GRUB kann ISO9660 (“iso”) Images lesen. Es kann zum Beispiel die ersten paar Sektoren laden und booten. Aber was die meisten Leute nicht wissen, ist “was dann?”. Was würde das geladene Betriebssystem tun? Es wird höchstwahrscheinlich nach einer CDROM suchen, die es nicht finden wird, und scheitern.

Der einfachste Weg, um von einer zufälligen ISO-Datei zu booten, ist also, sie in eine virtuelle Maschine (VirtualBox, VMware oder Virtual PC) als virtuelle CD zu laden und sie dort zu booten. Das sollte fast immer funktionieren, denn für die VM ist es keine ISO-Datei - es ist eine echte CD auf echter CD-Hardware.

Das Booten von einer ISO-Datei auf Bare Metal ist viel schwieriger. Wie Sie das machen, hängt davon ab, welche Version von Grub Sie verwenden, und die Ergebnisse können sich unterscheiden, je nachdem, welches ISO Sie verwenden und wie es zum Booten konfiguriert wurde. Aus diesem Grund extrahieren die meisten Boot-ISO-from-USB-Tools (Unetbootin, WinToFlash, etc.) den ISO-Inhalt normalerweise auf das Laufwerk – denn auf diese Weise kann direkt darauf zugegriffen werden, ohne das zu bootende Betriebssystem zu verwirren.


Grub 1

… nicht sicher. Wenn möglich, werden die Menüeinträge wahrscheinlich ähnlich aussehen wie bei Grub4DOS, obwohl ich denke, dass der Befehl “map –hook” eine Erweiterung von Grub4DOS ist. Auf der Plusseite hat Grub eine breitere Dateisystemunterstützung als Grub4DOS.

Ein Hinweis auf Grub mit reiserfs (unbestätigt) weist darauf hin, dass Sie “Ihre Partition mit notail mounten müssen, damit es funktioniert”.

Memdisk ist eine Option; siehe unten.


Grub4DOS

Grub4DOS bietet eine experimentelle “CD-Emulation” , die mit einigen ISOs funktioniert. Leider liest Grub4DOS nur FAT32/NTFS-Dateisysteme. Download Grub4DOS.

Hier ist ein Beispieleintrag Quelle ):

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 das Win7-ISO mit diesem Eintrag gebootet werden:

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

Andere ISOs können mit Memdisk gebootet werden:

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 die ISOs auf das Flash-Laufwerk, und führen Sie das Dienstprogramm aus, um den Bootloader zu installieren und das Bootmenü zu konfigurieren.

Hier ist eine Hak5-Folge über die Installation von Grub4DOS.


Grub 2

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

Leider gibt es keine generische Möglichkeit, dies zu tun. Jeder unterschiedliche Booteintrag muss an den Inhalt des Ziel-ISOs angepasst werden. Die meisten Linux-LiveCDs verwenden ISOLINUX als Bootloader; suchen Sie die isolinux.cfg und untersuchen Sie diesen Booteintrag, um zu sehen, was er normalerweise bootet.

Beispieleinträge source ):

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 booten, haben Sie möglicherweise kein Glück. Auch hier kann Memdisk helfen :

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}
1
1
1
2014-09-03 13:55:11 +0000

Sie können dd vom Terminal aus verwenden, um eine iso-Datei auf eine Partition zu schreiben. Seien Sie nur vorsichtig, wenn Sie dd falsch verwenden, können Sie alles zerstören. Es sollte etwa so aussehen: dd if=Desktop/LinuxCDFile.iso of=/Pfad/Zu/Partition