Manual Debian Live

Acerca de este manual

1. Acerca de este manual

1.1 Para el impaciente.
1.2 Términos
1.3 Autores
1.4 Cómo contribuir en este documento
1.4.1 Aplicar cambios
1.4.2 Traducción

2. Acerca del Proyecto Debian Live

2.1 Motivación
2.1.1 Desventajas en los sistemas Live actuales
2.1.2 El porqué de crear un Sistema Live propio.
2.2 Filosofía
2.2.1 Solamente paquetes sin modificación alguna de Debian «main»
2.2.2 Sin configuración especial para el Sistema Live
2.3 Contacto

Usuario

3. Instalación

3.1 Requisitos
3.2 Instalación de live-build
3.2.1 Desde el repositorio Debian.
3.2.2 A partir del código fuente
3.2.3 A partir de «instantáneas»
3.3 live-boot y live-config
3.3.1 Desde el repositorio Debian.
3.3.2 A partir del código fuente
3.3.3 A partir de «instantáneas»

4. Conceptos básicos

4.1 ¿Qué es un sistema en vivo?
4.2 Primeros pasos: creación de una imagen ISO híbrida
4.3 Usar una imagen ISO híbrida
4.3.1 Grabar una imagen ISO en un medio físico.
4.3.2 Copiar una imagen ISO híbrida a un dispositivo USB
4.3.3 Arrancar los medios en vivo
4.4 Usar una máquina virtual para pruebas
4.4.1 Probar una imagen ISO con QEMU
4.4.2 Probar una imagen ISO con virtualbox-ose
4.5 Crear una imagen HDD
4.6 Utilizar una imágen HDD
4.6.1 Probar una imágen HDD con Qemu
4.6.2 Usar el espacio libre en el dispositivo USB
4.7 Creación de una imagen de arranque en red
4.7.1 Servidor DHCP
4.7.2 Servidor TFTP
4.7.3 Servidor NFS
4.7.4 Cómo probar el arranque en red
4.7.5 Qemu
4.7.6 VMWare Player

5. Descripción general de las herramientas

5.1 live-build
5.1.1 El comando lb config
5.1.2 El comando lb build
5.1.3 El comando lb clean
5.2 El paquete live-boot
5.3 El paquete live-config

6. Gestionar una configuración

6.1 Utilización de auto para gestionar los cambios de la configuración
6.2 Un ejemplo de scripts auto.

7. Descripción general de la personalización.

7.1 Configuración en el momento de la creación vs en el momento del arranque
7.2 Etapas de la creación
7.3 Opciones para lb config en ficheros
7.4 Tareas de personalización

8. Personalización de la instalación de paquetes

8.1 Origen de los paquetes
8.1.1 Distribución, áreas de archivo y modo
8.1.2 Réplicas de Distribución Debian
8.1.3 Réplicas de Distribution utilizadas durante la creación
8.1.4 Réplicas de distribución Debian utilizadas en la ejecución.
8.1.5 Repositorios adicionales
8.2 Selección de los paquetes a instalar
8.2.1 Listas de paquetes
8.2.2 Listas de paquetes predefinidas
8.2.3 Listas de paquetes locales
8.2.4 Listas de paquetes locales para binary
8.2.5 Extensión de una lista de paquetes dada mediante «includes»
8.2.6 Utilización de condiciones dentro de las listas de paquetes
8.2.7 Tareas
8.2.8 Tareas de Escritorio e Idioma
8.3 Instalar paquetes de terceros o paquetes modificados
8.3.1 Método packages.chroot para instalar paquetes personalizados
8.3.2 Método de repositorio APT para instalar paquetes personalizados
8.3.3 Paquetes personalizados y APT
8.4 Configurar APT en la creación
8.4.1 Utilizar apt o aptitude
8.4.2 Utilización de un proxy con APT
8.4.3 Ajuste de APT para ahorrar espacio
8.4.4 Pasar opciones a apt o a aptitude
8.4.5 APT pinning

9. Personalización de contenidos

