grub: arranque desde ISO
¿Cómo puedo arrancar en un archivo ISO en GRUB? El archivo ISO está en una partición reiserfs y GRUB puede acceder a él (ya lo he probado).
El mayor problema de arrancar un archivo ISO es que las ISOs que están diseñadas para ser arrancadas están casi siempre diseñadas para ser arrancadas desde un CD. Como se explica en el blog de Marco respecto a Grub 2 (el énfasis es mío):
GRUB puede leer imágenes ISO9660 (“iso”). Puede, por ejemplo, cargar los primeros sectores y arrancarla. Pero la mayoría de la gente no se da cuenta de “¿qué pasa entonces? ¿Qué haría el sistema operativo cargado? Lo más probable es que busque un CDROM, que no encontrará, y fallará.
Así que la forma más sencilla de arrancar desde un archivo ISO aleatorio es cargarlo en una máquina virtual (VirtualBox, VMware o Virtual PC) como un CD virtual y arrancarlo allí. Esto debería funcionar casi siempre, porque para la máquina virtual no es un archivo ISO, sino un CD real en un hardware de CD real.
Arrancar desde un archivo ISO en metal desnudo es mucho más difícil. La forma de hacerlo depende de la versión de Grub que esté utilizando, y los resultados pueden diferir dependiendo de la ISO que esté utilizando y de cómo haya sido configurada para arrancar. Esta es la razón por la que la mayoría de las herramientas para arrancar ISO desde USB (Unetbootin, WinToFlash, etc) suelen extraer el contenido de la ISO a la unidad - porque de esa manera se puede acceder directamente, sin confundir al sistema operativo que se está arrancando.
… no estoy seguro. Si es posible, las entradas del menú probablemente se parecerán mucho a Grub4DOS, aunque creo que el comando "map –hook” es una mejora de Grub4DOS. En el lado positivo, Grub tiene un soporte de sistema de archivos más amplio que Grub4DOS.
Una nota sobre Grub con reiserfs (sin confirmar) indica que “tienes que montar tu partición con notail
para que funcione”.
Memdisk es una opción; ver más abajo.
Grub4DOS ofrece alguna “emulación de CD” experimental que funciona con algunas ISOs. Desafortunadamente, Grub4DOS sólo lee sistemas de archivos FAT32/NTFS. Descargue Grub4DOS.
Aquí hay una entrada de ejemplo fuente ):
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
Supuestamente la ISO de Win7 puede ser arrancada con esta entrada :
title Windows 7
map (hd0,0)/win7.iso (hd32)
map --hook
chainloader (hd32)
Otras ISOs pueden ser arrancadas con Memdisk :
title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
kernel /memdisk iso
initrd /hdt.iso
También puede utilizar un configurador de menús como MultiBootISOs.exe de PenDriveLinux . Coloca las ISOs en el pendrive, y ejecuta la utilidad para instalar el bootloader y configurar el menú de arranque.
Aquí hay un episodio de Hak5 sobre la instalación de Grub4DOS.
Aquí hay un par de ejemplos de entradas de Grub2. chainloader no funciona para arrancar una ISO actualmente, así que estas entradas deben (1) usar loopback para “montar” la ISO, y (2) añadir algo como iso-scan o findiso a la línea linux que especifica el archivo ISO.
Desafortunadamente, no hay una forma genérica de hacer esto. Cada entrada de arranque diferente debe ser adaptada al contenido de la ISO de destino. La mayoría de los LiveCDs de Linux utilizan ISOLINUX como cargador de arranque; busque el isolinux.cfg y examine esa entrada de arranque para ver lo que suele arrancar.
Entradas de ejemplo fuente ):
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
}
Si está intentando arrancar un LiveCD que no sea Linux, puede que no tenga suerte. De nuevo, Memdisk puede ayudar :
menuentry "Boot Hardware Detection Tool from iso" {
linux16 /memdisk iso
initrd16 /hdt.iso
}
Puedes usar dd desde la terminal para escribir un archivo iso en una partición. Solo ten cuidado, si usas dd mal puedes borrar todo. Debería ser algo así: dd if=Desktop/LinuxCDFile.iso of=/Path/To/Partition