Una de las muchas sorpresas que depara GNU/Linux es la versatilidad que este ofrece para hacer cosas. Hoy vamos a ver una que nos puede ayudar e incluso sacar de más de un apuro y que es cómo arrancar una ISO desde Grub.
Por norma general, cuando queremos arrancar una ISO, debemos de grabarla en un CD o en un pendrive para poder iniciar con ella el equipo y así verla y probarla. Pues bien, este tipo de acciones se pueden terminar con la posibilidad de arrancar una ISO desde el propio grub. Este método no servirá, lógicamente, para una reinstalación completa de tu sistema, pero sí te brindará la posibilidad de reiniciar tu equipo y probar una ISO de cualquier otra distribución o arrancar algún CD de utilidades. Vamos ya, por lo tanto, a preparar nuestro entorno.
Preparación del sistema
Vamos a ver aquí los pasos que debemos de hacer antes de nada. Lo primero será obtener la ISO que queramos tener en el arranque. Por ejemplo, una
Ubuntu, una copia de
BackTrack o el mismo
Gparted. Para ello, debemos de ir a la web oficial y descargarla. Este paso no tiene nada que ver con lo que vamos a comentar, pero sí es necesario para luego.
Una vez que tengamos la ISO, deberemos de colocarla en una ruta específica. Puesto que estamos hablando de ISO de arranque, a mi me gusta colocarlas en /iso, por lo tanto,
shell> mkdir /iso
shell> mv gparted-live-0.20.0-2-i486.iso /iso
shell> mv ubuntu-14.04.1-desktop-amd64.iso /iso
A continuación, vamos a hacer que el grub se muestre cuando arranque, pues en las últimas versiones arranca con un retraso de 0 segundos, lo que hace que se complique la elección del sistema operativo a arrancar. Si no tienes este problema, ignora este paso, sino, edita el fichero /etc/default/grub y déjalo como sigue.
...
#GRUB_HIDDEN_TIMEOUT=0
...
Y ya para finalizar el apartado de cosas que debemos de saber, necesitamos averiguar sobre qué disco y que partición está nuestra nueva carpeta (
/iso). Si tienes una instalación de las típicas, se supone que estará en el disco 0 (
/dev/hda o
/dev/sda) y la partición 1, por lo tanto
(hd0, 1). Esto es importante tenerlo identificado. Para asegurarte, compruébalo con
fdisk y con
mount.
shell> fdisk -l
Dispositivo Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 2048 29296639 14647296 83 Linux
/dev/sda2 29296640 33202175 1952768 82 Linux swap
/dev/sda3 33202176 234440703 100619264 8e Linux LVM
shell> mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
...
Edición del grub
La parte común ya está. Ahora nos queda añadir las entradas necesarias a nuestro grub. Se recomienda no añadirlas directamente en /boot/grub/grub.cfg, puesto que en cada actualización este fichero se regenera y por lo tanto los cambios se pierden. Lo mejor es usar el fichero /etc/grub.d/40_custom, que es precisamente para estos casos, añadir entradas manualmente.
Ubuntu 64
menuentry 'Ubuntu 14.04 Live (64 bits)' {
set isofile="/iso/ubuntu-14.04.1-desktop-amd64.iso"
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
Ubuntu 32
menuentry 'Ubuntu 14.04 Live (32 bits)' {
set isofile="/iso/ubuntu-14.04.1-desktop-i386.iso"
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
Gparted
menuentry 'Gparted' {
set isofile="/iso/gparted-live-0.20.0-2-i486.iso"
set root=(hd0,5)
loopback loop (hd0,5)$isofile
linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt ip=frommedia toram=filesystem.squashfs findiso=$isofile
initrd (loop)/live/initrd.img
}
Cómo veis, cada ISO a arrancar tiene unas opciones diferentes y estas debes de averiguarlas antes de poder iniciarla. Por norma general, está documentado el proceso en la web principal.
Lo único que nos queda ahora por realizar es una actualización del grub.
shell> update-grub2
Arrancando desde la ISO

Llegados a este punto, ya estamos listos para poder reiniciar nuestro sistema. Así que, cerramos la consola y todo lo que estemos haciendo y reiniciamos.
Os debería, tras el reinicio salir una pantalla similar a esta donde destaqué con letra más clara las dos ISOs que tendremos disponibles para iniciar.
Qué significa cada uno de los parámetros
- menuentry
Nombre que aparecerá como entrada del grub.
- set isofile
Define una variable, isofile, que contendrá la ruta absoluta de la imagen a iniciar.
- set root
Indica la partición raíz sobre la que está la imagen.
- loopback
Indica la ruta donde localizar la imagen en el disco. Es una composición de disco + variable isofile.
- linux
Kernel que se usará para arrancar y la localización del mismo. También se le pasan aquí las opciones de arranque.
- initrd
Indica la localización del fichero initrd, pero siempre dentro de la imagen.