miércoles, 11 de marzo de 2009

Crear nuestra propia distribucion de guadalinex

Las aplicaciones de este procedimiento pueden ser muy variopintas, ademas de aprender claro está. Supongamos el caso de que queremos una versión live con una selección de paquetes personalizada, por ejemplo, con algún analizador de tráfico, alguna utilidad de la wifi o porque queremos la imágen para reparar otros pcs y no queremos ni el oppenoffice, ni el ekiga ni nada por el estilo... o bien nos ocurre que instalamos guadalinex en PCs sin internet y siempre lo tenemos que dejar desactualizado... Todo esto se puede corregir creando una distribución nueva de guadalinex a nuestra medida:


Una solución facil sería montar un usb live e instalar allí toda la lista de paquetes, vale, correcto, pero que pasa cuando nuestro usb es de 1 Gb y necesitamos liberar espacio para instalar los paquetes que necesitamos, o queremos simplemente cargarlo en un cd porque otras máquinas no disponen de arranque usb, o simplemente no queremos esos paquetes...

Entonces es cuando nos encontramos con la frase " el sistema de ficheros se almacena en un fichero tipo squashfs". Bien, el arranque via CDrom descompacta el filesystem.squashfs creando nuestro sistema, pero el filesystem.squashfs no se modifica por mucho que borres programas". El primer reto por lo tanto será descomprimir el archivo squashfs y aprender a modificarlo.

Precondiciones:

  • Una máquina con guadalinex V3 o superior, tambien funciona con ubuntu 6.10 o mayor.

  • Unos 3-5 GB de espacio libre.

  • CD o imagen ISO de guadalinex mejor la V5 yo lo he hecho con la version DVD por lo que con la ISO CD 1 de arranque no debe haber ningun problema.

  • Tener instalados los paquetes squashfs-utils y mkisofs.

    Si no los tuvieramos o no lo supieramos, ejecutamos en una consola las dos siguientes lineas:

    $ apt-get install squashfs-tools
    $ apt-get install mkisofs

  • Una conexión establecida a internet desde nuetro sistema.

Como se trata de un proceso bastante complejo, es necesario tomarselo con paciencia releerlo varias veces y una vez comprendido todo ponerse manos a la obra.

Debido a la complejidad vamos a utilizar directorios con nombres bastantes sugerentes para no liarnos, parece algo redundante trabajar con carpetas de contenido similar pero recordemos que los archivos iso y squashfs se montan como de solo lectura por lo que no podemos escribir en ellos y se debe realizar una copia exterior para su modificacion.

/miguadalinex -> Donde copiaremos todos los archivos de la iso, aqui reescribiremos el filesystem.squashfs modificado y será la ruta que utilizaremos para montar la iso modificada. Situada en nuestro home

/misquashfs -> Donde copiaremos los archivo de la imagen squashfs montada para modificarlos. Situada en nuestro home

/mnt -> Donde se montará la imagen de la iso o Cdrom de guadalinex V5. Una vez copiados los datos se desmontará para montar a continuacion el archivo squashfs. Se pueden crear carpetas diferentes incluso en el home para ir realizando los montajes, pero si ya existen una carpeta /mnt para estos menesteres y los montajes son momentaneos para que rizar el rizo...

Proceso de Creación:

1- Inicializaciones. Abrimos un terminal y situados en nuestro home, creamos las carpetas donde iran las copias de los archivos.

* Todo el proceso se realiza situados en nuestro $home, sin movernos de el salvo comandos que nos redirijan directamente, luego se vuelve automaticamente.

# mkdir miguadalinex

# mkdir misquashfs

2-Montamos la imágen iso en /mnt y copiamos los archivos a nuestra carpeta miguadalinex. Una vez concluido desmontamos.

# sudo mount -o loop guadalinex-v5-dvd.iso /mnt

# cp -dpR /mnt/* ./miguadalinex

# sudo chmod +w miguadalinex -R

# sudo umount /mnt/

3-Montamos el fichero squash en la carpeta /mnt y copiamos los archivos a nuestra carpeta misquashfs. Una vez concluido desmontamos.

# sudo mount -t squashfs -o loop miguadalinex/casper/filesystem.squashfs /mnt

# cp -dpR /mnt/* ./misquashfs