9.1 Includes
9.1.1 Includes locales en Live/chroot
9.1.2 Includes locales en Binary
9.1.3 Includes en Binary
9.2 Scripts gancho (Hooks)
9.2.1 Scripts gancho locales en Live/chroot
9.2.2 Scripts gancho en tiempo de arranque
9.2.3 Scripts gancho locales en Binary
9.3 Preconfiguración de las preguntas de Debconf

10. Personalización del comportamiento en tiempo de ejecución.

10.1 Personalización del usuario por defecto del sistema en vivo
10.2 Personalización de las variantes locales e idioma
10.3 Persistencia
10.3.1 Capas de persistencia total
10.3.2 Capas personalizadas
10.3.3 Instantáneas
10.3.4 SubText persistente
10.3.5 Remasterización parcial

11. Personalización de la imagen binaria

11.1 Gestor de arranque
11.2 Metadatos ISO

12. Personalización del Instalador de Debian

12.1 Tipos de imágenes según el instalador
12.2 Personalizando el Instalador de Debian mediante preconfiguración
12.3 Personalizar el contenido del Instalador de Debian

Proyecto

13. Informes de errores.

13.1 Problemas conocidos
13.2 Reconstruir desde cero
13.3 Utilizar paquetes actualizados
13.4 Recopilar información
13.5 Aislar el fallo si es posible
13.6 Utilizar el paquete correcto sobre el que informar del error
13.6.1 En la preinstalación (bootstrap) en tiempo de creación.
13.6.2 Mientras se instalan paquetes en tiempo de creación.
13.6.3 En tiempo de arranque
13.6.4 En tiempo de ejecución
13.7 Hacer la investigación
13.8 Dónde informar de los fallos

14. Estilo de código

14.1 Compatibilidad
14.2 Sangrado
14.3 Ajuste de líneas
14.4 Variables
14.5 Miscelánea

15. Procedimientos

15.1 Subir Udebs
15.2 Principales lanzamientos
15.3 Nuevas versiones
15.3.1 Última actualización de una versión Debian
15.3.2 Plantilla para anunciar nuevas versiones.

Ejemplos

16. Ejemplos

16.1 Uso de los ejemplos
16.2 Tutorial 1: Una imagen estándar
16.3 Tutorial 2: Una utilidad de navegador web
16.4 Tutorial 3: Una imagen personalizada
16.4.1 Primera revisión
16.4.2 Segunda revisión
16.5 Un cliente VNC kiosk
16.6 Una imagen básica para un pendrive USB de 128M
16.7 Un escritorio KDE con variante local e instalador

Apéndice

17. Style guide

17.1 Guidelines for authors
17.1.1 Linguistic features
17.1.2 Procedures
17.2 Guidelines for translators
17.2.1 Translation hints

Manual Debian Live

Ejemplos

16. Ejemplos

Este capítulo ofrece ejemplos de creación de imágenes para casos de uso específicos de Debian Live. Si se es nuevo en la creación de una imagen propia de Debian Live, se recomienda leer primero los tres tutoriales en secuencia, ya que cada uno enseña nuevas técnicas que ayudan a utilizar y entender los ejemplos restantes.

16.1 Uso de los ejemplos

Para poder seguir estos ejemplos es necesario un sistema donde crearlos que cumpla con los requisitos enumerados en Requisitos y tener live-build instalado tal y como se describe en Instalación de live-build.

Hay que tener en cuenta que, para abreviar, en estos ejemplos no se especifica una réplica local para la creación de la imagen. Es posible acelerar las descargas considerablemente si se utiliza una réplica local. Se puede especificar las opciones cuando se usa lb config, tal y como se describe en Réplicas de Distribution utilizadas durante la creación, o para más comodidad, establecer el valor por defecto para la creación del sistema en /etc/live/build.conf. Basta con crear este fichero y en el mismo, establecer las variables LB_MIRROR_* correspondientes a la réplica preferida. Todas las demás réplicas usadas en el proceso de creación usarán estos valores por defecto. Por ejemplo:

