Resucito el hilo, porque me he metido a hacerme un dvd multiarranque y he logrado una mejora a lo aquí expuesto: lograr meter meter el livecd de cada distribución dentro de su propio directorio del dvd.
Lo he hecho, por ahora, con finnix, slax y gparted (que son independientes entre ellas en el desarrollo, de modo que cada una tiene un script de arranque diferente). La estructura del dvd es:
/
|--- isolinux
|---- FINNIX
|---- GPARTED
|-----SLAX
El directorio "isolinux" tiene exclusivamente el arranque que me permite la elección de cada livecd (tres ficheros: isolinux.bin, isolinux.cfg y vesamenu32) y cada uno de los restantes directorios el contenido de las isos.
De los tres ficheros de arranque, isolinux.bin y vesamenu32 se pueden copiar de cualquiera de los livecd, isolinux.cfg en cambio lo tengo que escribir yo:
DEFAULT vesamenu.c32
PROMPT 0
MENU TITLE MULTIBOOT-DVD
LABEL FINNIX
MENU LABEL FINNIX-0.92
KERNEL vesamenu.c32
APPEND /FINNIX/isolinux/isolinux.cfg
LABEL SLAX
MENU LABEL SLAX 6
KERNEL vesamenu.c32
APPEND /SLAX/boot/slax.cfg
LABEL GPARTED
MENU LABEL GPARTED 0.3.9
KERNEL vesamenu.c32
APPEND /GPARTED/isolinux/isolinux.cfg
Ahora toca alterar cada uno de los isolinux.cfg que hay en los directorios de arranque de los livecd. Básicamente consiste en cambiar las líneas KERNEL y APPEND para que se encuentre el núcleo de linux y la imagen initrd correspondiente. Por ejemplo, en /SLAX/boot/slax.cfg una de las entradas dice:
LABEL xconf
MENU LABEL Slax Graphics mode (KDE)
KERNEL
vmlinuzAPPEND initrd=
initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=
/slax/TEXT HELP
Obviamante si la dejase así no se encontrarían "vmlinuz" ni "initrd.gz", porque ya no se encuentran en el directorio donde está el isolinux que arrancó. No hay problema, se indica la ruta absoluta y ya está:
LABEL xconf
MENU LABEL Slax Graphics mode (KDE)
KERNEL
/SLAX/boot/vmlinuzAPPEND initrd=
/SLAX/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=
/SLAX//slax/TEXT HELP
Supongo que se habrá captado la idea. Esto hay que hacerlo con todas las entradas de todos los ficheros de configuración de arranque de las distros que hemos incluido.
Si en este punto hacemos la imagen:
mkisofs -R -J -o ../dvdboot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
Obtendremos siempre un bonito kernel panic (o mensaje similar, según esté programado el arranque de la distribución). ¿Por qué razón? Porque una vez cargado el núcleo y la imagen initrd, la distribución intenta montar el árbol de directorios, que es un fichero con el sistema de ficheros comprimido squashfs y, claro, el nuestro no está en el lugar original. La gracia es que, de las tres distribuciones que he estudiado, las tres tienen un parámetro que se le pasa al kernel para cambiar esa dirección por defecto (de lo contrario, habría que alterar su initrd, pero no he llegado a tal extremo). Pues bien, estos parámetros son:
* "from=" en SLAX
* "finnixfile=" en FINNIX
* "live-media-path=" en GPARTED.
Así que tal y como he creado yo mi estructura, los parámetros a pasar respectivamente serían:
* from=SLAX
* finnixfile=/FINNIX/FINNIX/FINNIX
* live-media-path=GPARTED/live
Por ejemplo, la entrada de SLAX que antes cité quedaría al final:
LABEL xconf
MENU LABEL Slax Graphics mode (KDE)
KERNEL
/SLAX/boot/vmlinuzAPPEND initrd=
/SLAX/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/SLAX//slax/
from=SLAXTEXT HELP
Y listo: el dvd multiarranque con todo bien ordenadito. Obviamente se podría limpiar un poco y quitar todos los isolinux.bin que sobran, también los memtest de cada distribución y dejar uno sólo en el isolinux.cfg principal, etc, pero esto son sólo detallitos que nos ahorraran poco espacio.
Lo suyo es que ahora contribuyeseis descubriendo cuál es el parámetro para el resto de vuestras livecd favoritas (knoppix, ubuntu, etc.).
EDITO:
* GEEXBOX no necesita ningún parámetro.
* El parámetro de KNOPPIX es "knoppix_dir", así que habría que añadir al APPEND knoppix_dir=KNOPPIX/KNOPPIX (si se metiese el contenido de la knoppix dentro de un directorio que se llamase KNOPPIX, obviamente).