Cómo arrancar una imagen ISO desde GRUB2

Linux tiene una ventaja muy importante sobre Windows en un aspecto fundamental: se puede probar y ver si funciona correctamente en nuestra PC booteando directo desde su CD de instalación, llamado Live CD. Casi todas las distros cuentan hoy con esta posibilidad.

Sin embargo, existen otras posibilidades, que permiten evitar la necesidad de quemar un CD cada vez que el usuario quiera crear un Live CD. La más usual suele ser copiar Linux en un USB usando un programa especial y luego arrancar la PC desde el USB. Sin embargo, en caso de que ya tengas GRUB2 instalado en tu PC, existe otra posibilidad muy poco divulgada pero mucho más rápida, efectiva y segura.


¿Quemaste miles de CDs para grabar las imágenes de tus distro favoritas? ¿Creías que al cargar Linux desde USB estabas en la cresta de la ola? ¡Ja! Este método ahorra tiempo y dinero, ya que además de ser ultra-rápido, es mucho más seguro (debido a la falta de posibles “errores de escritura” y demás problemas relacionados con la lectura del Live CD) y evita la necesidad de quemar las imágenes ISO en un CD o en un USB.

Pasos a seguir

1.- Editar el archivo /etc/grub.d/40_custom

sudo gedit /etc/grub.d/40_custom

Nota: TonyDiaz, con mucho criterio, nos aconseja modificar este archivo y no /boot/grub/grub.cfg. La razón es que el sistema reemplaza grub.cfg cada vez que realiza una modificación en GRUB, cosa que ocurre muy a menudo. Por ese motivo, es necesario modificar la plantilla diseñada exclusivamente para añadir entradas de menú personalizadas en GRUB: 40_custom.

2.- Agregar una nueva entrada al menu parecida a la que se muestra a continuación:

menuentry "Lubuntu Live" { 
set root=(hd0,5)
loopback loop /vbox/lubuntu-10.10.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/vbox/lubuntu-10.10.iso --
initrd (loop)/casper/initrd.lz
}

