El presente DVD permite arrancar varios sistemas operativos independientes y que se suelen distribuir por separado. La idea de Omnibus DVD es incluir cada copia de un CD o DVD original dentro de su propio directorio, de manera que cada sistema queda separado del resto. Puesto en esquema este presupuesto queda así:
/ +-- boot +-- SISTEMA_1 +-- SISTEMA_2 | . | . | . +-- SISTEMA_N
Es decir, un directorio boot para incluir los ficheros necesarios para el arranque y tantos directorios como sistemas albergue el DVD. Dentro de cada uno de ellos, se incluirá un único sistema con los cambios mínimos necesarios para que funcione.
En el arranque caben dos estrategias: un menú que permita arrancar directamente los sistemas incluidos, o bien, un menú que de paso a cada uno de los menús original del sistema. Se opta por lo segundo, ya que se quiere replicar lo más fielmente posible los sistemas originales.
Desgraciadamente, para componer el DVD no basta con hacer una copia del original dentro de su respectivo directorio, sino que son necesarias modificaciones que permitan al sistema arrancar desde un directorio distinto al que ocupaban en el soporte original. El siguiente apartado repasará cuales son cada una de estas modificaciones para que el lector sea capaz de componer él mismo el DVD.
Se necesita elegir una partición que tenga al menos 4,5 GiB libres para contener el árbol de directorios. Una vez hecho eso se crean los subdirectorios necesarios:
usuario:~$ cd /path/al/lugar/elegido usuario:path/elegido$ mkdir -p dvdiso/boot/isolinux
O sea, el directorio donde almacenaremos todo el contenido del DVD (dvdiso) y el subdirectorio que albergará el arranque para lo cual usaremos isolinux, que es posible descargar de la página oficial, pero que es mucho más sencillo obtenerlo de alguno de los cedés que vayamos a incluir. Basta copiar los ficheros isolinux.bin y vesamenu.c32 o menu.c32, según se quiera un menú gráfico o no. Además habrá que escribir nuestro propio menú en un archivo denominado isolinux.cfg.
Debe hacerse notar que como subdirectorio de arranque se ha usado boot/isolinux. Podría haber sido, directamente, isolinux, pero nunca otra ruta u otro nombre distinto: limitaciones de isolinux.
Sea cual sea el sistema que vamos a incluir, siempre deberemos hacer lo mismo con él: incluir en nuestro isolinux.cfg una entrada que lea el fichero isolinux.cfg que se leía cuando el sistema arrancaba en su soporte original.
Por ejemplo, supongamos que incluimos la distribución finnix dentro del directorio FINNIX del DVD. En tal caso, como finix tiene su isolinux.cfg directamente bajo el directorio isolinux la ruta del fichero a leer desde nuestro nuevo isolinux.cfg es /FINNIX/isolinux/isolinux.cfg. Así que deberemos incluir una entrada que tenga esta pinta:
LABEL finnix MENU LABEL ^Finnix KERNEL vesamenu.c32 APPEND /FINNIX/isolinux/isolinux.cfg
Pero no paran aquí los cambios. El isolinux.cfg del sistema original (finnix en este caso) se encarga de cargar el núcleo y muy posiblemente alguna imagen initrd. Estas imágenes suelen encontrarse en el mismo directorio isolinux, de modo que no tienen expresa la ruta. Sin embargo, cuando se arranca con nuestro dvd el isolinux arrancado no es el del sistema orginal, sino el de nuestro dvd y en él no hemos incluido las imágenes. La consecuencia es que isolinux no podrá encontrarlkas y fallará. Así que se hace necesario alterar los isolinux.cfg originales para alterar las rutas. Así en el isolinux.cfg de finnix la entrada:
LABEL finnix MENU DEFAULT MENU LABEL Boot Finnix (x86) TEXT HELP Boot Finnix with a 32-bit kernel in normal 1024x768 pixel mode. ENDTEXT KERNEL linux APPEND apm=power-off vga=791 initrd=minirt quiet
Quedará:
LABEL finnix MENU DEFAULT MENU LABEL Boot Finnix (x86) TEXT HELP Boot Finnix with a 32-bit kernel in normal 1024x768 pixel mode. ENDTEXT KERNEL /FINNIX/isolinux/linux APPEND apm=power-off vga=791 initrd=/FINNIX/isolinux/minirt quiet
En definitiva, estas dos tareas (incluir una entrada en el menú principal y alterar el isolinux.cfg del sistema para cambiar las rutas) serán necesarias siempre. Sin embargo, puede no ser suficiente y que la distribución después de arrancar el núcleo siga fallando al montar el sistema raíz. Los siguientes apartados indican qué ha de hacerse además con cada una de ellas.
No hay que hacer absolutamente nada más. Basta con lo indicado en el procedimiento general.
Existe el parámetro knoppix_dir que se le puede pasar al núcleo, incluyéndolo en la línea APPEND de la entrada del isolinux.cfg, para indicar en dónde se encuentra knoppix. Así pues, si copiamos el cedé dentro de un directorio llamado KNOPPIX, habrá que añadir knoppix_dir=KNOPPIX/KNOPPIX.
Como debian, también está preparada para arrancar desde cualquier directorio.
En su caso el parámetro es live-media-path. Si se copia la distribución en el directorio GPARTED habría que incluir: live-media-path=/GPARTED/live.
Obliga a indicar dónde está el fichero FINNIX que contiene la distribución mediante la inclusión del parámetro finnixfile. Suponiendo que la copiamos en un directorio denominado FINNIX, el parámetro debería ser: finnixfile=/FINNIX/FINNIX/FINNIX.
En su caso el parámetro es from. Así pues incluiremos from=SLAX, si la copiamos en un directorio llamado SLAX.
Esta distribución se basa en slax, de modo que en principio hay que hacer lo mismo y funcionará. El problema está en que con el cambio anterior, aunque la distribución arranque, el programa ophcrack no funcionará, porque será incapaz de encontrar las tablas que usa. La culpa está en el script launch.sh, que se escribió sin pensar en el parámetro from, así que es necesario además parchearlo para que lo tome en cuenta. El parche launch.sh.patch se proporciona en el directorio extras del DVD y es fácil de aplicar:
usuario:dvdiso$ cd OPHCRACK/ophcrack/rootcopy/root usuario:root$ patch -p0 < ../../../../extras/launch.sh.patch
Guadalinex v5 se basa en ubuntu 8.04, así que comparte con ella el script de arranque del sistema: casper. El problema es que casper (o al menos la versión que viene con ubuntu 8.04) no soporta el que la distribución se encuentre en un directorio cualquiera. Como consecuencia no existe ningún parámetro que se le pueda pasar al núcleo y el único camino es parchear casper. El script que se propone (casper.patch) en este DVD permite que la distribución adivine cuál es el directorio de igual modo que hacen geexbox o debian.
La mayor dificultad no está en el proceso de parcheado que es bien sencillo y similar al anterior, sino en hacer accesible casper que se encuentra dentro de la imagen initrd. Así que primero hay que descomprimir y desempaquetar la imagen, después parchear, y, por último, empaquetar y volver a comprimir:
usuario:~$ cd /tmp/ usuario:tmp$ mkdir casper usuario:tmp$ cd casper usuario:casper$ gunzip < /path/elegido/GUALINEX/casper/initrd.gz | cpio -i usuario:casper$ patch -p0 < /path/elegido/extras/casper.patch usuario:casper$ find | cpio -H newc -o > /path/elegido/GUALINEX/casper/initrd.gz
Obsérvese que para el nombre del directorio que contendrá guadalinex se ha elegido GUALINEX: la razón está en que isolinux no funciona con nombres mayores de ocho caracteres. Ignoro si habrá algún parámetro para evitar esta limitación.
Salvo un autorun.inf y un readme, todo se encuentra en un directorio llamado HBCD, así que lo más cómodo es copiar este directorio directamente con tal nombre en nuestro directorio dvdiso. Lamentablemente, por alguna circunstancia que desconozco, no he conseguido hacer arrancar la minilive de xp que incluye. Pero sí la parte de aplicaciones, que es lo realmente útil.
Windows es fácil, claro. Por eso ahora vamos a comprobar qué realmente es así.
Es bastante recomendable crear primero una imagen iso y probarla con una máquina virtual. De lo contrario es bastante probable que nos topemos con errores y hayamos malogrado un dvd. La orden es:
usuario:~$ cd /path/elegido/dvdiso usuario:dvd$ mkisofs -o ../dvd.iso -V Omnibus -J -N -D -l -joliet-long -no-emul-boot -boot-info-table -boot-load-size 4 -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat .
Estas opciones deberían valer para que arranque el instalador de windows, que es el más tiquismiquis. Si no se ha incluido windows, sería recomendable usar Rock Ridge (opción -R).