grub: arranque desde ISO


41

¿Cómo puedo iniciar en un archivo ISO en GRUB? El archivo ISO está en una partición reiserfs y GRUB puede acceder a él (ya lo probé).


¿Qué versión de grub?
quack quijote

1
La misma pregunta respondida aquí .
dma_k


Respuestas:


55

El mayor problema con el inicio de un archivo ISO es que los ISO diseñados para iniciarse casi siempre están diseñados para iniciarse desde un CD . Como se explica en el blog de Marco sobre Grub 2 (el énfasis es mío):

GRUB puede leer imágenes ISO9660 ("iso"). Puede, por ejemplo, cargar los primeros sectores y arrancarlo. Pero la mayoría de las personas no se dan cuenta es "¿qué, entonces? ¿Qué haría el sistema operativo cargado? Lo más probable es que busque un CDROM, que no encontrará, y fallará.

Entonces, la forma más simple 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í. Eso casi siempre debería funcionar, porque para la VM, no es un archivo ISO, es un CD real en 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é usando, y los resultados pueden diferir dependiendo de qué ISO esté usando y cómo se configuró para arrancar. Esta es la razón por la cual la mayoría de las herramientas de arranque ISO desde USB (Unetbootin, WinToFlash, etc.) generalmente extraen los contenidos ISO en la unidad, porque de esa manera se puede acceder directamente, sin confundir el sistema operativo que se está iniciando.


Grub 1

... no es seguro. Si es posible, las entradas del menú probablemente se parecerán mucho a Grub4DOS, aunque creo que el comando "map - gancho" 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 "tiene que montar su partición notailpara que funcione".

Memdisk es una opción; vea abajo.


Grub4DOS

Grub4DOS ofrece algunas "emulaciones de CD" experimentales que funcionan con algunos ISO. Desafortunadamente, Grub4DOS solo lee los sistemas de archivos FAT32 / NTFS. Descargar Grub4DOS.

Aquí hay una entrada de muestra ( 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, el ISO de Win7 se puede iniciar con esta entrada :

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

Se pueden arrancar otros ISO con Memdisk :

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

También puede usar un configurador de menú como MultiBootISOs.exe de PenDriveLinux . Coloque los ISO en la unidad flash y ejecute la utilidad para instalar el gestor de arranque 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 entradas Grub2 de ejemplo. chainloader no funciona para iniciar un ISO en este momento, por lo que estas entradas deben (1) usar loopback para "montar" el ISO y (2) agregar algo como iso-scan o findiso a la línea de Linux que especifica el archivo ISO.

Desafortunadamente, no hay una forma genérica de hacer esto. Cada entrada de arranque diferente debe personalizarse según el contenido del ISO de destino. La mayoría de los LiveCD de Linux usan ISOLINUX como gestor de arranque; encuentre el isolinux.cfg y examine esa entrada de arranque para ver qué 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
}

@albert: estoy usando Grub2 en una unidad flash y estoy frustrado por las mismas cosas, así que no fue difícil armarlo. Estoy investigando su otra pregunta, pero nunca he intentado "grabar" un ISO en una partición antes, por lo que puede ser ... interesante.
quack quijote

Ofc puedo arrancarlo dentro de VMware (y ya lo hice) pero eso no me ayuda mucho porque es Windows y cuando lo instalo a través de VMware en mi disco, no arrancará más tarde (Windows estúpido ...).
Albert

¿Me puede sugerir qué opción debería probar primero, es decir, Grub1, Grub2 o Grub4DOS? Solo puedo instalar lo que sea necesario, ese no será realmente el problema.
Albert

@albert: ¿preguntas en referencia a tu pregunta anterior? Creo que su mejor opción es utilizar el método de extracción; El instalador de Windows es uno de esos ISO que tienen problemas cuando no se inician desde el hardware. puedes probar memtest, pero no sé mucho al respecto. probablemente desee obtener una unidad flash y usarla; ver superuser.com/questions/66948/… o superuser.com/questions/62193/install-win7-from-usb
quack quixote

1
@quackquixote, con respecto a sus palabras en negrita "¿Qué haría el sistema operativo cargado? Lo más probable es que busque un CDROM, que no encontrará, y fallará" , ¿Por qué el sistema operativo necesita buscar un CDROM? Ya es un archivo iso perfecto y todo lo que se necesita para cargar el sistema operativo ya está dentro del archivo iso, entonces, ¿por qué no puede omitir la búsqueda de CDROM?
Pacerier

1

Puede usar dd desde el terminal para escribir un archivo iso en una partición. Solo tenga cuidado, si usa dd incorrecto, puede borrar todo. Debería verse así: dd if = Desktop / LinuxCDFile.iso of = / Path / To / Partition


Pero la partición debe ser primaria para que Windows Loader pueda iniciarla.
Señor del fuego

Esto solo funciona ocasionalmente, generalmente el resultado no es de arranque.
David Tonhofer

1
@Firelord: Bueno, no uses Windows Loader. Usa Grub. Sí, también arranca Windows, si realmente lo necesita.
Evi1M4chine
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.