# sudo umount /mnt/

4- Asumimos el contenido de misquashfs como nuestro sistema. Así podremos instalar desistalar y modificar lo que creamos oportuno.

Como no hay nada configurado/actualizado,y necesitaremos internet, copiamos la configuración del pc 'host' al etc del futuro squashfs.

# sudo cp /etc/resolv.conf misquashfs/etc

Ahora es cuando simulamos que nuestro sistema es el contenido del archivo squashfs descomprimido en nuestra carpeta misquashfs. Esto se consigue con el comando chroot, con él la consola actual creerá que está en el host, pero en realidad estará en la copia del sistema que carga el arranque live.

# sudo chroot misquashfs

Notareis que el promt cambiar a root@guadalinex:/ # conseguido! la consola actual toma el contenido como nuestro sistema de archivos y nos situa en el directorio raiz, no tendría sentido esta mas atrás del /

Para que ciertos programas funcionen correctamente, los sistemas de ficheros proc y devpts deben estar disponibles dentro del entorno chroot. El sistema de ficheros proc es el pseudosistema de ficheros de información de procesos a través del cual el núcleo suministra información sobre el estado del sistema. Y el sistema de ficheros devpts es hoy en día el método más común para implementar los pseudoterminales (PTYs). Desde la versión 2,4 del núcleo, un sistema de ficheros se puede montar tantas veces y en tantos lugares como quieras, así que no hay problema en que estos sistemas de ficheros estén todavía montados en tu sistema anfitrión, sobre todo porque son sistemas de ficheros virtuales.  # mount -t proc proc proc # mount -t devpts devpts dev/pts Udev interacciona con el núcleo a través del pseudo-sistema de archivos sysfs.
El proyecto libsysfs proporciona una API común para acceder de forma genérica a la información dada por el sistema de archivos sysfs. Esto permite consultar todo tipo de hardware sin tener que hacer suposiciones acerca de su tipo.
Esto esta sacado de un howto pero sinceramente no me deja muy claro para que sirve, ni porque es imprescindible montarlo pero es así. # mount -t sysfs sys sys

Ya tenemos el sistema completamente montado y preparado...

5- Aplicamos los cambios necesarios en el sistema. Este es el apartado más creativo aquí cada cual realiza las operaciones que cree necesaria, hechazle imaginación!!

Yo os pongo algunas de las cosillas que he tocado...

Lo primero actualizamos todos los paquetes para que el sistema de nuestro Cdrom esta actualizado y no tengamos que soportar 250/300 Mb de descargas, ideal para los que tengan conexiones lentas.

$ apt-get update

$ apt-get upgrade

Configuramos la imagen con los programas que deseemos, aquí os dejo los mios:

La suite de aircrack. No comment!! jeje

$ apt-get install aircrack-ng

Un gestor de archivos torrent algo mas currado y configurable que bittorrent y sin pasarse como vuze (Que moustro de programa!!)

$ apt-get install deluge-torrent

Gestor de bases de datos del openoffice

$ apt-get install openoffice.org-base

Reproductor de sonido versátil y fácil de usar para KDE

# apt-get install amarok

Genial y sencillo reproductor multimedia y streaming

# apt-get install vlc

Emulador de terminales muy comodo de usar.

# apt-get install yakuake

Gestor de maquinas virtuales.

# apt-get install virtualbox-ose

Gestor de particiones similar a partitionmagic

# apt-get install qtparted

Utilidades para desarrollar este tipo de procedimientos (vease el inicio. Prerequisitos)

# apt-get install squashfs-tools
# apt-get install mkisofs

Paquete de acrobat reader que por problemas de licencias no incluye guadalinex por defecto. Ya se incluye un visor por defecto de pdf pero algunos documentos con formularios rellenables y opciones especiales requieren de esta biblioteca.

# apt-get install acroread

# apt-get install acroread-escript

Descompresor winrar algunos archivos rar no lo controla del todo bien el descompresor por defecto. Tambien por problemas de licencias no es incluido por defecto.

# apt-get install unrar

Pluguin no libre de flash para paginas web.

# apt-get install flashplugin-nonfree

Un emulador para comprobar directamente la carga de los isos.

# apt-get install qemu

Programa para escanear documentos.

