Introducción

Una de las distribuciones de la palaforma GNU/Linux que más ha dado de que hablar en estos últimos meses es KNOPPIX, un live-CD basado en Debiancon caracterísitcas tales que lo hacen único.

La manera en que KNOPPIX realiza el manejo del sistema de archivos comprimidos mediante la utilización deun kernel modificado permite un uso óptimo de la memoria, perimite que esta distro corra en sistemas con poca capacidad de memoria.

Del mismo modo, la manera tan eficaz en que reconoce y carga los dispositivos de hardware en cualquier sistema y la simplicidad de uso, hacen de esta distro un gran recurso para aquellos usuarios que recién llegan al mundo del S.L.

KNOPPIX no sólo es un CD de demostración, ya que cuenta con las herramientas  necesarias para que un buen hacker se sienta a sus anchas.

Sin embargo, su caracterísitcasmás importante es que puede ser modificado de una manera extremadamente sencilla, lo que permite desarrollar live-CDs especializados que cubran los requisitos de prácticamente para cualquier actividad.

A continuación haremos una breve pero detallada descripción de la manera en que podemos modificar un sistema KNOPPIX a nuestro gusto.


Requerimientos:

Al menos 3 Gb de espacio libre en disco duro
1 Gb en memoria RAM + Swap

Partición de trabajo y copia de archivos

Arrancar Knoppix

Configurar Internet

Abrir una terminal root

Definir la partición a utilizar (ext2, ext3, XFS). No es necesario utilizar una partición en blanco, pero es muy recomendable.

Es necesario editar /etc/fstab quitando las opciones users en la partición que querramos utilizar, en caso de querer hacer chroot (se discutirá más adelante).

Montar la partición a utilizar como lectura/escritura (en este caso se montará /dev/hda1 en /mnt/hda1).

 mount -o rw /dev/hda1 /mnt/hda1

Crear el directorio /mnt/hda1/knx 

mkdir /mnt/hda1/knx

Para crear una archivo swap (en caso de no tener suficiente memoria disponible) siga los siguientes pasos:

cd /mnt/hda1/knx
dd if=/dev/zero of swapfile bs=1M count=750
mkswap swapfile
swapon swapfile

Crear los directorios /mnt/hda1/knx/master, /mnt/hda1/knx/source, /mnt/hda1/knx/master/KNOPPIX, /mnt/hda1/knx/source/KNOPPIX

mkdir /mnt/hda1/knx/master
mkdir /mnt/hda1/knx/source
mkdir /mnt/hda1/knx/master/KNOPPIX
mkdir /mnt/hda1/knx/source/KNOPPIX

Copiar los archivos de /KNOPPIX al directorio /mnt/hda1/knx/source/KNOPPIX

