cd/dvd/usb Multidistro con grub2 e isos

+1
0
-1

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:

http://img263.imageshack.us/img263/9863/isomaster2.gif

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 raiz del pendrive:
cp -avf $HOME/grubiso/arranque/* /media/PENDRIVE

Y como antes usamos kvm para las pruebas:

sudo kvm -hda /dev/sdf

Se aceptan comentarios y sugerencias

Comentarios

Imagen de razaAztk

Esto lo quería hacer hace tiempo, una LiveUSB con varias distros, pero en aquel tiempo creo existia una forma pero era muy muy difícil (al menos para mi) pero con el grub2 y este tu tuto me va a servir mucho, aunque lo intentaré luego que en estos días no me queda mucho tiempo libre.

Gracias por el aporte! :)


void hey(int x,int y)
{
if (x && y)
 printf("http://libertadpunk.blogspot.com/");
else
 printf("http://banderaazteca.hi5.com/");
}

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de sadnessi

iniciando a usar ubuntu, aunque me parece interesante que ya haya un multiarrranque para las distros derivadas de debian, y a mi parecer es mucho menos complicado hacer esto porque en windows uf.... pensando solo en que la estraccion de una version antigua te llega a pesar los 2.5 gb imaginense, bueno, lo que me gusta es quese ocupaespacio, pero no tanto y que además es mucho más ágil, además de que son muy escasos (en mi caso) los drivers y/o controladores que no se acepten directamente a instalar las distros. buen tutorial, gracias

Imagen de alexelprogramador

Hola

gracias por este "pequeño" artículo.

hay solo una cuestion que me gustaría saber.

llevo desde hace algún tiempo, intentando instalar sistemas anfitriones en la misma particion de un dvd o bien, usb, veo que es en realidad eso lo definen como Multidistro.

bueno, el caso es que para las anteriores distribuciones me queda claro el proceso del menu.lst, pero cuando entramos en cuestión de los derivados del mandriva, como pclinuxos y compañía, ¿cómo definiria yo mi menu.lst?

es una de las pocas distribuciones que no he logrado iniciarlo en modo multidistro, bueno, esa y también Gentoo "liveDvD" y su derivado: "Sabayon"

con estas pocas, puedo comprar un usb de 8gb y meterlo todo junto en la misma particion, con ello, conseguiría, tanto iniciar diferentes sistemas para lograr diferentes objetivos, así como un medio muy rápido para instalar a los discos duros.

recordemos que los usb 2.0 de mediana calidad son capaces de leer a 30Mb/sg

eso es mucho mas rapido que cualquier dvd y no digamos nada de los cds, por tanto, las instalaciones a través del usb, suelen ser mucho más rapidas que a través de, por ejemplo, un dvd.

gracias por sus respuestas.

Imagen de jmanuelcool

Amigo alex, revisa el cd o dvd y busca el archivo boot.cfg, menu.cfg o como sea que se llame en esas distros (en mandriva creo que es menu.cfg), ali encontrarás las líneas a copiar en el grub.cfg del multidistro, lo mejor que tiene este grub 2 es la capacidad de arrancar desde iso's (realmente no se si con el grub anterior se podía, pero las veces que lo intenté no pude)

antes usaba windows, ahora puedo vivir

Mi Foro
Mi Blog

Imagen de donchmuyo

seguí los pasos tal cual los indicaste, pero cuando me dirijo a la carpeta no hay .iso que pueda descomprimir. existe otro modo de creara con algún programa con entorno gráfico?? Estoy usando LinuxMint 10, cuya arquitectura es idéntica a la de ubuntu, por consiguiente debería haberlo creado.

bennardis-desktop bennardis # cd /home/bennardis/grubiso
bennardis-desktop grubiso # grub-mkrescue arranque.iso
output file must be given
Usage: grub-mkrescue [OPTION] SOURCE...
Make GRUB rescue image.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  -o, --output=FILE       save output in FILE [required]
  --modules=MODULES       pre-load specified modules MODULES
  --rom-directory=DIR     save rom images in DIR [optional]
  --xorriso=FILE          use FILE as xorriso [optional]
  --grub-mkimage=FILE     use FILE as grub-mkimage
  --diet                  apply size reducing measures [optional]

grub-mkrescue generates a bootable rescue image with specified source files, source
directories, or mkisofs options listed by: xorriso -as mkisofs -help
Option -- switches to native xorriso command mode. or directories.

Report bugs to .
Mail xorriso support requests to .
bennardis-desktop grubiso # 

ese es el texto. alguna idea??

Imagen de PepicoParedes

-> o, --output=FILE save output in FILE [required]: grub-mkrescue necesita la opcion -o -> por tanto quedaria como grub-mkrescue -o arranque.iso

-> Si da error el xorriso instalamos el paquete xorriso -> sudo aptitude install xorriso

-> en isomaster no nos iriamos a /home/[usuario]/grubiso porque hemos trabajado enla carpeta "arranque", por tanto nos vamos a /home/[usuario]/grubiso/arranque

-> No encuentro el archivo grub_eltorito (al menos en debian squeeze) sino boot/gurb/i386-pc/eltorito.bin pero si añado el arranque sin emulacion con este archivo no funciona, además debo borrar el archivo [BOOT]/Bootable_NoEmulation.img que me creo grub-mkrescue, porque si no lo hago acabo con una iso con 2 archivos de este tipo

C:/> sudo rm -r c:/    ...el fin se acerca