:B~ Descripción general de las herramientas

1~overview-of-tools  Descripción general de las herramientas

Este capítulo contiene una descripción general de las tres  herramientas
principales utilizadas en la creación de sistemas en vivo: live-build,
live-boot y live-config.

2~live-build El paquete live-build

live-build es una colección de scripts para generar los sistemas en vivo. A
estos scripts también se les conoce como «comandos».

La idea detrás de live-build es ser un marco que utiliza un directorio de
configuración para automatizar completamente y personalizar todos los
aspectos de la creación de una imagen de un sistema en vivo.

Muchos conceptos son similares a los utilizados para crear paquetes Debian
con /{debhelper}/:

_* Los scripts tienen una ubicación central para la configuración de su
funcionamiento. En /{debhelper}/, éste es el subdirectorio #{debian/}# de un
árbol de paquetes. Por ejemplo, dh_install buscará, entre otros, un fichero
llamado #{debian/install}# para determinar qué ficheros deben existir en un
paquete binario en particular. De la misma manera, live-build almacena toda
su configuración bajo un subdirectorio #{config/}#.

_* Los scripts son independientes - es decir, siempre es seguro ejecutar
cada comando.

A diferencia de /{debhelper}/, live-build contiene las herramientas para
crear un directorio de configuración en esqueleto. Esto podría ser
considerado como similar a herramientas tales como /{dh-make}/. Para obtener
más información acerca de estas herramientas, seguir leyendo, ya que el
resto de esta sección trata sobre los cuatro comandos más importantes. En
interesante notar que están precedidos por #{lb}# que es una función
genérica para todos los comandos de live-build.

_* *{lb config}*: Responsable de inicializar un directorio de configuración
para la creación de un sistema en vivo. Ver {El comando lb config}#lb-config
para más información.

_* *{lb build}*: Responsable de iniciar la creación de un sistema en
vivo. Ver {El comando lb build}#lb-build para más información.

_* *{lb clean}*: Responsable de la eliminación de partes de la creación de
un sistema en vivo. Ver {El comando lb clean}#lb-clean para  más
información.

3~lb-config El comando #{lb config}#

Como se comentó en {live-build}#live-build, los scripts que componen
live-build obtienen su configuración gracias al comando #{source}# desde un
único directorio llamado #{config/}#. Como la creación de este directorio a
mano sería largo y propenso a errores, se puede utilizar el comando #{lb
config}# para crear el esqueleto de directorios de configuración inicial.

Ejecutar #{lb config}# sin argumentos crea el subdirectorio #{config/}# que
se completa con algunas opciones por defecto en ficheros de configuración y
dos árboles de subdirectorios en forma de esqueleto llamados #{auto/}# y
#{local/}#. 

code{

 $ lb config
 [2015-01-06 19:25:58] lb config
 P: Creating config tree for a debian/stretch/i386 system
 P: Symlinking hooks...

}code

Utilizar #{lb config}# sin ningún argumento sería conveniente para los
usuarios que necesitan una imagen muy básica, o que tienen intención de
proporcionar,  más adelante, una configuración más completa a través de
#{auto/config}# (ver {Gestionar una configuración}#managing-a-configuration
para más detalles).

Normalmente, se tendrá que especificar algunas opciones. Por ejemplo, para
especificar que gestor de paquetes se desea utilizar durante la construcción
de la imagen:

code{

 $ lb config --apt aptitude

}code

Es posible especificar muchas opciones, tales como:

code{

 $ lb config --binary-images netboot --bootappend-live "boot=live components hostname=live-host username=live-user" ...

}code

Una lista completa de opciones está disponible en la página de manual
#{lb_config}#.

3~lb-build El comando #{lb build}#

El comando #{lb build}# lee la configuración del directorio #{config/}#. A
continuación, ejecuta los comandos de nivel inferior necesarios para crear
el sistema en vivo.

3~lb-clean El comando #{lb clean}#

El comando #{lb clean}# es el encargado de eliminar varias partes de una
creación de forma que las creaciones posteriores puedan comenzar de forma
limpia. Por defecto se eliminan las etapas #{chroot}#, #{binary}# y
#{source}# pero se deja el caché intacto. Además, se pueden limpiar etapas
de forma individual. Por ejemplo, si se han realizado cambios que sólo
afectan a la etapa binary, se debe usar #{lb clean --binary}# antes de crear
una nueva binary. Si los cambios modifican el bootstrap y/o los cachés de
paquetes, por ejemplo, cambios en las opciones #{--mode}#,
#{--architecture}# o #{--bootstrap}#, se debe utilizar #{lb clean
--purge}#. Ver el manual de #{lb_clean}# para una lista detallada de todas
sus opciones.

2~live-boot El paquete live-boot

live-boot es una colección de scripts que proporcionan ganchos (hooks) para
/{initramfs-tools}/, que sirve para generar un initramfs capaz de arrancar
sistemas en vivo, tales como los creados por live-build. Esto incluye
imágenes ISO, archivos comprimidos en formato tar para el arranque en red, e
imágenes para llaves USB.

En el momento del arranque, buscará en los medios de almacenamiento de sólo
lectura un directorio #{/live/}# donde se encuentra un sistema de ficheros
raíz (a menudo una imagen del sistema de ficheros comprimidos como
squashfs). Si lo encuentra, creará un entorno de escritura, utilizando aufs,
para que arranquen los sistemas tipo Debian.

Se puede encontrar más información sobre ramfs inicial en Debian en el
Manual del kernel Debian Linux en http://kernel-handbook.alioth.debian.org/
concretamente en el capítulo sobre initramfs.

2~live-config El paquete live-config

live-config consiste en una serie de scripts que se ejecutan en el arranque
después de live-boot para configurar el sistema en vivo de forma
automática. Se ocupa de tareas como la creación del nombre del equipo
(hostname), las variantes locales y la zona horaria, crear el usuario en
vivo, la inhibición de trabajos de cron y el inicio de sesión automático del
usuario en vivo.