3.- No olvides editar las partes que aparecen en rojo, donde:

  • menuentry: es el nombre que aparecerá en el listado de GRUB2 al iniciarse la PC. En mi caso, como yo 
  • set root: nos indica en que partición esta el archivo ISO. Para saber cuál es la configuración correcta el razonamiento es simple. 
  • ¿En dónde está la imágen ISO de mi distro favorita? En mi disco Y, partición X. Probablemente, sepas en qué ruta se monta ese disco, pero no su nombre de dispositivo. Para ello…
  • Abrí Sistema > Adminitración > Utilidad de discos y, luego de seleccionar el disco rígido en el que se encuentra la partición en cuestión, hacé clic sobre la partición para que se muestren todos sus datos y características.
  • Con la partición seleccionada, buscá la etiqueta “Dispositivo” y fijate qué dato muestra. En mi caso, dice: /dev/sda5. Al ser hda o sda quiere decir que es el disco 1; si fuera sdb o hdb, sería el disco 2. Como se trata del sda5, quiere decir que es la partición 5 del disco 1. Para el caso, “set root” debería llevar (hd0, 5). Grub2 empieza el conteo de discos con 0, razón por la cual esta configuración le indica que la imagen ISO se encuentra en el disco 1, partición 5. 
  • loopback: nos indica la ruta dentro de la partición donde está el archivo ISO. Es fácil confundirse en este punto porque lo que se pide no es la ruta donde se monta este disco sino, el resto de la ruta. Por ejemplo, mi disco sda5 se monta en /media/backup/. Por lo tanto, la ruta completa de la carpeta donde se encuentra la imágen ISO en cuestión sería /media/backup/vbox/. Sin embargo, como en “set root” ya le dijimos de qué disco y partición se trata, no hace falta aclararle la ruta en la que se montó el disco (/media/backup/). Por esa razón, la ruta a ingresar en este punto sería simplemente /vbox/archivo.iso.
  • linux (loop): nos indica qué kernel usar para bootear y dónde se encuentra. El razonamiento es el mismo que el del punto anterior. Para que el sistema arranque con los menús y ventanas en español, así como la distribución del teclado, hace falta agregar los parámetros locale y bootkbd. Además, para que en lugar de los mensajes del núcleo muestre la imagen de carga (splash), hace falta agregar el parámetro splash. Por último, para agrupar entradas iguales, es necesario agregar el parámetro quiet. Entonces, esta versión más “personalizada” quedaría así:
    linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash iso-scan/filename=/vbox/lubuntu-10.10.iso --
  • initrd (loop): nos indica dónde está el initrd. 
  • 4.- Luego de guardar el archivo en cuestión, sólo queda actualizar GRUB2:

    sudo update-grub

    Acabo de probar este método con Lubuntu 10.10 y ¡no tardó ni 20 segundos en cargar completo! Les aseguro que esta es la mejor forma de probar versiones Beta de Ubuntu u otras distros sin alterar su sistema, instalar Virtual Box, tener que quemar un CD o gastar un USB sólo para usarlo como Live CD, etc.

    ¡Gracias Miguel Mayor i Tur por sugerirnos el tema!


    33 comentarios

    1. FILE NOT FOUND

      YOU HAVE TO LOAD THE KERNEL FIRST

      Yo tengo el ubuntu 10.10 amd64 instalado en ext4, eso, al parecer cambia la sintaxis, que desconozco, y me da errores.

      Copié en el archivo 40_custom el kernel original, para it copiando comandos, mediante prueba y error, pero todos me dan el mismo error.

      Haciendo un ls en grub las particiones – debe ser cosa del ext4- se nombran así, y no sé porqué van entre comillas simples.

      Así que, por favor : 1,- Aclara que funciona para particiones ext2

      2.- Haz una ampliación para arranques en particiones ext4, porque no me aclaro, y a buen seguro que será una chorradita, pero como lo anterior, sabía que se podía, pero no encontré donde me lo explicaran, en la variante ext4 peor aun.

      gracias por anticipado

      Mi 40_custom, en el que sólo funciona el Ubuntu

      #!/bin/sh

      exec tail -n +3 $0

      # This file provides an easy way to add custom menu entries. Simply type the

      # menu entries you want to add after this comment. Be careful not to change

      # the ‘exec tail’ line above.

      menuentry “Ubuntu, with Linux 2.6.35-23-generic” –class ubuntu –class gnu-linux –class gnu –class os {

      recordfail

      insmod part_msdos

      insmod ext2

      set root='(hd0,msdos1)’

      search –no-floppy –fs-uuid –set c617a74c-d199-49fc-997e-77ebbe33a8bb

      linux /boot/vmlinuz-2.6.35-23-generic root=UUID=c617a74c-d199-49fc-997e-77ebbe33a8bb ro quiet splash nomodeset # video=uvesafb:mode_option=>>1024×768-24< <,mtrr=3,scroll=ywrap initrd /boot/initrd.img-2.6.35-23-generic } menuentry “Rescatux” { recordfail insmod part_msdos insmod ext2 set root='(hd0,msdos1)’ loopback loop /isos/rescatux.iso linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash iso-scan/filename=/isos/rescatux.iso — initrd (loop)/casper/initrd.lz } menuentry “rescatux2” { set root='(hd0,msdos1)’ loopback loop /isos/rescatux.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/isos/rescatux.iso — initrd (loop)/casper/initrd.lz }

    2. Manolo, como no me funcionaba, me cambié a Burg y tampoco, ¿serías tan amable de pegar lo que tienes para Burg – que por cierto, te agradezco me descubrieses, que bonito -.

      Creo que mi problema deriva de que uso ext4, si es también tu caso me vendría de perlas.

      de paso le podriamos mandar una entrada de como instalar burg, que persista a las actualizaciones, y como añadirle imágenes ISO.

    3.   Manolo Pájaro dijo

      No me funciona, intenté con un código encontrado en otra página y luego con una copia del que pusiste y no me salen ninguna de las dos opciones en el GRUB. Estuve revisando en el resto del grub.cfg y noté que el parámetro para set root va entre comillas simples, lo pusiste así en tu archivo y funcionó? A mi no me salió de ninguna de las dos maneras :/

    4.   Usemos Linux dijo

      Manolo, aquí no se trata de copiar-pegar, como en otros casos. Fijate que el artículo explica bien detalladamente qué cosas debés cambiar para que todo funcione en tu caso particular.
      Avisame si tenés problemas siguiendo las instrucciones…
      Un gran abrazo! Pablo.

    5.   fraterneo dijo

      Se ve interesante, lo voy a probar…

    6.   Rafael dijo

      O que interesante articulo, esto me viene muy bien… Normalmente uso una USB con el gran Multiboot, prinsipalmente porque me permite tener una usb en fat32 con mis sistemas “live” listos para arrnacar en pc’s donde el sistema ya no arranca (win) y conservando la opcion de guardar archivos en el usb… pero como es sistema fat32 tien la gran desventaja que no acepta archivos de mas de 4 GB y por eso esto me GUSTA!!!
      Saludos

    7. De nada, encantado de que lo hayais explicado tan bien, ahora falta, lo mismo,para hacer una multiboot desde un USB, instalando grub2 en el mismo, con las distros de recuperación y otras.

      Un placer seguir leyendoos.

    8.   Tonydiaz dijo

      ¡Muy bueno! Pero si me permites voy a intentar mejorarlo un poquito.

      El fichero /boot/grub/grub.cfg es generado por una herramienta llamada grub-mkconfig usando unas plantillas que están en la ruta /etc/grub.d/, por tanto, cada vez que se genera un nuevo fichero de grub (por ejemplo cuando entra un nuevo kernel, o una actualización del mismo, o cuando se ejecuta manualmente el comando update-grub) el sistema reemplaza el fichero anterior por el nuevo, borrando cualquier entrada que hayamos insertado manualmente. Es decir, que habría que insertar las entradas en el fichero cada vez que hubiera una modificación en el grub, cosa que ocurre muy a menudo.

      Por tanto, mi sugerencia es que NO se edite el fichero /boot/grub/grub.cfg, si no la plantilla que corresponda al sistema desde el que se quiere arrancar. En este caso, al ser una entrada “personalizada”, debería ir en el fichero /etc/grub.d/40_custom, que es el que está preparado para añadir entradas personalizadas.

      De esta forma, siempre se añadirá automáticamente nuestra entrada personalizada cada vez que el sistema genere un nuevo grub.cfg.

      Así es como yo lo tengo para arrancar desde una imagen iso de SystemRescueCD, y funciona a las mil maravillas 😉

      Saludos a todos.

    9.   Usemos Linux dijo

      Tenés toda la razón! Gracias x recordármelo. Ahora mismo añado esa modificación.

    10.   Tonydiaz dijo

      Soy yo de nuevo 😉

      Se me ha olvidado comentarte en mi mensaje anterior que si se modifica el archivo /etc/grub.d/40_custom o cualquier otra plantilla, es necesario actualizar el grub mediante la orden update-grub.

      Saludos, y seguid así!! 🙂

    11.   Usemos Linux dijo

      Listo! Gracias otra vez! 🙂

    12.   Guest dijo

      ¡Qué bueno! ¡Esto es muy útil! Muchas gracias 😀

    13.   Cex dijo

      Si queremos que una imagen de Ubuntu (para otras distros no aseguro que funcione):
      · arranque con los menús y ventanas en español, así como la distribución del teclado
      · que durante el arranque, en lugar de los mensajes del núcleo, muestre la imagen de carga (splash)
      la cuarta línea sería:

      linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash iso-scan/filename=/vbox/lubuntu-10.10.iso —

      El quiet sirve para agrupar entradas iguales.

      Por cierto, estaría bien que dejaras más claro que sudo update-grub hay que hacerlo una vez modificado y guardado el archivo indicado.

    14.   Manolo Pájaro dijo

      Sí sí yo sé que no debo copiarlo textualmente jaja no lo hice así, sí modifiqué según mi equipo y ya encontré cual fue el problema, que yo no uso grub sino burg xD

    15.   fraterneo dijo

      Hola!

      Lo he configurado para bootear un Ubuntu 10.10 Live y funciona perfectamente (voy a poner un enlace en mi blog hacia este artículo), he aquí mi configuración:

      menuentry “Ubuntu 10.10 Live” {
      set root=(hd0,1)
      loopback loop /home/fraterneo/ubuntu-10.10-desktop-i386.iso
      linux (loop)/casper/vmlinuz boot=casper quiet splash iso-scan/filename=/home/fraterneo/ubuntu-10.10-desktop-i386.iso —
      initrd (loop)/casper/initrd.lz
      }

      No obstante, he intentado hacerlo con un Fedora 13 Live cd al cual he puesto esta configuración:

      menuentry “Fedora 13 Live” {
      set root=(hd0,1)
      loopback loop /home/fraterneo/Fedora-13-i686-Live.iso
      linux (loop)/EFI/boot/vmlinuz0 root=live:LABEL=Fedora-13-i686-Live rootfstype=auto ro liveimg quiet rhgb
      initrd (loop)/EFI/boot/initrd0.img
      }

      La cual en el proceso de booteo (splash image) me da el siguiente error:
      No root device found
      Boot has failed, sleeping forever

      Aun no he encontrado la posible solución. A ver si alguno de ustedes se anima e investiga más.

      Un saludo!.

    16.   cousteau dijo

      Mejor usar gksudo gedit, no sudo gedit.

    17.   Panchove dijo

      Magnifico hermanzo, es increible las posibilidades que da GRUB, ahora ya tengo como demostrar varios Live sin usar CD jejeje! excelente!

    18.   Autogestion dijo

      ¿Es posible hacerlo con grub4dos?

    19.   Usemos Linux dijo

      La verdad que no sé. 🙁
      Avisanos si descubrís algo…
      Saludos! Pablo.

    20.   Marcelo dijo

      Comprobado. Estos parámetros funcionan solo para Ubuntu. La carpeta /casper y los archivos vmlinuz y initrd.lz solo la encontramos en las distros *buntu. En Fedora es completamente distinto, por lo que tales parámetros no sirven. Estoy investigando el tema.

    21.   Usemos Linux dijo

      Hola Miguel! La verdad que no veo mucha diferencia con el comando recomendado en el post. De todos modos, hasta donde yo entiendo, no interesa en qué formato (EXT2 o EXT4 o cualquier otro) se encuentre tu boot. De hecho, yo lo tengo en ext4 y me funcionó perfecto el código del post.
      Lo que te recomiendo es lo siguiente:

      1) que te asegures que la ruta del isofile exista. O sea, en el caso del código incluido en el post, que /vbox/lubuntu-10.10.iso exista. Para eso, simplemente abrí Nautilus, navegá a la carpeta en cuestión y fijate si existe el archivo ISO.

      2) el segundo punto que puede estar creando problemas es el root. Fijate que el root sea el correcto. En el post se explica cómo saber si qué valor asignarle a esa variable. Sino, lo que te queda es hacer prueba y error.

      En cualquier caso, este código que se incluye en el post no es simple copiar-pegar. Hay que cambiar los datos que aparecen marcados en rojo y adaptarlos según tu caso.

      Un abrazo! Pablo.
      2)

    22.   Ado Ello dijo

      Sabia como se hacia en el GRUB 1 pero no en el 2 😀
      Te he enlazado en el comentario de un tutorial que hice para hacer un Pendrive Multiboot http://www.youtube.com/watch?v=FbpYNSuaNTI&hd=1
      Un saludo

    23.   Usemos Linux dijo

      Upa! Muy buen tuto!!
      Justo estaba a punto de escribir un post sobre el tema (pendrive multiboot). Cuando lo haga, seguramente voy a incluir tu video. Si no te importa, claro… y siempre aclarando la fuente y tu autoría, por supuesto.
      Gracias x el tiempo y x compartir tus conocimientos con la comunidad.
      Un gran abrazo! Pablo.

    24.   Inukaze dijo

      Tengo una pregunta , un tanto particular , si por ejemplo solo tengo windows xp instalado , y ninguna distro , pero ya tengo las particiones preparadas , como o que deberias hacer para solo instalar solo lo justo y necesario , para que inicie GRUB2 , para hacer que arranque la ISO que tengo en Otro Disco Duro ???

    25.   Inukaze dijo

      Bueno a ver , la idea es que en la particion donde voy a instalar la nueva distro , solo tenga la entrada de /boot/grub y puede que un Kernel 2.6 , y sus configuraciones , para que luego durante la instalacion se actualize .

      La idea principalmente es ahorrar mucho tiempo , no le veo el punto a instalar una distro , para modificar grub , para instalar otra , si instalando solamente grub , puedo iniciar directamente la iso, sin necesidad de CD o USB.

      Bueno , de todos modos , si tengo una distro instalada es Slackware64 , pero de todos modos , voy a descargar la ISO actualizada de Chakra Linux a ver si esta vez logro que se instale xD

    26. http://ubuntuforums.org/showthread.php?t=1632692
      Me han dado aqui una solución alternativa que parece bonita.
      PERO SIGUE SIN FUNCIONARME, al parecer por tener el boot en EXT4

      menuentry “Ubuntu 10.10 Maverick ISO 64bit” {
      set isofile=”/boot/ISO/maverick-desktop-amd64.iso”

      loopback loop (hd0,5)$isofile
      linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile nomodeset
      initrd (loop)/casper/initrd.lz
      }

    27.   Francisco Javier Martín López dijo

      Para antergos cómo sería la entrada?

    28.   Pablo dijo

      Tengo un problema con una notebook donde se bloqueo el arranque del Grub (grub2), tenia Huayra (versión Debian de Linux) y Windows 8, cambiaron el grub.cfg y quedo bloqueado el arranque.
      Eso no sería problema, salvo que cuando quiero arrancar desde un LiveUSB, la notebook se reinicia y no toma el arrranque desde el USB, y no se puede cambiar el Setup.
      Quisiera saber como puedo hacer para copiar un ISO desde un pendrive al rígido y ejecutarlo desde alli (ISO del LiveUSB).

      Gracias

      1.    usemoslinux dijo

        Hola Pablo!

        Te recomendamos que plantees esta consulta en nuestro servicio de preguntas y respuestas llamado Ask DesdeLinux a fin de que toda la comunidad pueda ayudarte con tu problema.

        Un abrazo, Pablo.

    29.   Mariano dijo

      Como puedo hacerlo con ubuntu 15.04 mate amd64. Colocar el kernel tal vez sea la solución?
      Tengo dos discos, en el primero ubuntu 10.04 con sistema ext4. En el segundo tengo una partición ext4 y otra con ntfs. En el segundo, en la partición ext4 copié la iso y la extraje en el lugar. Seguí todos los pasos del tutorial, con respectivas modificaciones según mi localización de disco.
      Luego de reiniciar, y aparecerme la entrada del grub, en mi caso, “Ubuntu mate 15.04”, no entro a la instalación sino que salió de que no había un kernel a seleccionar. Que pude haber hecho mal?. Les agradecería una respuesta.

    30.   Laurencio dijo

      No me funciona, en Linux Mint.
      Lo probé con ubuntu 14.04.02 y con bodhi Linux.
      En una partición ntfs y en una ext4
      Se crea una nueva línea en el grub pero al seleccionarla no arranca nada, queda la pantalla en negro.
      Saludos.

    31.   Reinaldo dijo

      Buenos dias, amigos de este medio, tengo un problema con el menuentry de mis grub2, la cosa va asi.

      1-slackware x64 efi
      2-tengo instalado windows 7

      *solo cambie el teclado y se me vino la sorpresa de que el slack no se me mostraba, buscando informacion observe que era problema del menuentry, tome una iso del mismo slack,ingreso y le di la 3era opcion donde dice que no reconoce el boot/, y siendoles honesto no se que hacer despues de eso, si alguien puede explicarme como recuperar mi slack, se los agradeceria.. o enviarme una url donde expliquen los paso

      Gracias de ante mano queridos amigos de este maravilloso blog

    32.   Georgino dijo

      Buenas amigos tengo una pregunta tal vez sea tonta para algunos… he creado un instalador del Ubuntu LTS el ultimo q hay para descargar el 16.04 la version de escritorio quiero instalarlo como sistema único sobre una Asus Prime Z2027-A con un Procesador Celeron y una Ram de 4 Gb con un SDA de 256 Gb … lo necesario para lo que va a ser usada, Minería de ethereums.

      El problema es que meto el USB ya con la ISO metida con el UNEBOOTIN …. Prendo la compu para que bootee desde el USB y directo antes de entrar al modo de instalación con interfaz gráfica se inicia el sistema de booteo GRUB cosa que la computadora y todos sus componentes son de caja no tienen absoluamente nada asi que asumo que es cosa del Ubuntu con el Grub …. detecta todo los dispositivos hice un LS para ver que había…

      El problema es básico quiero instalar UBUNTU pero solo llego hasta Grub>
      Literal

      Gracias de antemano.

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    *

    *

    1. Responsable de los datos: Miguel Ángel Gatón
    2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
    3. Legitimación: Tu consentimiento
    4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
    5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
    6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.