El día de hoy compartiré esto que resulta ser muy útil para aquellos que no tienen por diversos motivos usar un pendrive o un lector de discos.

El poder arrancar una imagen iso de desde el disco duro, resulta bastante útil a la hora de ejecutar diversas distros que están diseñadas para esto.


Nota: Como indico al final en “posible error”, esto solo vale para los LiveCD de Ubuntu y sus derivadas. Para LiveCD de otras distribuciones como Fedora, OpenSUSE, ArchBang, … hay que modificar el directorio y archivos donde encontrar el Kernel (núcleo) para el booteo.

boot-iso-files-directly-from-hard-drive-in-grub2
boot-iso-files-directly-from-hard-drive-in-grub2

Requerimientos para arrancar iso desde el disco duro:

Iso a bootear desde el disco duro.

Utilizar cualquier sistema que use Grub2.

Creamos un directorio en la raíz del sistema de archivos (/) al que llamaremos “/iso”, para tener el sistema de archivos organizado, con el comando:
sudo mkdir /iso

Ahora pasaremos a editar el Grub:

En el archivo /etc/grub.d/40_custom. Lo editamos con el comando:
sudo gedit /etc/grub.d/40_custom


Al final del archivo añadimos las siguientes líneas, pero mucho ojo, antes de pegarlo y guardar es necesario comprender las líneas.

ACLARO: Estas solo son para dar una ide a la estructura que tendremos esto no sirve.
menuentry "nombre de iso" {
set root=(hd0,2)
loopback loop /iso/nuesta-imagen.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es splash iso-scan/filename=/iso/nombre-livecd.iso --
initrd (loop)/casper/initrd.lz
}


Vamos a ver las líneas una a una, para comprender qué estamos haciendo:
menuentry "nombre livecd"

menuentry” es la línea que otorga el nombre que aparecerá en el grub. Podemos cambiar “nombre livecd”.
set root=(hd0,2)

“set root=” determina la partición del disco duro “(hd0,2)”, donde el sistema encontrará la imagen.iso que hemos pegado en /iso. Esto suele traer confusión, por lo que nos vamos a detener para explicarlo bien. Vamos a suponer que nuestro Ubuntu está en “/dev/sda2″, o sea, en la segunda partición (2) del primer disco duro (a).

loopback loop /iso/nombre-livecd.iso

“loopback loop” Esta determinara la ruta dentro de la partición, donde encontrará la imagen.iso que arrancaremos desde el disco duro. En la línea anterior “set root” ya pusimos el disco duro y la partición donde está. Solo tenemos que cambiar nombre-livecd.iso, por el nombre exacto de la imagen.iso que pegamos en /iso.
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es splash iso-scan/filename=/iso/nombre-livecd.iso --
“linux (loop)/casper/vmlinuz boot=”

Para poder realizar un correcto boot de la imagen iso desde el disco duro es necesario colocar bien la ruta del kernel con el que arrancará el Live-cd. En esta línea encontraremos los siguientes parámetros que podemos quitar o dejarlos, según nos convenga (recomiendo dejarlos tal cual): – locale y bootkbd, para que arranque con el idioma y la distribución del teclado en Español. – splash, para que muestre la imagen de carga (splash). Aquí, también debemos de cambiar al final de la línea: nombre-livecd.iso, por el nombre exacto de la imagen.iso que pegamos en /iso.
initrd (loop)/casper/initrd.lz
initrd (loop): determina la ruta dónde está el initrd (sistema de archivos temporal usado por el núcleo Linux durante el inicio del sistema)


Cuando tengamos el archivo correctamente, guardamos, cerramos el archivo y actualizamos el grub con:
sudo update-grub

Nota: se pueden añadir tantos LiveCD como queramos, añadiendo al archivo el correspondiente grupo de líneas (“menuentry {…}) y con sus respectivas imágenes.iso pegadas en el directorio /iso. En el grub aparecerán todos los Live-CD, desde los que podremos arrancar cualquiera de los añadidos

 

Posible error:

Si al arrancar os aparece el siguiente error:

 

you need to load the kernelk first

Es por que “no encuentra el archivo para el arranque del kernel” y esto es debido a que el directorio /casper y los archivos vmlinuz y initrd.lz solo se utilizan en Debian y derivadas (Ubuntu, Linux Mint, Guadalinex, …), por lo que en otras distribuciones se debería de cambiar las líneas pertinentes con la ruta/archivo adecuada, para que encuentre el archivo.

Dejanos Saber lo que piensas