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

grub: opstarten vanaf ISO

Hoe kan ik een ISO bestand booten in GRUB? Het ISO-bestand staat op een reiserfs partitie en GRUB heeft er toegang toe (al getest).

Antwoorden (2)

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

Het grootste probleem met het booten van een ISO bestand is dat ISO’s die zijn ontworpen om te worden geboot, bijna altijd zijn ontworpen om van een CD te worden geboot. Zoals uitgelegd op Marco’s blog betreffende Grub 2 (nadruk mijnerzijds):

GRUB kan ISO9660 (“iso”) images lezen. Het kan bijvoorbeeld de eerste paar sectoren laden en booten. Maar de meeste mensen realiseren zich niet “wat dan?”. Wat zou het geladen besturingssysteem doen? Het zal waarschijnlijk zoeken naar een CD-ROM, die het niet zal vinden, en falen.

Dus de doodsimpelste manier om te booten van een willekeurig ISO-bestand is om het in een virtuele machine (VirtualBox, VMware, of Virtual PC) te laden als een virtuele CD en het daar te booten. Dat zou bijna altijd moeten werken, want voor de VM is het geen ISO-bestand – het is een echte CD op echte CD-hardware.

Opstarten vanaf een ISO bestand op bare metal is veel moeilijker. Hoe je dit doet hangt af van welke versie van Grub je gebruikt, en de resultaten kunnen verschillen afhankelijk van welke ISO je gebruikt en hoe het was geconfigureerd om op te starten. Dit is de reden waarom de meeste boot-ISO-from-USB tools (Unetbootin, WinToFlash, etc) meestal de ISO inhoud uitpakken naar de drive – omdat ze op die manier direct toegankelijk zijn, zonder het OS dat geboot wordt te verwarren.


Grub 1

… niet zeker. Indien mogelijk, zullen menu ingangen waarschijnlijk veel lijken op Grub4DOS, hoewel ik denk dat het “map –hook” commando een Grub4DOS verbetering is. Aan de positieve kant, Grub heeft een breder bestandssysteem ondersteuning dan Grub4DOS.

Een opmerking over Grub met reiserfs (onbevestigd) geeft aan dat je “je partitie moet mounten met notail om het te laten werken”.

Memdisk is een optie; zie hieronder.


Grub4DOS

Grub4DOS biedt een experimentele “CD emulatie” die werkt met sommige ISO’s. Helaas, Grub4DOS leest alleen FAT32/NTFS bestandssystemen. Download Grub4DOS. ](http://sourceforge.net/projects/grub4dos/files/)

Hier is een voorbeeld bron ):

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

Vermoedelijk kan de Win7 ISO worden opgestart met deze invoer :

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

Andere ISO’s kunnen worden opgestart met Memdisk :

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

U kunt ook een menu configurator gebruiken zoals MultiBootISOs.exe van PenDriveLinux . Plaats ISO’s op de flash drive, en voer de utility uit om de bootloader te installeren en het bootmenu te configureren.

Hier is een Hak5 aflevering over het installeren van Grub4DOS.


Grub 2

Hier zijn een paar voorbeeld Grub2 entries. chainloader werkt op dit moment niet om een ISO te booten, dus deze entries moeten (1) loopback gebruiken om de ISO te “mounten”, en (2) iets als iso-scan of findiso toevoegen aan de linux regel die het ISO bestand specificeert.

Helaas is er geen algemene manier om dit te doen. Elke verschillende boot entry moet worden aangepast aan de inhoud van de doel ISO. De meeste Linux LiveCD’s gebruiken ISOLINUX als bootloader; zoek de isolinux.cfg en onderzoek die boot entry om te zien wat er normaal gesproken geboot wordt.

Voorbeeld entries 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
}

Als je een niet-Linux LiveCD probeert te booten, heb je misschien pech. Nogmaals, Memdisk kan helpen :

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

Je kunt dd gebruiken vanaf de terminal om een iso bestand naar een partitie te schrijven. Wees voorzichtig, als je dd verkeerd gebruikt kun je alles wissen. Het zou er ongeveer zo uit moeten zien: dd if=Desktop/LinuxCDFile.iso of=/Path/To/Partition