Crear un Live CD de Debian con live-helper
El estilo de este artículo debe ser mejorado.
El artículo no sigue completamente las convenciones de estilo.
Este artículo está en construcción.
Por esta razón, seguramente habrá lagunas en el contenido o en el formato. Por favor, antes de cambiar el contenido, consulta la página de discusión del artículo.
Contenido |
Introducción
live-build es un conjunto de scripts creados por el Debian Live Project[1] que simplifican la tarea de construir sistemas Live basados en Debian. La idea principal de live-build es ser un marco de trabajo que utiliza un directorio de configuración para automatizar y personalizar todos los aspectos de la construcción de un Live.
Al ser un conjunto de scripts ha de usarse vía consola, aunque existe una GUI llamada live-magic [2]
Conceptos básicos
La base de live-build son los comandos de alto nivel lb_config, lb_build[3] y lb_clean, que se encargan de llamar a los comandos de bajo nivel correspondientes para llevar el proceso a cabo. También existe el comando lb que por si mismo no realiza ninguna función pero es capaz de interpretar todos los comandos genéricos de live-build. Esto se traduce en que cualquier comando del estilo lb_COMANDO puede ser llamado de la forma lb COMANDO. (Por ejemplo, lb_build y lb build son comandos equivalentes)
Requisitos
- Acceso como Super Usuario (root)
- live-build
- Un intérprete compatible con POSIX como bash o dash
- debootstrap o cdebootstrap[4]
- Linux Kernel 2.6.x
- Conexión a internet (no es esencial, pero simplifica el trabajo)
Instalación
- Desde los repositorios de Debian:
# aptitude install live-build
Entendiendo los principales comandos
En el siguiente apartado veremos los principales comandos, su función y su uso. Para indagar más sobre el funcionamiento de cada uno se recomienda leer sus respectivos manuales con el comando man lb_COMANDO.
lb config
Crea la estructura de carpetas de configuración del Live bajo el directorio config/. Se configurará automáticamente tomando valores por defecto en aquellos campos para los que no hayamos pasado argumentos. Listado completo de los argumentos en el manual.
lb build
Lee la configuración del directorio config/ e inicia la construcción del Live llamando a comandos de bajo nivel.
lb clean
Limpia los archivos creados por lb build para que la siguientes llamadas a lb build empiecen desde un estado limpio.
Usando los comandos
Construyendo una imagen ISO
Como el comando lb config configura automáticamente nuestro Live con valores por defecto la forma más simple de hacer un Live es con los comandos:
$ lb config # lb build
El proceso puede tardar dependiendo de la velocidad de conexión y la cantidad de operaciones a realizar. Con estos pasos obtendremos un Live que vendrá con el sistema base de Debian y Gnome como entorno de escritorio.
Probando la ISO con qemu
# aptitude install qemu $ qemu -cdrom binary.iso
Grabando la ISO en un CD/DVD
En un CD
# aptitude install wodim $ wodim -v speed=24 dev=/dev/cdrom binary.iso
En un DVD
# aptitude install dvd+rw-tools $ growisofs -dvd-compat -Z /dev/dvd=binary.iso -speed=4
Construyendo una imagen USB/HDD
Si se ha creado la imagen del ejemplo anterior, se recomienda limpiar el directorio de trabajo con lb clean
# lb clean --binary
Llamamos a lb config con el argumento del tipo de binario e iniciamos la construcción de nuevo:
$ lb config --binary-images usb-hdd # lb build
Probando la imagen con qemu
$ qemu -hda binary.img
Copiando la imagen a un USB
Con dd. ¡Advertencia! Esto borrara todo el contenido de nuestro USB
# dd if=binary.img of=/dev/<USB> # Donde <USB> es el dispositivo, no una partición del mismo.
De forma manual. Requiere una partición en formato FAT16 o FAT32
$ cp binary/* /media/<USB> # Donde <USB> es una partición del dispositivo. # aptitude install syslinux # parted /dev/<USB> set 1 boot on # syslinux -sf /dev/<USB>
Gestionando configuraciones
Hasta el momento hemos aprendido a manejar live_build usando comandos con argumentos vía consola pero para conseguir la configuración del Live deseada probablemente necesitemos llevar a cabo una serie de revisiones hasta que el resultado nos satisfaga. ¿Y si entre tanta prueba perdemos parte de los argumentos?. Tenemos dos formas de evitar esto: usar los auto scripts que nos ofrece live-build o crear nuestro propio script automático.
Ejemplo de auto scripts
Al llamar por primera vez al comando lb config, aparte del directorio config/ también creamos el directorio auto/. Bajo este directorio podemos crear scripts que se llamen igual que los comandos de live-builder y que serán llamados cada vez que se ejecute el comando con el que comparten nombre. Esta es la mejor forma de tenerlo todo ordenado y la recomendada a continuación un ejemplo de auto scripts.
auto/config
#!/bin/sh lb config noauto \ --packages-lists "standard" \ "${@}"
auto/clean
#!/bin/sh lb clean noauto "${@}" rm -f binary.log
auto/build
#!/bin/sh lb build noauto "${@}" 2>&1 | tee binary.log
En cada comando que creemos hemos de añadir el parámetro noauto para evitar que el script se llame a si mismo recursivamente. También debemos tener en cuenta que hemos de ir añadiendo en cada comando ${@} si queremos que utilice los argumentos que le pasemos al llamarlo desde la consola. Por último, no hemos de olvidar que los scripts deben tener permisos de ejecución:
$ chmod +x auto/*
Crear nuestro propio script automático
Esto no es más que crear un script con todos los comandos a los que llamemos para construir el Live en orden. El ejemplo anterior quedaría de esta forma:
#!/bin/sh lb config \ --packages-lists "standard" \ "${@}" lb build 2>&1 | tee binary.log
Como podemos observar tiene diversas carencias respecto al ejemplo anterior: no permite pasar argumentos a lb build ni contempla operaciones adicionales para lb clean. Sin embargo es una forma mucho más sencilla y fácil de divulgar.
Personalizando la instalación de paquetes
Origen de los paquetes
Distribución, secciones y modo
Para elegir la distribución y las secciones simplemente hemos de pasarle los siguientes argumentos a lb config:
$ lb config \ --distribution sid \ --archiver-areas "main contrib non-free"
El modo es una opción experimental que designa como base del sistema una distribución derivada de Debian. Por defecto --mode está establecido en debian pero se puede elegir también entre ubuntu y emdebian para tomar como base uno de estos sitemas.
Mirrors
Repositorios adicionales
Eligiendo paquetes a instalar
Como argumento de lb config
--packages ""
Listas de paquetes
Listas de paquetes predefinidas
--packages-lists "" /usr/share/live/build/lists/
Listas de paquetes locales
config/chroot_local-packageslists/. *.list #include <gnome> #if ARCHITECTURE...
chroot_local-packages
Configurando APT
Personalizando el contenido del Live
Includes
chroot_local-includes
Para añadir o reemplazar archivos en el sistema de archivos de nuestro Live simplemente hemos de añadirlos en la carpeta config/chroot_local-includes. Este directorio se corresponde con el directorio raíz de nuestro Live. Por ejemplo, para añadir el archivo /home/user/prueba.txt lo copiaremos en config/chroot_local-includes/home/user/prueba.txt.
$ mkdir -p config/chroot_local-includes/home/user $ cp /foo/bar/prueba.txt config/chroot_local-includes/home/user/
binary_local-includes
Para añadir archivos en el sistema de archivos de nuestro binario hemos de añadirlos en la carpeta config/binary_local-includes. Funciona de manera similar al chroot_local-includes
Hooks
chroot_local-hooks
Para iniciar comandos durante la fase de chroot, podemos crear scripts que contengan los comandos bajo el directorio config/chroot_local-hooks. Los scripts de este directorio serán iniciados en la fase final de chroot. live-build provee algunos ejemplos en el directorio /usr/share/live/build/hooks/.
Hooks al inicio del Live
Para ejecutar comandos durante el inicio de nuestro Live, hemos de crear scripts bajo el directorio config/chroot_local-includes/lib/live/config/ con un número de secuencia como prefijo.
binary_local-hooks
Para ejecutar comandos durante la creación del binario, hemos de añadir los scripts en el directorio. Estos serán iniciados una vez se hayan llevado a cabo todos los comandos de creación del binario y justo antes de llevar a cabo el binary_checksums, el último comando a realizar.
F.A.Q.
- lh config no crea ningún directorio de configuración y/o muestra un error en pantalla.
- Comprueba que el directorio sobre el que se está ejecutando el script no contenga espacios en su dirección. También comprueba que has declarado correctamente los argumentos.
- lh build falla durante el proceso.
- Es muy probable que alguno de los argumentos declarados en lh config sea incompatible con otro o que no funcione correctamente. En la medida de lo posible, trata de reportar el bug para que pueda ser reparado.
- ¿Hay alguna otra página con información y/o ejemplos?
- Wiki oficial
- Manual oficial
- Wiki esDebian (En español)
- ¿Se puede modificar un Live si no dispongo de los archivos de configuración o del chroot?
- Si usa una imagen creada con squashfs, sí.
Referencias
- ↑ Debian Live Project.
- ↑ live-magic en Debian Package Tracking System.
- ↑ lb_build es un comando de alto nivel cuya función es llamar secuencialmente a los comandos de alto nivel lb_bootstrap, lb_chroot, lb_binary y lb_source.
- ↑ aptitude resuelve la dependencia instalando debootstrap por defecto.
- ↑ Installing live-build from source. Manual oficial. Es inglés.
- ↑ Installing live-build from snapshots. Manual oficial. Es inglés.