LB_MIRROR_BOOTSTRAP="http://mirror/debian"
LB_MIRROR_CHROOT_SECURITY="http://mirror/debian-security"
LB_MIRROR_CHROOT_BACKPORTS="http://mirror/debian-updates"

16.2 Tutorial 1: Una imagen estándar

Caso práctico: Crear una primera imagen sencilla, aprendiendo los fundamentos de live-build.

En este tutorial, vamos a construir una imagen ISO hybrid por defecto de Debian Live que contenga únicamente los paquetes base (sin Xorg) y algunos paquetes de soporte Debian Live, como un primer ejercicio en el uso de live-build.

No puede ser más fácil que esto:

$ mkdir tutorial1 ; cd tutorial1 ; lb config

Si se examina el contenido del directorio config/ se verá almacenada allí una configuración en esqueleto preparada para ser personalizada o en este caso para ser usada inmediatamente para construir una imagen por defecto.

Ahora, como superusuario, crear la imagen, guardando un log con tee mientras se crea.

# lb build 2>&1 | tee binary.log

Suponiendo que todo va bien, después de un rato, el directorio actual contendrá binary.hybrid.iso. Esta imagen ISO híbrida se puede arrancar directamente en una máquina virtual como se describe en Probar una imagen ISO con Qemu y en Probar una imagen ISO con virtualbox-ose o bien ser copiada a un medio óptico como un dispositivo USB tal y como se describe en Grabar una imagen ISO en un medio físico y Copiar una imagen ISO híbrida en un dispositivo USB, respectivamente.

16.3 Tutorial 2: Una utilidad de navegador web

Caso práctico: Crear una utilidad de navegador web, aprendiendo a aplicar personalizaciones.

En este tutorial, se creará una imagen adecuada para su uso como utilidad de navegador web, esto sirve como introducción a la personalización de las imágenes de Debian Live.

$ mkdir tutorial2
$ cd tutorial2
$ lb config -p lxde
$ echo iceweasel >> config/package-lists/my.list.chroot

La elección de LXDE para este ejemplo refleja el deseo de ofrecer un entorno de escritorio mínimo, ya que el enfoque de la imagen es el uso individual que se tiene en mente, el navegador web. Se podría ir aún más lejos y ofrecer una configuración por defecto para el navegador web en config/includes.chroot/etc/iceweasel/profile/, o paquetes adicionales de soporte para la visualización de diversos tipos de contenido web, pero se deja esto como un ejercicio para el lector.

Crear la imagen, de nuevo como superusuario, guardando un log como en el Tutorial 1:

# lb build 2>&1 | tee binary.log

De nuevo, verificar que la imagen está bien y probarla igual que en el Tutorial 1.

16.4 Tutorial 3: Una imagen personalizada

Caso práctico: Crear un proyecto para conseguir una imagen personalizada, que contenga el software favorito para llevárselo en una memoria USB donde quiera que se vaya, y hacerlo evolucionar en revisiones sucesivas, tal y como vayan cambiando las necesidades y preferencias.

Como nuestra imagen personalizada irá cambiando durante un número de revisiones, si se quiere ir siguiendo esos cambios, probar nuevas cosas de forma experimental y posiblemente volver atrás si no salen bien, se guardará la configuración en el popular sistema de control de versiones git. También se utilizarán las mejores prácticas de configuración automática a través de scripts auto como se describe en Gestionar una configuración.

16.4.1 Primera revisión