# apt-get install xsane

Instamos un editor de imagenes como Dios manda

# apt-get install gimp

6,- Limpieza y salida. Una vez realizados todos los cambios vamos a limpiar todos aquellos archivos que hemos dejados en nuestro nuevo sistema live. Vamos a ser limpitos... y hacer las cosas bien.

Borramos los ficheros que se hayan ido creando

$ rm -rf /tmp/*

Los paquetes deb que hayamos descargados y estén en la cache:

$ apt-get clean

Y finalmente desmontamos los sistemas de ficheros especiales y salimos del chroot

$ umount proc
$ umount sys
$ umount devpts

Regeneramos el manifest (lista de los paquetes instaldos en el sistema del sistema), los necesitaremos despues. Como es necesario un chroot y ya estamos en el, aprovechamos...

# dpkg-query -W --showformat='${Package} ${Version}\n' > filesystem.manifest Y salimos del sistema, es decir de la orden chroot. $ exit

7.- Creamos nuestro nuevo archivo live. Es decir, empaquetamos nuestro directorio misquashfs en un nuevo archivo filesystem.squashfs

Movemos el manifest de actualizaciones de nuestro sistema a nuestra futura distribución guadalinex.

# sudo mv ./misquashfs/filesystem.manifest ./miguadalinex/casper/filesystem.manifest

Generamos el nuevo archivo filesystem.squashfs es un proceso largo, asi que aprovechamos para ir al baño o tomarnos un café:

# sudo mksquashfs ./misquashfs filesystem.squashfs

y lo copiamos el fichero filesystem.squashfs al directorio casper de nuestra nueva distrubucion guadalinex:

# sudo cp filesystem.squashfs miguadalinex/casper/

8.- Configuramos nuestra nueva distribución. Cambiamos aquellas cosas que deseemos y configuramos el futuro Cdrom o Iso para todos los cambios realizados en nuestra live se apliquen tambien al instalar.

Cambiamos el nombre a nuestra iso

# sudo gedit miguadalinex/README.diskdefines

Este es otro punto totalmente creativo, mirad investigar y cambiar todo aquello que querais...

Teniendo en cuenta que hemos instalado mucho software una opción interesante sería quitar los programas de instalación de windows borrandolos de mylive/mnt/programs.

Cuando se ejecuta el instalador del CD de escritorio, lo copia todo al sistema objetivo, pero después hace limpieza y elimina los paquetes que no estén en un segundo fichero llamado filesystem.manifest-desktop. Así se evita que en la instalación se incluya el propio instalador, por ejemplo.

Recordemos ya teniamos el manifest actualizado en miguadalinex/casper por lo tanto lo copiamos como filesystem.manifest-desktop para que la instalación tenga todos los paquetes actualizados.

Podemos filtrar el manifest con un script de sed. Creamos un fichero /tmp/filtro con este contenido:

/casper/d /libdebian-installer4/d /os-prober/d /ubiquity/d /ubuntu-live/d /user-setup/d

# sudo sed -f filtrodesktop miguadalinex/casper/filesystem.manifest > miguadalinex/casper/filesystem.manifest-desktop

Por ultimo Calculamos las sumas MD5

# sudo find miguadalinex/. -type f -print0 | xargs -0 md5sum > miguadalinex/md5sum.txt

9-Empaquetamos una iso con todo el mylive/mnt

#sudo mkisofs -J -R -o miguadalinexV0803.iso -no-emul-boot -boot-info-table -b isolinux/isolinux.bin miguadalinex/

10.- Probamos la Iso. Bien grabamos el CD/DVD según el tamaño final y lo probamos o podemos probar la imagen creada con Qemu con lo que nos ahorraremos discos en caso de haber metido la pata.

$ qemu -cdrom miguadalinexV0803.iso -boot d

En el caso de tener un Usb de arranque de nuestra distro de guadalinex es posible aplicar todos los cambios a media/disk/ en lugar de al directorio miguadalinfo. Así nos ahorrariamos crear y la iso y grabarla.


1 comentario:

  1. No veas como te has "currao" el post!!! Na más que por to el trabajazo que te has dado merece la pena crearte tu propia distribución. Por cierto, algunos comandillos traen tela, pedazo linuxero.

    ResponderEliminar