grub: boote von ISO


41

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).


welche version von grub?
Quack Quixote

1
Dieselbe Frage wurde hier beantwortet .
dma_k


Antworten:


55

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 in Marcos Blog zu Grub 2 (Schwerpunkt Mine) erklärt:

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

So die Tote-simple-est Art und Weise aus einer zufälligen ISO - Datei zu booten ist es in eine virtuelle Maschine (VirtualBox, VMware oder Virtual PC) als virtuelle CD zu laden und dort zu starten. 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.) normalerweise die ISO-Inhalte auf das Laufwerk, da auf diese Weise direkt auf sie zugegriffen werden kann, ohne das zu bootende Betriebssystem zu verwirren.


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. Auf der positiven Seite hat Grub eine breitere Dateisystemunterstützung als Grub4DOS.

Ein Hinweis auf Grub mit reiserfs (nicht bestätigt) zeigt an, dass Sie "Ihre Partition mit mounten müssen, notaildamit 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. Laden Sie Grub4DOS herunter.

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 die 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 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 zum Booten einer ISO, daher müssen diese Einträge (1) Loopback verwenden , um die ISO zu "mounten", und (2) der Linux- Zeile, die die ISO-Datei angibt , so etwas wie iso-scan oder findiso hinzufügen .

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-Live-CD 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
}

@albert: Ich benutze Grub2 auf einem Flash-Laufwerk und war von den gleichen Dingen frustriert. Es war also nicht schwer, alles zusammenzusetzen. Ich beschäftige mich mit Ihrer anderen Frage, aber ich habe noch nie versucht, eine ISO auf eine Partition zu "brennen", also ist es vielleicht ... interessant.
Quack Quijote

Ofc Ich kann es in VMware booten (und das habe ich auch schon getan), aber das hilft mir nicht viel, weil es Windows ist und wenn ich es über VMware auf meiner Festplatte installiere, wird es später nicht mehr booten (dummes Windows ...).
Albert,

Können Sie mir einen Vorschlag machen, welche Option ich zuerst ausprobieren sollte, dh Grub1, Grub2 oder Grub4DOS? Ich kann einfach installieren, was auch immer benötigt wird, das wird nicht wirklich das Problem sein.
Albert

@albert: fragst du in bezug auf deine frühere frage ? Ich glaube, Ihre beste Wette ist es, die Extraktionsmethode zu verwenden. Das Windows-Installationsprogramm ist eine der ISOs, bei denen Probleme auftreten, wenn sie nicht von der Hardware gestartet werden. Sie können memtest versuchen, aber ich weiß nicht viel darüber. Sie möchten sich wahrscheinlich ein Flash-Laufwerk besorgen und dieses verwenden. siehe superuser.com/questions/66948/... oder superuser.com/questions/62193/install-win7-from-usb
Quack quixote

1
@quackquixote, In Bezug auf Ihre fett gedruckten Worte: "Was würde das geladene Betriebssystem tun? Es wird höchstwahrscheinlich nach einer CD-ROM suchen, die es nicht findet, und scheitern." Warum muss das Betriebssystem nach einer CD-ROM suchen? Es ist bereits eine perfekte ISO-Datei, und alles, was zum Laden des Betriebssystems benötigt wird, befindet sich bereits in der ISO-Datei. Warum kann es also nicht überspringen, nach CD-ROMs zu suchen?
Pacerier

1

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


Die Partition muss jedoch primär sein, damit sie von Windows Loader gestartet werden kann.
Firelord

Dies funktioniert nur gelegentlich, im Allgemeinen ist das Ergebnis nicht bootfähig.
David Tonhofer

1
@Firelord: Nun, benutze keinen Windows Loader. Verwenden Sie Grub. Ja, es bootet auch Windows, wenn Sie es wirklich brauchen.
Evi1M4chine
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.