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

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

Respuestas (2)

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

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.

  • *

Grub 1

… 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

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.

  • *

Grub 2

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
}
1
1
1
2014-09-03 13:55:11 +0000

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