Personalizar distribución de Ubuntu Live CD

Existen varias formas de personalizar una distribución Linux (o como se le debería llamar realmente, GNU/Linux), pero este artículo en particular se enfoca en personalizar la distribución Ubuntu en su versión Live CD.

Existen entonces, varias aplicaciones para realizar este proceso, como Reconstructor [1] o UCK (Ubuntu customization kit) [2].

Nosotros no utilizaremos tales aplicaciones, ya que le quitarían la diversión al asunto, por lo tanto veremos una serie de pasos, los cuales son una mezcla de métodos recolectados por varios foros y tutoriales, más aportes de mi parte para facilitar la creación de la distro, pudiendo personalizarla utilizando el entorno GNOME, y no solo mediante el uso de la consola.

Por último, vale aclarar que si bien no es un proceso muy complicado, tampoco es nada trivial, pero creanme, se adquieren invaluables conocimientos y una gran satisfacción !


Nomenclatura

editar

Todo texto que aparezca en color Verde hace referencia a un comando de consola (bash).

Plan de trabajo

editar

Los pasos generales para crear una distro de Ubuntu Live CD personalizada son los siguientes:

  • Obtener la imagen (.iso) del Live CD de Ubuntu (para este documento se utilizó la versión 8.04).
  • Descomprimir dicha imagen
  • Crear una jaula chroot con lo necesario para personalizarla
  • Personalizar la distro
  • Comprimir la nueva distro personalizada
  • Crear la imagen (.iso) de la nueva distro personalizada


Preparar el entorno de trabajo

editar

Lo primero que tendremos que hacer es conseguir la imagen del Live Cd, la cual se puede descargar desde la página de Ubuntu [3]
Luego necesitaremos instalar el squashfs para así poder descomprimir y comprimir la distro.
Para ello ejecutaremos el siguiente comando en la consola

sudo apt-get install squashfs-tools genisoimage qemu kvm

Ahora cargamos el modulo de squashfs

sudo modprobe squashfs

Nos crearemos una carpeta con el nombre que queramos

mkdir UbuntuPersonalizado
cd UbuntuPersonalizado

Esta carpeta que acabamos de crear debe contener la imagen del Ubuntu.

Una vez hecho esto debemos crear un directorio de trabajo y montar la imagen de Ubuntu

NOM_IMAGEN="ubuntu-8.04.1-desktop-i386.iso"
mkdir backupISO
cd backupISO
mkdir mnt
sudo mount -o loop ../$NOM_IMAGEN mnt

Seguido crearemos una carpeta llamada extraer-cd y extraeremos en ella el contenido de la imagen utilizando el comando rsync

mkdir extraer-cd
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extraer-cd

Montaremos ahora el sistema de archivos (filesystem) squashfs

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

Por último extraeremos el contenido de squashfs en una nueva carpeta llamada edit

