http://www.chiquete.com.mx/knoppix/hack_knoppix.htmlIntroducciónUna 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 Debian con características tales que lo hacen único.
La manera en que KNOPPIX realiza el manejo del sistema de archivos comprimidos mediante la utilización de un kernel modificado, permite un uso óptimo de la memoria y hace 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ísitca má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 archivosArrancar Knoppix
Configurar Internet
Abrir una terminal root
Identificar o crear la partición en el disco duro 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 /cdrom/KNOPPIX/KNOPPIX
cd /cdrom/KNOPPIX; find . -size -10000k -type f -exec cp -p --parents {} /mnt/hda1/knx/master/KNOPPIX/ \;
La línea anterior busca y copia todos los archivos de tamaño menor a 10 Mb localizados en /cdrom/KNOPPIX y los copia en /mnt/hda1/knx/master/KNOPPIX/, siendo que el archivo /cdrom/KNOPPIX/KNOPPIX mide más de 600Mb, éste será descartado.
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 raíz de la consola.
chroot /mnt/hda1/knx/source/KNOPPIX (recuerden haber modificado /etc/fstab, de lo contrario recibiran varios mensajes de error)
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 las modificaciones a los paquetes hay que desmontar /proc
umount /proc
Y salir del chroot con
exit o <Ctrl-D>
El subdirectorio /etc/skelAl 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.
Los scripts del sistema./etc/init.d/knoppix-autoconfig
Este script es el que define las variables del entorno de KNOPPIX tales como la distribución de teclado, el usuario por defecto, 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 modificamos el sistema al cambiar de 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, mientras que KNOPPIX a la Mexicana utiliza isolinux.
SyslinuxSyslinux 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
IsolinuxIsolinux 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.confLos 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#configModificando el teclado al arrancar.Una de las opciones de configuración del archivo syslinux.conf/isolinux.conf de mayor utilidad para usuarios extranjeros es KBDMAP, esta opción permite la utilización de una distribución de teclado distinta al teclado norteamericano. Sin embargo, es necesario crear un archivo que incluya esta distribución de teclado.
Para crear un archivo de distribución de teclado adecuado es necesario utilizar el script keytab-lilo.pl que viene con lilo (aunque no es necesario que lilo sea utilizado como el cargador de arranque).
Al ejecutar
/usr/sbin/keytab-lilo.pl la-latin1 > latin.kbd
Creará un archivo llamado latin.kbd a partir de la distribución de teclado la-latin1 (el teclado latinoamericano).
En el caso de syslinux hay que copiar latin.kbd dentro de la imagen boot que hemos montado con anterioridad.
cp latin.kbd /mnt/hda1/mnt/knx/boot
En el caso de isolinux hay que copiar latin.kbd dentro del directorio /isolinux.
cp latin.kbd /mnt/hda1/knx/master/isolinux
Una vez que tenemos el archivo latin.kbd en su lugar, editamos el archivo syslinux.conf o isolinux.conf (dependiendo del caso) y añadimos la siguiente línea:
KBDMAP latin.kbd
El archivo latin.kbd contiene una distribución de teclado simplificada que si bien no define todo el mapa de caracteres contenido en la-latin1.map.gz, al menos permite encontrar en el lugar correcto los caracteres más utilizados al definir las opicones de arranque.
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 corresponde 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 ISOAntes 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 arranque el 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.
ReferenciasPara mayor información pueden utilizar las siguientes ligas:
LinuxTag/Knoppix/sources
http://developer.linuxtag.net/knoppix/sources/Knoppix Custom Kernel Howto
http://www.knoppix.net/docs/index.php/KnoppixCustomKernelHowtoKnoppix Remastering Howto
http://www.knoppix.net/docs/index.php/KnoppixRemasteringHowto