Nuestra Debian Live personalizada con live-helper

2009-11-12 por Angel Abad, etiquetado como debian

Tengo en casa la televisión a traves de Mythtv, por lo tanto tengo un backend con frontend para ver la tele. Mythtv permite configurar otros frontends dentro de la misma red para ver la televisión a traves de la red. Así que a veces me apetecía ver la tele o alguna película en la habitación donde tengo el ordenador de trabajo, lo que ocurre es que este es mi ordenador de "producción" y no queria instalarle un montón de cosas de los repositorios de Debian Multimedia, ya que al ser el ordenador de trabajo lo necesito casi limpio, para virtualizar otras máquinas y no tener software no mantenido por Debian.

Así que después de darle unas cuantas vueltas al tema me decidí por utilizar un viejo pendrive e instalarle una distribución live con el cliente de mythtv y las configuraciones necesarias para que arranque y se conecte directamente. Después de leer y buscar documentación di con Live Helper, es un programa que nos genera una configuración por defecto para crear una live cd, y un montón de archivos de configuración muy bien auto-explicados. Puede parecer demasiado complicado, pero por defecto nos creará una live de la distribución lenny, pero aparte nos permite personalizar nuestra distribución tanto como queramos.

Live Helper consta de tres fases y cada una con sus archivos de configuración y sus secciones para personalizarlo, son el bootstrap, para la creación inicial, el chroot para la creación de la live y el binary para creación de la imagen de cd o usb.

Lo primero, como no, es:

  # apt-get install live-helper

Ahora vamos a empezar crear la distribución live, el primer comando para crear nuestro esqueleto es lh_config, así que para tener las primeras configuraciones debemos crear un directorio y poner este comando (como root).

  # mkdir /root/live
  # lh_config

Esto nos creará dos directorios, config, con todas las configuraciones y scripts que en principio estará vacio. La configuración por defecto es para una lenny, pero podemos cambiarlo pasandole el parametro -d al comando, en caso de que queramos que toda nuestra imagen esté encriptada solo tendriamos que pasarle el parámetro -e aes256 y cuando construya la imagen nos pedirá una contraseña con la que encriptará toda la imagen.

Ahora que tenemos una configuración básica vamos empezar a personalizar nuestra live, tendremos que decirle que paquetes instalar, configurarla para que utilice los repositorios de debian-multimedia e introducir algunos scripts en la home del usuario para que arranque automáticamente las X y el frontend de Mythtv, vamos por pasos...

Lo primero que vamos a hacer es configurar la imagen para que arranque con los locales es_ES.utf8 y el teclado en castellano, también la configuraremos para que genere un archivo .img para el pendrive, ya que por defecto creará una iso para cdrom. Así que editamos el fichero config/binary y adaptamos los siguientes parámetros.

LH_BINARY_IMAGES="usb-hdd"
LH_BOOTAPPEND_LIVE="locale=es_ES.UTF-8 keyb=es"

Como se puede ver los archivos de configuración vienen muy bien comentados y podemos personalizar casi lo que queramos. Ahora vamos a añadir los repositorios de debian-multimedia, los añadiremos en chroot para que estén disponibles mientras creamos nuestra imagen y en la imagen binaria. Para esto tenemos el directorio config/chroot_sources, así que con nuestro editor favorito crearemos el archivo config/chroot_sources/debian-multimedia.chroot, con la configuración del repositorio para apt.

deb http://www.debian-multimedia.org lenny main

Si no queremos que nos de errores por las firmas gpg del repositorio, solo tendremos que crear otro fichero con la firma, con el mismo nombre pero acabado en .gpg, podriamos bajar la firma de su servidor, pero como tengo el paquete debian-multimedia-keyring instalado, ya lo tengo en mi ordenador asi que simplemente lo copiaré.

cp /usr/share/keyrings/debian-multimedia-keyring.gpg config/chroot_sources/debian-multimedia.chroot.gpg

Ahora tendremos que decirle que paquetes queremos que instale en el chroot antes de crear la imagen, Live Helper provee una serie de listas de software en /usr/share/live-helper/lists/ que podemos utilizar, están por ejemplo, gnome, kde, standard-x11, etc... Además lo bueno que tiene es que podemos crear nuestras listas y establecer dependencias. Así que crearé una lista dentro de la configuración que se llame mythtv-frontend y que dependa de standard-x11, que como su nombre indica es el sistema básico de xorg. La lista la configuraré para que ademas de los paquetes de standard-x11 instale mythtv-frontend y ratpoison, que es un gestor de ventanas muy ligero y muy útil para este tipo de configuración ya que ni siquiera decora las ventanas.