cp -Rp /KNOPPIX/* /mnt/hda1/knx/source/KNOPPIX 

Copiar /cdrom/index.html y en su caso el directorio /cdrom/isolinux a /mnt/hda1/knx/master

cp /cdrom/index.html /mnt/hda1/knx/master
cp -Rp /cdrom/isolinux /mnt/hda1/knx/master en el caso de Knoppix a la Mexicana

Copiar todos los archivos de /cdrom/KNOPPIX/ a /mnt/hda1/knx/master/KNOPPIX/ excepto el archivo KNOPPIX. 

cd /cdrom/KNOPPIX; find . -size -10000k -type f -exec cp -p --parents {} /mnt/hda1/knx/master/KNOPPIX/ \;

Modificaciones del sistema de archivos:

Copiar /etc/resolv.conf a /mnt/hda1/knx/source/KNOPPIX/etc/resolv.conf

cp /etc/resolv.conf  /mnt/hda1/knx/source/KNOPPIX/etc/resolv.conf

Cambiar la raiz de la consola.

chroot /mnt/hda1/knx/source/KNOPPIX (recuerden haber modificado /etc/fstab)

Montar proc

mount proc -t proc /proc

De ahí en adelante tenemos un sistema Debian que utiliza su propio sistema de manejo de paquetes, por lo que es necesario saber utilizar apt-get y los comandos propios de esta distro.

apt-get update 
apt-get remove
apt-get install
apt-get clean
dpkg-query
deborphan

Al terminar de hacer loas modificaciones a los paquetes hay que desmontar /proc

umount /proc

Y salir del chroot con 

exit o <Ctrl-D>

El subdirectorio /etc/skel

Al iniciar el sistema, KNOPPIX descargará la configuración por defecto de cualquier usuario (en este caso, el usuario knoppix) del subdirectorio /etc/skel; por lo que los cambios en la configuración de /etc/skel se reflejarán siempre al reiniciar una sesión con el usuario knoppix (al reiniciar el sistema, todas las modificaciones al entorno del usuario knoppix son destruídas a menos que se defina un directorio home persistente).

Una buena manera de "moldear" las preferencias del usuario por defecto, es realizarlas como el usuario knoppix, identificar dichas modificaciones en los diversos directorios de modificación en /home/knoppix y copiarlos a /mnt/hda1/knx/source/KNOPPIX/etc/skel.

Suponiendo que hicimos varias modificaciones a los favoritos de Mozilla, dichas modificaciones quedarán guardadas en /home/knoppix/.mozilla/Profiles/default/39pb6apd.slt/bookmarks.html

Para que dichas modificaciones sean utilizadas por KNOPPIX, pueden copiar los archivos modificados a /mnt/hda1/knx/source/KNOPPIX/etc/skel. 

Siguiendo el ejemplo:

cp /home/knoppix/.mozilla/Profiles/default/39pb6apd.slt/bookmarks.html /mnt/hda1/knx/source/KNOPPIX/etc/skel/.mozilla/Profiles/default/39pb6apd.slt/bookmarks.html

Afortunadamente existe midnght commander (mc) para hacer este tipo de operaciones un poco menos complicadas. :D

Los scripts del sistema.

/etc/init.d/knoppix-autoconfig

Este script es el que define las variables del entorno de KNOPPIX tales como el teclado, el lenguaje, el país, el administrador de escritorio; la detección de hardware (incluída la configuración de XFree86) y algunas otras configuraciones iniciales.Hay que tener especial cuidado al modificar este script.

/etc/init.d/xsession

Este script define el comportamiento de la sesión X desde su activación, hasta la terminación de la sesión.

Haciendo bonito al Knoppix.

Para cambiar el fondo de pantalla de la sesión X sólo es necesario guardar la imagen que deseemos utilizar como /mnt/hda1/knx/master/KNOPPIX/background.jpg, la cual quedará en /cdrom/KNOPPIX/background.jpg al rehacer el CD. Un tamaño de la imagen de 1024x768 pixeles es recomendable.

La imagen que aparece al iniciar la sesión con KDE debe medir 400x244 pixeles y debe ser guardada como /mnt/hda1/knx/source/KNOPPIX/usr/share/apps/ksplash/pics/splash_top.png la cual quedará en /usr/share/apps/ksplash/pics/splash_top.png al rehacer el CD.

Creando el  sistema de archivo comprimido (cloop).

 Antes que nada es necesario borrar los archivos temporales e históricos que se hayan creado mientras cambiábamos la raíz y posteriormente borramos el archivo /mnt/hda1/knx/source/KNOPPIX/.rr_moved.

rm -rf /mnt/hda1/knx/source/KNOPPIX/.rr_moved 

A continuación se crea el sistema de archivos comprimido, el cual será guardado en /mnt/hda1/knx/master/KNOPPIX/KNOPPIX

 mkisofs -R -U -V "KNOPPIX.net filesystem" -P "KNOPPIX www.knoppix.net" -hide-rr-moved -cache-inodes -no-bak -pad /mnt/hda1/knx/source/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 > /mnt/hda1/knx/master/KNOPPIX/KNOPPIX 

Tanto los nombres KNOPPIX.net filesystem como KNOPPIX www.knoppix.net pueden ser cambiados por cualquier otro.
 
Syslinux e isolinux.

El sistema de arranque mediante CDROM puede echar mano de varias herramienta. La que Knoppix utiliza es syslinux.

Syslinux

Syslinux es una herramienta que reside en una partición msdos (boot.img) y que hace al sistema pensar que se inicia utilizando un disco de 3.5". 

Su mayor ventaja reside en el hecho de que es fácil hacer un discco booteable:

dd if=/mnt/hda1/knx/master/KNOPPIX/boot.img of=/dev/fd0

Su desventaja es que para ser útil, la imagen no debe ser mayor a 1.4Mb 

El archivo que realiza el trabajo de booteo es ldlinux.sys y la configuración del arranque se guarda en syslinux.cfg

Para modificar un sistema con syslinux es necesario montar la imagen boot localizada en /mnt/hda1/knx/master/boot.img.

mkdir /mnt/hda1/knx/boot
mount -t msdos /mnt/hda1/knx/master/boot.img /mnt/hda1/knx/boot -o loop=/dev/loop0

al terminar se debe desmontar el archivo mediante:

umount /mnt/hda1/knx/boot

Isolinux

Isolinux es una herramienta muy similar a syslinux con la diferencia de que ésta reside en un subdirectorio en el CDROM.

Su mayor ventaja consiste en que este subdirectorio puede ser de cualquier tamaño, siendo limitado únicamente por la capacidad del medio en que se almacena.

Su desventaja consiste en que no es posible que el subdirectorio pueda arrancar desde un disco de 3.5"

Es recomendable crear una imagen booteable a partir de syslinux y contar con un subdirectorio isolinux en el CDROM desde el cual éste pueda arrancar.

El archivo que realiza el trabajo de booteo es isolinux.bin y la configuración de arranque se guarda en isolinux.cfg

Para modificar el sistema de booteo no es necesario montar ninguna imagen, sólo se necesita editar el contenido del subdirectorio /mnt/hda1/knx/master/isolinux/
 
Es importante tomar en cuenta que la convención de nombres de archivo debe corresponder con el estándar ISO-9660 en este subdirectorio.

Modificando los archivos de configuración syslinux.conf/isolinux.conf

Los archivos de configuración del sistema de booteo trabajan de forma muy similar a lilo. Para tener mayor información sobre las distintas opciones de configuración pueden visitar la siguiente liga.

http://syslinux.zytor.com/faq.php 


El miniroot.

El archivo miniroot.gz se encuentra tanto en el archivo boot.img (syslinux), como en elsubdirectorio /isolinux (isolinux). Este archivo comprimido y de formato ext2, como su nombre lo indica, contiene un pequeño sistema root con funciones básicas de shell, y  una serie de scripts que permiten la carga del kernel (vmlinuz) y algunos módulos básicos tales como los drivers para dispositivos SCSI e IDE.

Para tener acceso al contenido del archivo miniroot.gz, es necesario hacer lo siguiente: 

En el caso de syslinux:
cp /mnt/hda1/knx/boot/miniroot.gz /mnt/hda1/knx (una vez montado boot.img)

En el caso de isolinux:
cp /mnt/hda1/knx/master/isolinux/miniroot.gz /mnt/hda1/knx

Una vez copiado el archivo es necesario descompromirlo y montarlo:

gunzip /mnt/hda1/knx/miniroot.gz
mkdir /mnt/hda1/knx/mroot
mount /mnt/hda1/knx/miniroot /mnt/hda1/knx/mroot -o loop=/dev/loop1

IMPORTANTE: El kernel de KNOPPIX ha sido modificado de tal modo que haga un uso optimizado del sistema de archivos comprimidos, por lo que si se desea modificar el kernel del sistema es necesario aplicar un parche localizado en /mnt/hda1/usr/src/knoppix-kernel.patch. Debido a que la configuración del kernel puede sobreescribir algunos parámetros es necesario parchar el kernel después de la configuración.

El script linuxrc se encarga de cargar los módulos básicos y de buscar el sistema de archivos comprimido de KNOPPIX. En caso de querer modifcar la carga de estos módulos, es mecesario editar dicho script localizado en /mnt/hda1/knx/mroot/linuxrc

Una vez terminadas las modificaciones al miniroot es necesario desmotarlo, comprimirlo y devolverlo a su lugar:

umount /mnt/hda1/knx/mroot
gzip /mnt/hda1/knx/miniroot

En el caso de isolinux:
cp /mnt/hda1/knx/miniroot.gz /mnt/hda1/knx/master/isolinux 

En el caso de syslinux:
cp /mnt/hda1/knx/miniroot.gz /mnt/hda1/knx/boot


El archivo logo.16 

Al arrancar KNOPPIX aparece una imagen inicial antes de requerir las opciones de arranque del sistema. Dicha imagen se encuentre en el archivo logo.16.

Este archivo se encuentra en la imagen boot (en caso de syslinux) o en el directorio /isolinux (en caso de isolinux) y corresponde a un mapa de bits con una paleta de 16 colores, de formato lss16 y de 640x400 pixeles de tamaño. Para convertir un archivo tipo bmp a uno lss16 hay que seguir los siguientes pasos:

bmptoppm mylogo.bmp > logo16.ppm
ppmtolss16 < logo16.ppm > logo.16 

Donde mylogo.bmp es un archivo de tipo BMP con una paleta de 16 colores.


Haciendo la imagen ISO

Antes de crear la imagen ISO es recomendable actualizar el archivo localizado en /mnt/hda1/knx/master/KNOPPIX/md5sums, el cual contiene las sumas md5 de los archivos contenidos en dicha imagen. Este archivo puede ser utilizado para verificar la integridad de la image ISO que se va a crear.

cd /mnt/hda1/knx/master 

rm -f KNOPPIX/md5sums; find -type f -not -name md5sums -not -name boot.cat -exec md5sum {} \; >> KNOPPIX/md5sums 

En caso de querer hacer una imagen ISO que arranqueel sistema mediante syslinux,se utiliza el siguiente comando:

mkisofs -pad -l -r -J -v -V "KNOPPIX" -b KNOPPIX/boot.img -c KNOPPIX/boot.cat -hide-rr-moved -o /mnt/hda1/knx/knoppix.iso /mnt/hda1/knx/master
 
En caso de querer hacer una imagen ISO que arranque el sistema mediante isolinux se utiliza el siguiente comando:

mkisofs -pad -l -r -J -v -V "KNOPPIX" -b isolinux/isolinux.bin -c isolinux/boot.cat -hide-rr-moved -no-emul-boot -boot-load-size 4 -boot-info-table -o /mnt/hda1/knx/myknoppix.iso /mnt/hda1/knx/master

Donde el nombre KNOPPIX  y el nombre de archivo  knoppix.iso pueden ser cambiados por cualquier otro.
 

Para mayor información pueden utilizar las siguientes ligas:

http://developer.linuxtag.net/knoppix/sources/ 
http://www.knoppix.net/docs/index.php/KnoppixCustomKernelHowto 
http://www.knoppix.net/docs/index.php/KnoppixRemasteringHowto