Crear un CD/DVD arrancable con un menú de GRUB | Algo de Linux

domingo, 30 de noviembre de 2008

Crear un CD/DVD arrancable con un menú de GRUB

Habitualmente, uso muchas herramientas que vienen en un live cd y ocupan menos de un CD-ROM. Como me resultaba incómodo tener un montón de CD's, hace tiempo me puse a ver la posibilidad de recopilarlas juntas en un CD o DVD, haciendo un menú que me permitiera seleccionar la que quería arrancar.

Hay varias posibilidades, pero la que más me gustó fue usar GRUB, que conozco perfectamente, ya que está disponible en cualquier distro linux.

Para arrancar un CD o DVD con menú, lo único que necesitamos es un fichero llamado stage2_eltorito y un fichero de configuración: un menu.lst.
No necesitamos usar stage1 o stage2, porque el arranque del sistema El Torito es bastnante diferente del proceso de arranque estándar, que ya explicaré, más adelante, en otra entrada del blog.

Veamos cómo crear una imagen de CD/DVD arrancable con GRUB:

1) Primero, para ser un poco organizados, creamos un directorio, donde pondremos todo lo que queramos que incluya la ISO de nuestro CD/DVD:

$ mkdir midisco

Por supuesto, añadimos a este directorio todos los live-cd o floppys que queramos que nuestro disco vaya a tener, organizados como más nos guste.

2) Dentro del directorio, creamos un subdirectorio para GRUB:

$ mkdir -p midisco/boot/grub

Nota: Pasando el parámetro -p a mkdir, se crean todos los directorios padre que falten (no sólo el directorio grub). En el ejemplo, al crear el directorio grub, se crea también el directorio boot, si no existe.

3) Una vez creados los directorios, copiamos el fichero stage2_eltorito. Si tenéis grub instalado en vuestra máquina lo tendréis. En mi máquina se encuentra en el directorio: /lib/grub/i386-pc/
Si no lo tenéis en el mismo sitio, buscadlo con el comando find o con locate.

$ cp /lib/grub/i386-pc/stage2_eltorito midisco/boot/grub

Con ésto, nuestro CD/DVD ya será arrancable mediante grub, pero como lo que queremos hacer es crear un menú que nos permita arrancar diferentes sistemas almacenados en el CD/DVD, crearemos un fichero menu.lst y lo guardaremos en /boot/grub/menu.lst:

$ nano midisco/grub/menu.lst

Como no tengo tanta memoria para recordar todas las cosas diferentes con las que trabajo, en lugar de crear el fichero menu.lst desde cero, lo que suelo hacer es utilizar como modelo un menu.lst, por ejemplo, el que tiene instalado mi máquina y modificarlo para personalizar los sistemas a arrancar.

El último paso, después de añadir todo lo que queremos que contenga nuestro disco, y personalizar el sistema de arranque, sería crear un fichero ISO. Para ello, nos situamos en el directorio en el que tenemos creado el directorio midisco y ejecutamos el siguiente comando:

$ mkisofs -no-iso-translate -U -nobak -R -b boot/grub/stage2_eltorito -no-emul-boot \ -boot-load-size 4 -boot-info-table -o midisco.iso midisco

Como no es fácil de recordar el comando con todos sus parámetros, yo lo tengo hecho en un script bash:

#!/bin/bash
# creaiso.sh
# Create bootable ISO from files in curent directory.
mkisofs -no-iso-translate -U -nobak -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o midisco.iso midisco

Tras ejecutarlo, tendremos un fichero llamado midisco.iso que podremos grabar en un CD o DVD.

Como no nos cuesta nada, pasamos a mkisofs el parámetro -boot-load-size 4, necesario para mantener compatibilidad con las BIOS de máquinas antiguas.

2 comentarios:

Guillermo dijo...

Hola, estaba leyendo tu blog y está muy interesante, pero me parece que faltan unas cuantas cosas, por ejemplo, en el archivo midisco que pones imágenes .iso o archivos? Luego en menu.lst qué fichero sería el kernel? Y así unas cuantas cosas más. Me podrías ayudar a crear una imagen .iso autoarrancable de varias aplicaciones que tengo?

Fede...El Tecnico dijo...

Es muy interesante tu explicacion del tema de los multi boots, pero como dijo guillermo, le faltan pequeños detalles, mi idea es colocar todos los isos de los livecd que utilizo para trabajar en un solo live-dvd y desde un menu poder elegir con que iso quiero que inicie el equipo, esto es posible con grub?.....estuve leyendo en otros foros de tema grub, pero no encontre ejemplos claros o aplicables a lo que yo quiero, espero puedas postear algo referido a mi comentario, Saludos, Fede. te paso mi blog por las dudas
http://www.touchsystem.blogspot.com/ Gracias.