Creamos el archivo config/chroot_local-packageslists/mythtv-frontend con el siguiente contenido.

## LH: Mythtv Frontend

#include <standard-x11>

ratpoison
mythtv-frontend

La directiva #include le dice a nuestra lista que primero tiene que instalar los paquetes de la lista standard-x11, que es parte de Live Helper. Ahora tenemos que decirle en la configuración que queremos que use nuestra lista. Esto se hace en el archivo config/chroot ajustando la siguiente directiva (que por defecto estará en standard).

LH_PACKAGES_LISTS="mythtv-frontend"

También podriamos añadir paquetes sueltos en la configuración mediante la directiva LH_PACKAGES.

Ahora vamos a añadir el fichero .xsession al usuario live, la mejor forma de hacerlo es incluir ese fichero en /etc/skel para que el propio sistema lo introduzca al crear el usuario (lo hace cada vez que arranca). Para esto Live Helper nos provee de los includes, asi que crearemos el directorio /etc/skel en los includes del chroot. Para introducir includes deberemos replicar el arbol de directorios debajo del directorio chroot_local-includes.

mkdir -p config/chroot_local-includes/etc/skel

Y ahora con nuestro editor favorito creamos el fichero config/chroot_local-includes/etc/skel/.xsession con el siguiente contenido.

ratpoison &
mythfrontend

Así le decimos a xorg que cuando arranque, lance ratpoison y después mythfrontend, ahora vamos a introducir el fichero /etc/skel/.bashrc con el comando startx al final. Copiamos el fichero /etc/skel/.bashrc de nuestro sistema en el chroot.

cp /etc/skel/.bashrc config/chroot_local-includes/etc/skel/

no olvidemos que después de copiar el archivo debemos editarlo y añadir la linea

startx

al final del fichero para que cuando el usuario haga el autologin arranque las X automaticamente.

También añadiré la configuración para mi servidor Mythtv y la base de datos remota, pero eso no lo pondré aquí, el procedimiento es idéntico a lo explicado anteriormente.

Ahora ya tenemos configurada nuestra live, es hora de construirla, tardará un rato, pero guardará una cache de lo que descargue, así que si necesitamos reajustar algo y volver a construir ya no tendremos que descargar todos los paquetes otra vez, para construir la imagen basta con que que ejecutemos:

# lh_build

En caso de que modifiquemos algo de la configuración, antes de volver a ejecutar lh_build es conveniente ejecutar el siguiente comando:

# lh_clean

lh_clean limpia el árbol de construcción y acepta diferentes parámetros dependiendo de que parte de nuestra construcción queramos limpiar.

Después de un rato de espera tendremos un fichero imagen llamado binary.img. Ahora antes de copiarlo en el pendrive podemos probarlo con kvm o qemu

# kvm -hda binary.img

ó

# qemu -hda binary.img

Una vez que comprebamos que nuestra imagen se comporta como esperamos la copiamos al pendrive, en caso contrario, haremos lh_clean, arreglaremos los fallos y otra vez lh_build, para copiar la imagen al pendrive:

# dd if=binary.img of=${USBSTICK}

Donde ${USBSTICK} es el dispositivo usb, por ejemplo /dev/sdc (no /dev/sdc1). Prestar mucha atencion al ejecutar este comando para no equivocarse de dispositivo, ya que borrara todo lo que tenga. Así que si por error escribimos el nombre de una partición de nuestro disco duro borraremos todos los datos.

En este caso hemos usado Live Helper para algo muy concreto y solo he documentado los pasos que yo seguí para personalizar mi live. Pero Live Helper ofrece muchas más posibilidades, desde incluir el instalador de debian, configurar particiones para almacenar la home del usuario, snapshots, hooks, etc... Los ficheros de configuracion están muy bien documentados y el nombre de los directorios nos da una pista de su uso, el manual de Live Helper es muy extenso y documenta muy bien sus posibilidades, se puede leer online aquí.

Enlaces