mkdir edit
sudo cp -a squashfs/* edit/


Preparado el entorno de trabajo, pasaremos ahora a preparar la jaula donde personalizaremos la distro.

Preparar la "jaula" (chroot)

editar

Una de las tantas modificaciones que podemos hacerle a la distro es la de instalar y/o remover aplicaciones.
Para ello necesitaremos copiar archivos de configuración necesarios para tener conexión a internet

sudo cp /etc/resolv.conf edit/etc/
sudo cp /etc/hosts edit/etc/

Ahora copiaremos los archivos necesarios para levantar el GNOME

sudo /etc/init.d/networking restart
sudo cp /etc/X11/xorg.conf edit/etc/X11/

Seguido montaremos los dispositivos necesarios para operar en la jaula y accederemos a ella.

sudo mount --bind /dev/ edit/dev
sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys

Ahora setearemos variables de sistema

export HOME=/etc/skel/
export LC_ALL=C


Seguidos estos pasos, nos encontraremos ahora dentro de la jaula, es decir, estamos en la distro que vamos a modificar.
Notemos que es como estar en otro sistema operativo, ya que recordemos la jaula cambia el directorio raíz, y esta la hemos creado con la carpeta edit como el directorio raiz, recordando nuevamente que edit tiene el contenido del squashfs, es decir la distro del Ubuntu Live CD como si estuviese instalada.

Crearemos ahora los dispositivos genéricos

cd /dev/
MAKEDEV generic

En este punto solo nos restaría iniciar el gdm y empezar a personalizar la distro, pero previo a esto debemos crear un usuario para poder acceder al sistema, y más importante aún, permitirle a este ejecutar comandos como root, es decir, que pueda utilizar el comando sudo

Por lo tanto creamos un usuario cualquiera (heber en este caso)

adduser heber

Y le agregamos la posibilidad de ejecutar comandos como root. Esto lo logramos agregando una línea al archivo /etc/sudoers, el cual contiene los usuarios que pueden utilizar el comando sudo. Es importante aclarar que para editar este archivo, se recomienda utilizar el editor visudo, ya que a grandes rasgos controla que no cometamos error sintacticos, etc.

Para editar el archivo /etc/sudoers, ejecutamos el siguiente comando

visudo -f /etc/sudoers

Una vez abierto el visudo, agregaremos la siguiente línea debajo del bloque # User privilege specification, sabiendo que utilizar el editor visudo es igual que utilizar el editor vi, es decir, utiliza los mismos comandos de acciones, como por ejemplo ESC -> :wq para salir guardando los cambios

heber ALL=(ALL) ALL

Debería quedar algo así



# /etc/sudoers
# # This file MUST be edited with the 'visudo' command as root.
# # See the man page for details on how to write a sudoers file.
#

Defaults env_reset

# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL) ALL
heber ALL=(ALL) ALL


Una vez creado el usuario y asignado el permiso para ejecutar comandos como root, solo resta iniciar el gdm

/etc/init.d/gdm start

Luego de ejecutado el comando anterior, se nos iniciará el GNOME en otra terminal (generalmente la 9 o 10), seguido aparecerá la ventana de inicio de sesión, donde elegiremos el idioma que queramos (Desde el menú Config ubicado en la esquina inferior izquierda), e iniciaremos sesión con el usuario creado (heber en este caso).
Si cambiamos el idioma que venía por defecto (generalmente Inglés), nos preguntará si queremos que el nuevo idioma seleccionado (ejemplo: Español) sea el idioma por defecto, le diremos que si.


Personalizar la distro

editar

Iniciada la sesión del nuevo usuario nos encontraremos en un escenario muy familiar... el escritorio por defecto de Ubuntu.
Aquí es donde empieza a jugar nuestra creatividad y comenzamos a personalizar la distro.

Qué podemos personalizar ?

  • Aplicaciones: Las aplicaciones que tendrá la distro.
  • GTK : La apariencia de las ventanas, cursores, iconos, fondo de escritorio, tipo de letra, apariencia del menú, etc.
  • GDM : Se le llama GDM también a la ventana de Login, donde nos pide usuario y contraseña.
  • Usplash : La pantalla que se muestra cuando se está cargando el sistema operativo y cuando este se está cerrando.
  • Imagen del menú de instalación del Live CD

Se recomienda totalmente visitar el sitio gnome-look [4] donde encontraremos una inmensidad de temas GTK, iconos, cursores, fondos de escritorio, temas GDM, Usplash, etc.

Es conveniente además, que todo archivo, ya sea un conjunto de iconos, cursores, fondo de escritorio, etc. que descargemos y utlizemos como tema, lo guardemos en una carpeta común a todos los usuarios, y desde allí los instalemos.

Por ejemplo, ejecutamos en consola el siguiente comando para inciar el nautilus como root

gksudo nautilus

Ahora creamos una carpeta llamada archivos-de-heber en /usr/share/. Esta carpeta es donde descargaremos y guardaremos todo lo relacionado con la parte visual de nuestra distro.

Aplicaciones

editar

Existen varias formas de instalar y/o desinstalar aplicaciones.
Podemos hacerlo utilizando por ejemplo el Gestor de paquetes Synatpic ubicado en el menú Sistema -> Administración -> Gestor de paquetes Synatpic
O mediante la consola utilizando el comando apt-get

Veamos como desinstalar el maravilloso editor gráfico GIMP (Solo a modo de ejemplo ya que realmente jamás lo eliminaría de mi sistema :) )

apt-get remove --purge gimp

La opción --purge, como dice el manual del apt-get borra los archivos de configuración de todos los paquetes que sean desinstalados

Ahora para instalar por ejemplo la aplicación nmap ejecutaríamos lo siguiente

apt-get install nmap


Para personalizar todo lo que respecta a la visual del GNOME, abrimos la aplicación de apariencia ubicada en el menú Sistema -> Preferencias -> Apariencia
O mediante el comando

gnome-appearance-properties %F

Aqui podremos personalizar la apariencia de las ventanas, los iconos y cursones utilizados, el fondo de pantalla, etc.

1- Oprimimos en Personalizar...

 

2- Personalizamos la apariencia a nuestro gusto
3- Por último guardamos el nuevo tema con el botón Guardar como...

 


  • Como instalar un paquete de iconos y/o cursores ?

Obtenemos el conjunto de iconos o cursores empaquetados (en un .tar.gz por ejemplo) y lo arrastramos hasta la pestaña tema de la ventana de Apariencia.


  • Puede llegar a ser muy interesante personalizar la barra del menú. Por ejemplo:
1- Botón derecho sobre la barra del menú y seleccionamos Panel nuevo.
2- Lo ubicamos donde queramos, por ejemplo contra la izquierda de la pantalla.
3- Botón derecho sobre la nueva barra de menú y seleccionamos Propiedades.
4- En el cuadro de Propiedades seleccionamos la pestaña Fondo, luego seleccionamos la opción Color sólido y disminuimos al mínimo la barra de Estilo.

Nuestro menú ahora es transparente. Seguido agregamos todo lo que queramos oprimiendo el botón derecho sobre nuestro nuevo menú transparente y seleccionamos la opción Añadir al panel...


Para la ventana de Login, nos descargamos una de gnome-look [5] (recordando almacenarla en /usr/share/archivos-de-heber).
Luego abrimos la aplicación Ventana de entrada ubicada en el menú Sistema -> Administración -> Ventana de entrada
O mediante la consola

gksu /usr/sbin/gdmsetup

1- Vamos a la pestaña Local
2- Agregamos el tema empaquetado que descargamos (puede ser en formato .tar.gz) con el botón añadir
3- Lo activamos

 


También podemos modificar el tema descargado, descomprimiendolo, modificando los archivos de su interior (por ejemplo, las imagenes), y volviendolo a comprimir.


USplash

editar

Para instalar un Usplash debemos descargar la aplicación startupmanager desde getdeb.net [6].
Una vez descargado dicho instalador y previo a instalarlo, debemos ejecutar la aplicación Origenes del software ubicada en el menú Sistema -> Administración -> Origenes del software o mediante el comando

gksu --desktop /usr/share/applications/software-properties.desktop /usr/bin/software-properties-gtk

Esta aplicación es la encargada de decidir que repositorios de software estarán disponibles, por lo tanto debemos activar los repositorios universe y multiverse, luego oprimimos en Cerrar y por último nos aparecerá otra ventana informandonos que es necesario recargar la información sobre el software disponible, aquí oprimimos en Regargar.

Efectuados dichas actualizaciones, instalamos el startupmanager, el cual una vez instalado podremos acceder a él mediante el menú Sistema -> Administración -> Administrador de arranque o mediante el comando

su-to-root -X -c /usr/sbin/startupmanager

Una vez levantado el Administrador de arranque, efectuaremos los siguientes pasos:

1- Ir a la pestaña Aspecto
2- En el apartado Tema Usplash oprimiremos en Administrar temas Usplash

 

3- Añadiremos nuestro tema

 

4- Lo seleccionamos desde el combo Tema Usplash

 


Últimas modificaciones

editar

Debemos cambiarle el permiso a la carpeta archivos-de-heber para que cualquier nuevo usuario pueda tener acceso a ella, permitiendo que se muestre el fondo de pantalla seleccionado por ejemplo.
Para ello ejecutaremos el siguiente comando

sudo chmod -R 775 /usr/share/archivos-de-heber

Luego debemos copiar todo el contenido de nuestro Home al directorio /etc/skel. Este directorio contiene todos los archivos y directorios que se copiarán automáticamente al Home de un nuevo usuario. De esta manera haremos que todos los nuevos usuarios del sistema tengan la misma configuración que heber.
Para ello ejecutaremos el siguiente comando

sudo cp -r ~/. /etc/skel/.

Ahora solo resta desloguearnos (no apagar el sistema !) de la manera usual.
Una vez nos abra la pantalla de Login, nos cambiamos a la terminal 7 (tty7) con la combinación de teclas ALT + F7

Nuevamente ahora en la tty7, pero dentro todavía de la jaula (en la consola), debemos eliminar todos los archivos inecesarios, así como eliminar también el usuario creado.
Para ello haremos

sudo userdel -rf heber

Ahora removeremos la entrada de heber de la lista sudoers

visudo -f /etc/sudoers

Paramos el gdm, ya que no lo necesitaremos más

/etc/init.d/gdm stop

Y pasamos a eliminar archivos inecesarios, para así liberar también espacio

apt-get clean
rm -rf /tmp/*
rm -rf /etc/resolv.conf

Por último desmontamos y salimos de la jaula
umount /proc
umount /sys
exit


Para terminar lo que respecta a la personalización de la distro, solo nos queda cambiar la imagen del menú de instalación del Live CD.

 

Para ello debemos seguir los siguientes pasos

Obtener la nueva imagen (.png), renombrarla a splash.png y convertirla a .pnm utilizando el siguiente comando

pngtopnm splash.png > splash.pnm

Luego convertir la .pnm a .rle de la siguiente manera

ppmtolss16 "#000000=0" "#ffffff=7" < splash.pnm > splash.rle

Por último debemos copiar el archivo splash.rle a extraer-cd/isolinux


Rearmar el CD

editar

La parte de personalización de la distro ya está completa, solo resta rearmar el CD.
Si instalamos o desinstalamos aplicaciones, debemos entonces regenerar el Manifiesto, que en síntesis indica las aplicaciones que contiene la distro.
Para ello haremos los siguiente

echo regen manifs
chmod +w extraer-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extraer-cd/casper/filesystem.manifest
sudo cp extraer-cd/casper/filesystem.manifest extraer-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extraer-cd/casper/filesystem.manifest-desktop

Una vez regenerado el manifesto, debemos comprimir el filesystem de la siguiente manera

sudo rm extraer-cd/casper/filesystem.squashfs
sudo mksquashfs edit extraer-cd/casper/filesystem.squashfs

Comprimido el filesystem, solo resta crear la nueva imagen (.iso) de nuestra distro

IMAGE_NAME="Heber"
cd extraer-cd
sudo mkisofs -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-Heber.iso .

Notesé que este último comando tiene un punto al final

Listo ! ya hemos creado nuestra distribución Live CD personalizada de Ubuntu.
Si se quiere ahora, se puede grabar nuestra nueva distro en un CD, ya sea utilizando cualquier programa de grabación de CD o mediante el siguiente comando

cdrecord dev=/dev/cdrom ubuntu-Heber.iso

Opcionalmente también se puede utilizar una máquina virtual para testear la distribución


Sitios utilizados

editar
* http://www.ubuntu-es.org
* http://www.gnome-look.org
* http://help.ubuntu.com/community/LiveCDCustomization
* http://ubuntuforums.org/showthread.php?t=225458
* http://www.linux.com/feature/137524?theme=print
* http://news.softpedia.com/news/Change-Ubuntu-Bootsplash-Theme-55237.shtml
* http://www.espaciolinux.com/foros-tema-t33039.html