$ mkdir -p tutorial3/auto
$ cp /usr/share/live/build/examples/auto/* tutorial3/auto/
$ cd tutorial3

Editar auto/config del siguiente modo:

#!/bin/sh

lb config noauto \
     --architectures i386 \
     --linux-flavours 686-pae \
     --package-lists lxde \
     "${@}"

Completar la lista de paquetes local:

$ echo "iceweasel xchat" >> config/package-lists/my.list.chroot

En primer lugar con --architectures i386 se asegura de que en nuestro sistema de creación amd64 se crea una versión de 32-bits adecuada para ser usada en la mayoría de máquinas. En segundo lugar, se usa --linux-flavours 686-pae porque no se espera usar esta imagen en sistemas mucho más viejos. En tercer lugar se elige la lista de paquetes lxde para proporcionar un escritorio mínimo. Y, por último, se añaden dos paquetes iniciales favoritos: iceweasel y xchat.

Ahora, crear la imagen:

# lb build

Tener en cuenta que a diferencia de los dos primeros tutoriales, ya no se tiene que escribir 2>&1 | tee binary.log ya que esto se incluye ahora en auto/build.

Una vez que se ha probado la imagen (como en el Tutorial 1) y se ha asegurado de que funciona, es el momento de iniciar el repositorio git, añadiendo sólo los scripts auto que se acaba de crear, y luego hacer el primer commit:

$ git init
$ git add auto
$ git commit -a -m "Initial import."

16.4.2 Segunda revisión

En esta revisión, vamos a limpiar desde la primera creación, agregar el paquete vlc a nuestra configuración, crear de nuevo, probar y enviar los cambios al git.

El comando lb clean limpiará todos los ficheros generados en las primeras creaciones a excepción del caché, lo cual ahorra tener que volver a descargar de nuevo los paquetes. Esto asegura que el siguiente lb build vuelva a ejecutar todas las fases para regenerar los ficheros de nuestra nueva configuración.

# lb clean

Añadir ahora el paquete vlc a nuestra lista de paquetes local en config/package-lists/my.list.chroot:

Crear de nuevo:

# lb build

Probar, y cuando se esté satisfecho, enviar la próxima revisión al git:

$ git commit -a -m "Adding vlc media player."

Por supuesto, es posible hacer cambios más complicados en la configuración, tal vez añadiendo ficheros en los subdirectorios de config/. Cuando se envian nuevas revisiones, hay que tener cuidado de no editar a mano o enviar los ficheros del nivel superior en config que contienen variables LB_* ya que estos son productos de creación también y son siempre limpiados por lb clean y recreados con lb config a través de sus respectivos scripts auto.

Hemos llegado al final de nuestra serie de tutoriales. Si bien son posibles muchos más tipos de personalización, aunque sólo sea con las pocas características explicadas en estos sencillos ejemplos, se puede crear una variedad casi infinita de imágenes diferentes. Los ejemplos que quedan en esta sección abarcan varios casos de usos diferentes procedentes de las experiencias recogidas de los usuarios de Debian Live.

16.5 Un cliente VNC kiosk

Caso Práctico: Crear una imagen con live-build para arrancar directamente un servidor VNC.

Hacer un directorio de creación y crear una configuración en esqueleto según la lista estándar-x11, incluyendo gdm3, metacity y xvnc4viewer, desactivando los paquetes recomendados para conseguir un sistema mínimo:

$ mkdir vnc_kiosk_client
$ cd vnc_kiosk_client
$ lb config -a i386 -k 686-pae -p standard-x11 \
     --apt-recommends false
$ echo "gdm3 metacity xvnc4viewer" >> config/package-lists/my.list.chroot

Crear el directorio /etc/skel y poner un fichero .xsession personalizado para el usuario que por defecto ejecutará metacity e iniciará el xvncviewer, conectándo al puerto 5901 de un servidor en 192.168.1.2:

$ mkdir -p config/includes.chroot/etc/skel
$ cat > config/includes.chroot/etc/skel/.xsession << END
#!/bin/sh

/usr/bin/metacity &
/usr/bin/xvncviewer 192.168.1.2:1

exit
END

Crear la imagen:

# lb build

Disfrutarlo.

16.6 Una imagen básica para un pendrive USB de 128M

Caso Práctico: Crear una imagen estándar quitando algunos componentes para que quepa en un pendrive USB de 128M dejándo espacio libre para poder usarlo.

Al optimizar una imagen para adaptarla al tamaño de algunos medios de almacenamiento, es necesario comprender el equilibrio que se está haciendo entre tamaño y funcionalidad. En este ejemplo, se recorta tanto sólo para dar cabida a material adicional dentro de un tamaño de 128M, pero sin hacer nada para destruir la integridad de los paquetes que contiene, tales como la depuración de las variantes locales a través del paquete localepurge u otro tipo de optimizaciones «intrusivas». Cabe destacar que no se debe usar --bootstrap-flavour minimal a menos de que realmente se sepa lo que se está haciendo, ya que al omitir paquetes de prioridad importante lo más probable es que se produzca un sistema roto.

$ lb config -k 486 -p minimal --apt-indices false \
     --memtest none --apt-recommends false --includes none

Ahora, crear la imagen de forma habitual:

# lb build 2>&1 | tee binary.log

En el sistema del autor, en el momento de escribir esto, la configuración anterior produjo una imagen de 78Mbytes. Esto se compara favorablemente en tamaño con la imagen de 166Mbytes producida por la configuración por defecto en el Tutorial 1.

El mayor ahorro de espacio aquí, en comparación con la creación de una imagen estándar en un sistema de arquitectura i386 es seleccionar sólo la versión del kernel 486 en lugar de la de por defecto -k "486 686-pae". Dejar fuera los índices de APT con --apt-indices false también ahorra una cantidad importante de espacio, la desventaja es que es necesario hacer un apt-get update antes de usar apt en el sistema en vivo. Elegir la lista del paquete minimal deja fuera el gran paquete de locales y sus utilidades asociadas. Dejando los paquetes recomendados con --apt-recommends false se ahorra un poco de espacio adicional a costa de omitir algunos paquetes que de otro modo podría esperarse que estuvieran alli, tal como firmware-linux-free que puede ser necesario para el soporte de cierto hardware. Las opciones restantes recortan pequeñas cantidades adicionales de espacio. Es necesario decidir si vale la pena la funcionalidad que se sacrifica con cada optimización.

16.7 Un escritorio KDE con variante local e instalador

Caso práctico: Crear una imagen del escritorio KDE, con la variante local Portugués de Brasil con instalador incluido.

Se desea crear una imagen iso-hybrid para la arquitectura i386 con un escritorio preferido, en este caso el KDE, que contiene todos los mismos paquetes que serían instalados por el programa de instalación estándar de Debian para KDE.

El primer problema es descubrir los nombres de las tareas adecuadas. En la actualidad, live-build no puede ayudar en esto. Aunque podríamos tener suerte y encontrarlos a base de pruebas, hay una herramienta, grep-dctrl, para extraerlos de las descripciones de tareas en tasksel-data, para proceder, asegurarse de tener ambas cosas:

Ahora podemos buscar las tareas apropiadas, primero con:

$ grep-dctrl -FTest-lang pt_BR /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: brazilian-portuguese

Con este comando, se descubre que la tarea se llama, sencillamente, brazilian-portuguese. Ahora para encontrar las tareas relacionas:

$ grep-dctrl -FEnhances brazilian-portuguese /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: brazilian-portuguese-desktop
Task: brazilian-portuguese-kde-desktop

En el momento del arranque se van a generar las variantes locales pt_BR.UTF-8 y seleccionar la distribución del teclado pt-latin1. También será necesario preconfigurar la opción de escritorio, "kde" para que tasksel instale la tarea de escritorio correcta, ya que difiere de la de por defecto (Ver Tareas de Escritorio e Idioma). Ahora vamos a poner las piezas juntas:

$ mkdir live-pt_BR-kde
$ cd live-pt_BR-kde
$ lb config \
     -a i386 \
     -k 486 \
     --bootappend-live "locales=pt_BR.UTF-8 keyboard-layouts=pt-latin1" \
     --debian-installer live
$ echo kde-desktop brazilian-portuguese brazilian-portuguese-desktop \
     brazilian-portuguese-kde-desktop >> config/task-lists/my.list.chroot
$ echo debian-installer-launcher >> config/package-lists/my.list.chroot
$ echo tasksel tasksel/desktop multiselect kde >> config/preseed/my.preseed.chroot

Tener en cuenta que se ha incluido el paquete debian-installer-launcher para lanzar el instalador desde el escritorio en vivo, y que también se ha especificado el kernel 486, ya que actualmente es necesario que el instalador y el kernel del sistema en vivo coincidan para que el lanzador funcione correctamente.