cd/dvd/usb multidistro con grub2 + isos

Ahora con la salida de ubuntu 9.10 codename Karmic Koala, lo que mas polvo ha levantado (aparte de los bugs) es el fulano grub2 y sus diversas funciones (capacidad de ejecutar scripts, arranque desde isos, etc) y aprovechándonos de eso vamos a crear una herramienta con varias distros.

¿para qué sirve llevar varias distribuciones GNU/Linux? de seguro preguntaran, pues muy sencillo como saben los S.O. basados en GNU/linux son (sin ánimo de parecer fan boy o anti windows) tan versátiles que nos permiten un monton de cosas con sus live cd’s, desde algo tan sencillo como recuperar la contraseña de windows hasta recuperar tablas de particiones, etc.

Tutorial para Karmic Koala

Primera Parte: creación de un cd/dvd multidistro

Comenzamos instalando los paquetes necesarios:
(Trabajaremos desde la consola de root la primera parte)
sudo su
aptitude install isomaster kvm

Creamos la carpeta de trabajo:

mkdir /home/USUARIO/grubiso
cd /home/USUARIO/grubiso
Donde dice USUARIO debemos colocar nuestro nombre de usuario OK

Creamos la imagen .iso con un grub vacío:
grub-mkrescue arranque.iso

le damos los permisos necesarios:
chmod -Rfv 777 /home/USUARIO/grubiso/

Ahora si queremos podemos cerrar la consola, si no pues la minimizamos (igual la necesitaremos luego) y vamos a la carpeta:
Presionamos Alt+F2 y en el cuadro de diálogo escribimos:
nautilus $HOME/grubiso
Lo que nos llevará a la carpeta donde creamos la imagen .iso, una vez allí con el boton derecho derecho hacemos click sobre el .iso y seleccionamos la opción “Extraer Aqui“.

Tendremos una carpeta llamada “arranque”, entramos alli y creamos una carpeta llamada “iso”, alli colocaremos todas las isos que vamos a utilizar. En mi caso estoy trabajando con *buntu hardy, gparted, gOS y Tiny Core, las isos las muevo alli

Entramos en la Carpeta llamada “boot” y allí en “grub”, abrimos el archivo “grub.cfg” que estará vacío y colocamos lo siguiente:
set timeout=25

menuentry "Ubuntu Live 8.04" {
loopback loop /iso/ubuntu-8.04.3-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es iso-scan/filename=/iso/ubuntu-8.04.3-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.gz
}

menuentry "Kubuntu Live 8.04" {
loopback loop /iso/kubuntu-8.04.2-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es iso-scan/filename=/iso/kubuntu-8.04.2-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.gz
}

menuentry "Xubuntu Live 8.04" {
loopback loop /iso/xubuntu-8.04.1-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es iso-scan/filename=/iso/xubuntu-8.04.1-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.gz
}

menuentry "gOS-3.1 Gadgets" {
loopback loop /iso/gos-3.1-gadgets-20081205.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es iso-scan/filename=/iso/gos-3.1-gadgets-20081205.iso noeject noprompt --
initrd (loop)/casper/initrd.gz
}

menuentry "GParted" {
loopback loop /iso/gparted-livecd-0.3.3-0.iso
linux (loop)/isolinux/linux findiso=/iso/gparted-livecd-0.3.3-0.iso root=/dev/ram0 init=/linuxrc ramdisk_size=65000 nomce noeject noprompt --
initrd (loop)/isolinux/initrd.gz
}

menuentry "GParted lowmem" {
loopback loop /iso/gparted-livecd-0.3.3-0.iso
linux (loop)/isolinux/linux findiso=/iso/gparted-livecd-0.3.3-0.iso root=/dev/ram0 init=/linuxrc ramdisk_size=16384 nomce noeject noprompt --
initrd (loop)/isolinux/initrd.gz
}

menuentry "tinycore" {
loopback loop /iso/tinycore_2.2rc1.iso
linux (loop)/boot/bzImage --
initrd (loop)/boot/tinycore.gz
}

menuentry "Memory test (memtest86+)" {
linux /boot/img/memtest86+.bin
}

Donde:
loopback loop /iso/archivo1.iso le indica que monte como dispositivo loop el archivo archivo1.iso que esta en la carpeta /iso/

linux (loop)/casper/vmlinuz le indica el nombre para buscar el kernel

boot=casper es la carpeta dónde se encuentra el kernel

locale=es_ES bootkbd=es console-setup/layoutcode=es son opciones extras de arranque (las encuentran en el isolinux.cfg del livecd, en la opción append)

iso-scan/filename=/iso/archivo1.iso en caso de tener varias isos indica que nuestra raiz en ese momento es la llamada archivo1.iso

noeject noprompt – en realidad para estas opciones desconozco su función, pero creo que aplica para las distribuciones que expulsan el disco luego de cargarse, como geexbox o slitaz, alguien con mas conocimientos que yo, que por favr me corrija en eso

initrd (loop)/casper/initrd.gz Esta opción busca el miniroot del disco para el arranque

Ahora creamos de nuevo la imagen .iso:

Abrimos Isomaster:
Presionamos Alt+F2 y escribimos:
isomaster

Una vez allí vamos a la dirección $HOME/grubiso y hacemos click en Archivo → Nuevo.

Seleccionamos TODO lo que tenemos en la parte superior de la pantalla y lo añadimos a nuestra iso.

En la parte de abajo de nuestra ventana abrimos la carpeta boot → grub, seleccionamos el archivo grub_eltorito y luego vamos a Herramientas → Registro de Arranque → Añadir → Usar Archivo Seleccionado en Imagen (sin Emulación), esto es para que el disco sea booteable. Hacemos click en Archivo → Guardar como y guardamos nuestro disco, ejemplo multimio.iso.

Como una imagen vale mas que mil palabras les dejo un gif intentando explicar esto de arriba:
Explicacion ISoMASTER

Para probar cómo quedó simplemente utilizamos la máquina virtual instalada en el primer paso: kvm (ajá, vieron como era necesario dejar abierta la consola de root de antes)

sudo kvm -boot d $HOME/grubiso/multimio.iso

Debe aparecer el grub de arranque del cd

Segunda Parte: creación de un usb multidistro

Este paso es mas sencillo, una vez realizados los pasos de arriba, omitimos abrir isomaster (ya que no lo necesitaremos) y escribimos en la consola de root:
grub-install --no-floppy --root-directory=/media/PENDRIVE dev/sdX
donde /media/PENDRIVE es el punto de montaje del pendrive y /dev/sdX será el dispositivo OJO cuando se haga esto de no hacerlo correctamente podemos dañar nuestro disco duro, para no equivocarnos escribimos esto en la consola:
mount -l
lo que nos mostrará qué está montado y en donde:
/dev/sdf1 on /media/MultiBootUSB type vfat (rw,nosuid,nodev,uhelper=devkit,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush) [MultiBootUSB]
luego sencillamente copiamos TODO el contenido de la carpeta $HOME/grubiso/arranque a la raiź del pendrive:
cp -avf $HOME/grubiso/arranque/* /media/PENDRIVE

Y como antes usamos kvm para las pruebas:

sudo kvm -hda /dev/sdf

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s