domingo, 12 de abril de 2009

Modificando Ubuntu (Parte I)

Voy a escribir una guía de como personalizar un CD de ubuntu tanto en apariencia como las aplicaciones que este traerá por defecto. Estará dividido en 3 partes dado que seria demasiado extenso. Estas partes se desarrollaran de la siguiente forma:

Parte I -- Prepararemos todo lo necesario para comenzar a trabajar "directamente" sobre el LiveCD de forma que los cambios puedan guardarse.
Parte II -- Aquí desarrollare las formas de modificar cada aspecto (dentro de mi humilde alcance, claro).
Parte III -- Por ultimo prepararemos el contenido de la metadistro y crearemos el nuevo CD, que podría terminar siendo un DVD.


Nota:Ojo con el tamaño final, recuerda que el LiveCD se carga en memoria RAM....
Versión de Distribución utilizada: Ubuntu 8.04 Hardy Heron 32 bits
Nota: Se ha comprobado que no funciona con Ubuntu 9.04

Demos comienzo pues con la Parte I de esta guía:

Esta primera parte se va a dividir en dos secciones; Preparar en equipo para trabajar en el y "enjaular" el LiveCD para editarlo desde el disco rígido.


PREPARANDO EL EQUIPO


Necesitas la ISO de ubuntu 8.04 o posterior... Durante las pruebas usé la ISO de Ubuntu 8.04.1 32bits
Instala los programas necesarios:

sudo aptitude install mkisofs squashfs-tools genisoimage qemu

Y carga el módulo squashfs:

sudo modprobe squashfs
Ve a tu home y crea un directorio donde hacer todo el trabajo:

mkdir ~/custom
cd ~/custom


Sitúa la ISO dentro de esta carpeta (la de ubuntu).
Después montarla en un directorio:


NOM_IMAGEN="ubuntu-8.04.1-desktop-i386.iso" --> Usad en este comando el nombre de la ISO.

mkdir backupISO


cd backupISO


mkdir mnt

sudo mount -o loop ../$NOM_IMAGEN mnt


Ahora se crea otra carpeta para extraes el contenido de la ISO montada, excepto un archivo (el que contiene el LiveCD):

mkdir extraer-cd

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

Y por último montamos el sistema de ficheros del archivo excluido y copiamos su contenido a otra carpeta:

mkdir squashfs

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

mkdir edit

sudo cp -a squashfs/* edit/

Dentro de la carpeta edit ya tienes el entorno de trabajo del liveCD. Puedes limpiar un poco...


sudo umount squashfs
sudo umount mnt
rm -rf squashfs mnt

MONTAR LA JAULA CON CHROOT


Empieza por copiar algunas configuraciones de tu sistema "anfitrión" al de la carpeta edit.
Ve a una consola virtual (Ctrl+Alt+F6 o cualquier otra)


Configuración de la RED:

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

sudo cp /etc/hosts edit/etc/

sudo /etc/init.d/networking restart
Configuración de las X:

sudo cp /etc/X11/xorg.conf edit/etc/X11/

Monta los devices de tu sistema anfitrión:

sudo mount --bind /dev/ edit/dev
Cambia la raíz del sistema (enjaulándolo) al directorio edit , aunque usando el mismo núcleo:

sudo chroot edit
Monta procesos y sistemas de ficheros en el nuevo sistema enjaulado:

mount -t proc none /proc

mount -t sysfs none /sys

Cambia un par de variables en el nuevo sistema:

export HOME=/etc/skel/

export LC_ALL=C



Te encuentras ahora dentro de la jaula, es decir, estas en la distro que vas a modificar. Es como estar en otro sistema operativo, ya que la jaula cambia el directorio raíz, y ésta la has creado con la carpeta edit como el directorio raíz, recordando nuevamente que edit tiene el contenido del squashfs, es decir la distro del Ubuntu Live CD como si estuviese instalada.

Crea los dispositivos genéricos:

cd /dev/

MAKEDEV generic


Añade un usuario:

adduser dukkon

Edita el archivo /etc/sudoers:

nano /etc/sudoers

Añade al final la linea:

dukkon ALL=(ALL) ALL

Los 3 pasos anteriores son para que el usuario pueda usar el comando sudo. Sal, guardando los cambios e inicia el gdm:

/etc/init.d/gdm start

Se te iniciara el entorno gráfico en otra terminal, como ya tienes corriendo una sesión gráfica en la terminal 7, esta nueva se abrirá en una de las siguientes terminales...

QUE CHULO EH!! Dos sistemas, gráficos además, corriendo al mismo tiempo y sin virtualizar ni nada, accediendo DIRECTAMENTE al hardware físico y tan solo compartiendo el núcleo de Linux y el propio hardware.

Selecciona el lenguaje español, si te sale en ingles y déjalo predeterminado.

CONSEJOS:

Salir de la jaula: Cierra sesión en gnome (NO CIERRES EL SISTEMA) y cuando salga el login de GDM vuelve a la consola donde enjaulaste el nuevo sistema de archivos (Ctrl+Alt+F6), para el demonio gdm ( /etc/init.d/ gdm stop) y sales de la jaula con exit.

Volver a entrar: Repite los pasos desde "MONTAR LA JAULA CON CHROOT". Se pueden omitir algunos pasos como configurar la Red y el servidor gráfico X o crear el usuario y añadirlo a la lista de /etc/sudoers.

3 comentarios:

  1. Sigo los pasos al pie de la letra y en el punto :

    /etc/init.d/ gdm start

    No se inicia en ningunta terminal ni la F1 ni F2 ni niguna....

    ResponderEliminar
  2. Que versión de Ubuntu estas usando?

    Puedo garantizar que funciona con 8.04.
    Sin embargo, creo que por un problema debido a los dispositivos creados en el sistema enjaulado, en Ubuntu 9.04 no funciona....
    Además no he podido tertear si el fallo también se acplica a 8.10....

    ResponderEliminar
  3. Ok yo uso 9.04 porbare en 8.04 :d

    ResponderEliminar