Está en la página 1de 17

Construyendo una Distribución Debian Adaptada

Ernesto Hernández-Novich

Marzo 6, 2008

Resumen
El presente documento es una guía general en el establecimiento de una infraestructura
de desarrollo que permita producir una Distribución de Software Libre como una serie de
adaptaciones a Debian GNU/Linux siguiendo los principios establecidos y recomendados
por las Custom Debian Distributions (CDD).
Este documento es resultado del proceso de investigación y desarrollo para la cons-
trucción de la Distribución GNU/Linux del CNTI, en el marco del proyecto Debian CDD
CNTI. Agradecemos enviar correcciones y sugerencias al autor, a través de la dirección de
correo <emhn@usb.ve>.

1. Ambiente de Desarrollo

1.1. Réplica (mirror ) del Repositorio Debian


Puesto que la construcción de una CDD aprovecha los mismos paquetes provistos por dis-
tribución Debian GNU/Linux el proceso de construcción podría llevarse a cabo utilizando los
repositorios y réplicas ociales del Proyecto Debian, sin embargo es conveniente contar con una
réplica local del repositorio para agilizar la descarga de paquetes.
La réplica local a utilizar debe ser una réplica completa para la arquitectura de interés, esto
es, debe incluir la lista de paquetes y el pool completo de paquetes asociados a la distribución
objetivo, además de los componentes del instalador Debian. La mayor parte de los inconvenientes
y fallas durante la construcción de la imagen están relacionadas con el uso de una réplica parcial
pool
( incompleto) o incompleta (sin componentes de instalador y documentación).

1.1.1. Construcción de la réplica


La manera simple y expedita de construir una réplica con las características descritas con-
siste en utilizar la herramienta anonftpsync [1] provista por el proyecto Debian. Existe otra
herramienta denominada debmirror que también permite crear réplicas parciales, sin embargo
tiene inconvenientes para replicar los elementos del instalador Debian, por tanto es preferible
evitarla. El proceso de construcción debe cumplir los siguientes pasos:

Disponga de un sistema Debian GNU/Linux instalado con Debian Etch. En lo que res-
ta de este documento nos referiremos a este sistema como debian.ejemplo.com, siendo
conveniente que en el servicio DNS de la red aparezca registrado este nombre asociado a
la dirección IP correspondiente.

1
El sistema ha de contar con suciente espacio en disco [2] para la construcción de la
réplica. El espacio asignado para la réplica debe estar en la partición sobre la cual resida
/var/www/debian.
Instale Apache2 (aptitude install apache2) y asegúrese que cualquier cliente Web pue-
de visitar http://debian.ejemplo.com/debian y acceder al directorio raíz de la réplica.

Instale rsync (aptitude install rsync).


Coloque el script anonftpsync en el directorio /usr/local/sbin y modifíquelo para ajus-
tarse a sus necesidades particulares de replicación. El script tiene comentarios que explican
con detalle todas las opciones. Como mínimo es necesario especicar:

• El directorio en el cual se construirá la réplica, indicado en la variable TO.


• El servidor remoto a partir del cual tomar la copia utilizando rsync, indicado en
la variable RSYNC_HOST. Puede usarse cualquiera de los servidores principales [3] del
proyecto Debian GNU/Linux.

• En el servidor remoto debe existir un directorio raíz sobre el cual operar el rsync,
indicado en la variable RSYNC_DIR.
• La dirección de correo del usuario responsable del mirror, indicada en la variable
MAILTO, de manera que las operaciones de sincronización envíen un reporte de éxito
o fallo automáticamente.

Así, para hacer una réplica completa de todas las distribuciones y todas las arquitecturas
basta utilizar algo similar a:

TO=/var/www/debian
RSYNC_HOST=ftp.ch.debian.org
RSYNC_DIR=debian/
MAILTO=mirroradmin@ejemplo.com
Una vez modicado el script, utilice el comando chown para que pertenezca al usuario
root y grupo root, y el comando chmod para que sólo el dueño pueda ejecutarlo. Si se
ejecuta el comando manualmente, en el archivo /var/log/debian-mirror.log aparecerán
los resultados del trabajo de sincronización paulatinamente. Note que la primera vez que
ejecute el comando tomará un tiempo considerable en culminar su trabajo.

1.1.2. Mantenimiento de la réplica


Para que la réplica sea útil es necesario mantenerla actualizada. El script anonftpsync está
diseñado no sólo para la creación inicial, sino también para el mantenimiento diario de la réplica,
pues utiliza rsync para descargar las diferencias interdiarias, eliminar los archivos a medida que
se eliminan del repositorio principal y ajustar las listas de paquetes.
Para que el mantenimiento de la réplica sea automático, incluya la ejecución del comando
en el archivo /etc/crontab del sistema. Es conveniente hacer no menos de una sincronización
diaria, de manera que puede colocarse una línea similar a
30 1 * * * root /usr/local/sbin/anonftpsync > /dev/null 2>&1
con lo cual se logra que la actualización diaria comience a la 1:30 de todos los días.

2
1.1.3. Réplicas de otros repositorios
Para ahorrar ancho de banda y facilitar el acceso a paquetes de interés que no están en
el repositorio principal del Proyecto Debian, es conveniente crear réplicas locales en otras ubi-
caciones. En particular, el mecanismo CDD es capaz de aprovechar los parches de seguridad
emitidos regularmente por el Proyecto Debian [4] y los paquetes para extensiones multimedia
provistos por Christian Marillat [5]. En estos casos, puede repetirse el proceso de replicación
pero utilizando diferentes directorios dentro del servidor.
Por ejemplo, para construir una réplica de los paquetes para extensiones multimedia provistos
por Christian Marillat, pero solamente para las arquitecturas i386 y amd64, puede utilizarse un
script similar a

#!/bin/bash
DM=/usr/bin/debmirror
HOST=www.debian-multimedia.org
DIST="etch,lenny,sid"
ARCH="i386,amd64"
SECT="main"
$DM /var/www/debian-multimedia/ \
--progress \
--method=http \
--root='.' \
--rsync-batch=500000 \
--host=$HOST \
--dist=$DIST \
--arch=$ARCH \
--section=$SECT \
--cleanup \
--source \
--getcontents \
--ignore-missing-release

En el resto del documento, asumiremos que existen réplicas par ambos repositorios adicionales,
http://debian.ejemplo.com/debian-security
disponibles en el servidor a través de los URL
y http://debian.ejemplo.com/debian-multimedia respectivamente.

1.2. Estación de Trabajo de Adaptación.


Es necesario un equipo en el cual llevar a cabo la construcción de las imágenes de instalación
de los CDD, aplicando de forma iterativa el proceso descrito más adelante. El proceso de cons-
trucción de las imágenes demanda una cantidad importante de espacio en disco, no solamente
para contener las múltiples imagenes de CD-ROM y posiblemente DVD generadas durante el
proceso, sino también los paquetes y elementos de conguración intermedios que son necesarios
durante el proceso, así como posiblemente la ejecución de máquinas virtuales para vericar la
funcionalidad de las distribuciones generadas.

3
1.2.1. Requerimientos.
Es recomendable que la estación de trabajo para las tareas de adaptación y producción de
los CDD tenga:

Procesador de 32 bits de última generación. Mientras más rápido sea el procesador, más
eciente será el proceso de generación de las imágenes así como su prueba por simulación.
Un Pentium M de 1.4GHz sería lo mínimo para ser productivo.
Suciente memoria RAM para poder ejecutar tanto el ambiente gráco en el cual trabaja
el usuario adaptador como sostener las máquinas virtuales para emulación durante las
pruebas. Lo mínimo para ser productivo es contar con 512Mb de RAM.
Suciente espacio en disco para contener la instalación del sistema con su ambiente de
escritorio, las imágenes ISO que se generen, la réplica local de los paquetes que son utiliza-
dos para la confección del CDD y los archivos de conguración que la denen. Lo mínimo
para ser productivo es contar con 40Gb de disco duro.

Una unidad CD-R/CD-RW para poder preparar las imágenes físicas con las ISOs genera-
das durante el proceso de adaptación.

1.2.2. Instalación de Referencia.


Es recomendable que la estación de trabajo para las tareas de adaptación y producción de
CDD cumpla con al menos las siguientes características mínimas de instalación:

Debian GNU/Linux Etch con las últimas actualizaciones de seguridad disponibles con el
ambiente de escritorio tradicional y con el kernel adecuado para la máquina antriona.
Asumiendo una máquina con arquitectura i386 (Pentium III, Pentium 4, Pentium M,
Xeon, etc.) se utiliza linux-image-2.6-686.
Puede utilizarse RAID por hardware, RAID por software, LVM o particiones crudas. En
todo caso se sugiere el particionamiento

• 256Mb para /

• 1Gb para swap

• 4Gb para /usr

• 4Gb para /var

• El resto en /home

Instalar los paquetes rsync, syslinux, netpbm, reprepro, apt-utils, wget, python,
debootstrap y lsb-release de la versión Debian Etch usando aptitude o synaptic.
Instalar manualmente la última versión disponible del paquete debian-cd[9].1 El paque-
te .deb se descarga usando el navegador y una vez en el escritorio puede instalarse bien
sea con la herramienta gráca gdebi o bien desde la línea de comandos utilizando dpkg.
1A la fecha de escritura de este documento, la versión más reciente de debian-cd es la 3.0.3.

4
Instalar manualmente la última versión disponible del paquete simple-cdd [6].2 El pa-
quete .deb se descarga usando el navegador y una vez en el escritorio puede instalarse
bien sea con la herramienta gráca gdebi o bien desde la línea de comandos utilizando
dpkg.
Una vez creadas las imágenes ISO con las CDD, es posible vericar su funcionalidad utili-
zando algún emulador que permita construir máquinas virtuales con capacidades grácas.
El autor utiliza QEmu para ese propósito, por tanto recomienda instalar:

3
• El paquete qemu, para tener el emulador y todas sus dependencias.

• El paquete con los módulos del kernel apropiados para acelerar el funcionamiento
de QEmu en la máquina antriona. Los módulos dependen del kernel particular
instalado, y para nuestro ejemplo sería necesario instalar kqemu-modules-2.6-686.

2. Procedimiento de Construcción

La metodología de creación de CDD utilizando simple-cdd consiste en utilizar las herra-


mientas existentes en Debian (debian-cd, reprepro, debootstrap, debconf, etc.) para cons-
truir una imagen de instalación basada en el Instalador Debian [7] pero con las adaptaciones de
interés.
El desarrollador del CDD debe establecer la lista de paquetes a instalar y puede denir la
lista de respuestas automáticas (debconf preseeding ) a aplicar sobre aquellos componentes que
sea menester (paquetes o diálogos de instalación). Adicionalmente puede establecer la ejecución
de scripts desarrollados a la medida, para instalar o congurar cosas que no estén empaquetadas
o que no aprovechen debconf.
El desarrollador del CDD puede construir varias listas y así denir perles ( proles ) que
permiten al usuario seleccionar durante la instalación el conjunto de paquetes, conguraciones y
scripts deseados. De ese modo es posible contar con una CDD que incluya variantes de instalación
a seleccionar de manera simple y directa.
El proceso de desarrollo del CDD es iterativo: se inicia con una conguración básica con-
teniendo un único perl simple, el cual va siendo enriquecido agregando más paquetes, más
conguraciones y más scripts de conguración. En cada iteración, se genera un ISO, se verica
su funcionalidad en la máquina virtual y posiblemente en una máquina real. Se repite el proceso
bien sea agregando o eliminando paquetes del perl, o construyendo un perl adicional.

2.1. Area de Trabajo


El desarrollo del CDD queda enteramente contenido en un directorio, de modo que si se
desea construir varias CDD diferentes, cada una de ellas requerirá un directorio de trabajo.
El desarrollador del CDD ingresará en el sistema de desarrollo con su usuario habitual de
trabajo (que no sea root), y utilizará la línea de comandos para preparar el area de trabajo
2A la fecha de escritura de este documento, la versión más reciente de simple-cdd es la 0.3.6.
3 La conguración detallada de QEmu escapa al alcance de este documento. Consulte la documentación
incluida con el paquete qemu para determinar las maneras en las cuales puede congurarse más efectivamente.

5
$ mkdir testcdd
$ cd testcdd

El directorio estará inicialmente vacío y es responsabilidad del desarrollador del CDD crear el
perl mínimo de trabajo, así como el archivo de conguración para la herramienta simple-cdd.

2.2. Creando el perl inicial


Dentro del directorio de trabajo, se construye a su vez otro directorio que debe tener el
nombre profiles.

$ mkdir profiles

Este directorio contendrá todos los archivos necesarios para denir los perles. La herramienta
identica los perles según los nombres de los archivos que encuentra, de manera que para crear
el perl de nombre inicial, es necesario crear:

inicial.packages Este archivo de texto es obligatorio en la denición del perl y contie-


ne un nombre de paquete Debian por cada línea. Los paquetes que se indiquen en este
archivo serán instalados y congurados automáticamente durante el proceso de instala-
ción del CDD. No es necesario incluir las dependencias de los paquetes de interés pues
la herramienta de construcción es capaz de determinarlas e incluirlas automáticamente;
openoffice.org y se instalarán todos los paquetes de los cuales
basta agregar la línea
dependa openoffice.org, sin necesidad de enumerarlos. Las líneas en blanco y las lí-
neas que comienzan con # se ignoran, así que pueden utilizarse como separadores o para
documentar grupos de paquetes y las razones por las cuales se incluyen.

inicial.description Este archivo de texto es opcional y contiene una sola línea de texto con
una descripción resumida del propósito del perl. Lo que se escriba en este archivo será
utilizado como descripción informativa para el usuario durante el proceso de instalación,
de manera que pueda decidir cuales perles seleccionar.

inicial.preseed Este archivo de texto es opcional y contiene las selecciones a utilizar por
omisión (el preseed ) para las preguntas de conguración que presente el Instalador De-
bian o cualquier paquete que utilice debconf para congurarse. El formato del archivo es
idéntico al requerido por el utilitario debconf-set-selections [8].

inicial.postinst Este archivo de texto es opcional y contiene un script de shell que será
ejecutado automáticamente una vez que se hayan instalado todos los paquetes indicados
en el perl. La intención de este script es realizar las conguraciones manuales necesarias
para aquellos paquetes que no aprovechan debconf.

2.3. Archivo de conguración.


Una vez denidos los archivos para uno o más perles dentro del directorio proles, es
necesario crear un archivo de conguración para la creación de la imagen. El paquete simple-cdd
incluye un archivo de conguración de ejemplo, completamente documentado, el cual puede

6
encontrarse en el directorio /usr/share/doc/simple-cdd/examples y que sirve de punto de
partida.
Así construimos el archivo simple-cdd.conf dentro del directorio de trabajo conteniendo

# Directorio de trabajo
simple_cdd_dir=`pwd`
# Perfiles a incluir en el CD
# (separados por espacio en blanco)
profiles=inicial
# Para que el perfil se instale sin preguntar
auto_profiles=inicial
# Paquete aplicador de perfiles
profiles_udeb_dist=sid
# Idioma del instalador
language=Spanish
# País por omisión
country=Venezuela
# Mirror principal del cual tomar paquetes
# y componentes del instalador.
server=debian.ejemplo.com
debian_mirror=http://$server/debian
rsync_debian_mirror=$server::debian
mirror_components=main contrib non-free
# Mirror para actualizaciones de seguridad
security_mirror=http://debian.ejemplo.com/debian-security
# Mirror extra con paquetes extra y componentes.
debian_mirror_extra=http://debian.ejemplo.com/debian-multimedia
mirror_components_extra=main
# Directorio local con paquetes .deb extra a instalar
# (posiblemente con arte gráfico, archivos a sembrar, etc.)
local_packages=${simple_cdd_dir}/Estilo/*.deb
# Imagen SPLASH para el CD
export SPLASHPNG=${simple_cdd_dir}/inicial.png
# Nombre del CD
export DISKINFO=CDD Inicial Debian GNU/Linux

2.4. Generación del CDD


Una vez preparado el archivo de conguración y la información del perl, estamos en posición
de generar la imagen del CDD. El proceso de generación es llevado a cabo por el utilitario
simple-cdd invocado desde la línea de comando con las opciones adecuadas. En nuestro caso
$ simple-cdd --conf simple-cdd.conf
que realizará la construcción de la imagen. El proceso consta de varias etapas:

1. Se analizan los paquetes incluidos en el perl para determinar su disponibilidad y la de


sus dependencias entre los repositorios suministrados.

7
2. Se utiliza el paquete debootstrap de la arquitectura objetivo (en nuestro caso i386)
para determinar los paquetes obligatorios que deben incluirse en el instalador para poder
lograr una instalación base mínima funcional. La lista de paquetes particulares estará en
tmp/deboostrap en un archivo con el nombre de la distribución y plataforma (etch-i386).
3. Se descargan todos los paquetes necesarios para debootstrap y para los perles denidos
en el CDD. dentro del directorio de trabajo en el subdirectorio tmp/mirror, construyendo
un repositorio parcial solamente con los paquetes a incluir en el CDD. Mientras más paque-
tes sean necesarios, más tiempo tomará analizarlos, más tiempo tomará descargarlos y más
espacio ocuparán localmente. Note que si se tiene un repositorio con las actualizaciones
de seguridad, se descargarán los paquetes más actualizados.

4. Se prepara una conguración especíca del utilitario debian-cd [9] dentro del directorio
tmp/debian-cd pertinente para la construcción del CDD. La conguración generada es
suciente para la mayoría de los casos, pero si se desea alguna optimización particular
basta modicar los archivos de conguración de debian-cd de manera apropiada. El tipo
de conguraciones y cosas que pueden lograrse con debian-cd escapan al alcance de
este documento, de modo que debe referirse a la documentación de debian-cd para más
detalles.

5. Si todos los paquetes fueron descargados correctamente, no hay ninguna dependencia


incompleta y hay espacio en disco suciente, se genera una imagen ISO9660 contentiva
del instalador y los paquetes deseados. La imagen será depositada en el directorio de
trabajo dentro del subdirectorio images.

El proceso de creación de la imagen produce varias bitácoras de avance dentro de los directorios
de trabajo. Si la operación no puede llevarse a cabo exitósamente, aparecerá un mensaje de
error acorde; si este mensaje resulta escueto, pueden consultarse las bitácoras de operación para
determinar con precisión la causa del error. Las bitácoras de interés son:

tmp/cd-build/etc/log.add_packages que cubre la fase de recopilación de paquetes desde


la copia local hacia la imagen ISO.

tmp/cd-build/etc/log.list2cds.i386 que cubre la fase de inclusión de paquetes y cálculo


de las dependencias. Cuando el mensaje de error emitido por la herramienta apunta a
paquetes faltantes, se comienza por examinar ésta bitácora para determinar si se trata de
dependencias fallidas o incorrectamente calculadas. La última línea de esta bitácora reeja
la cantidad de paquetes que se incluirán, así como el espacio estimado que ocuparán.

2.5. Probando el CDD.


La imagen generada debe probarse para determinar si cumple con los requerimientos desea-
dos y es en efecto instalable. Para ello es conveniente utilizar el emulador QEmu.

1. Se construye una imagen de disco virtual que servirá como disco duro para la máquina
emulada. Típicamente una imagen de 2-4Gb es suciente para las instalaciones, y para
ello se ejecuta el comando

$ qemu-img create disk.img 4G

8
2. Se ejecuta el emulador QEmu utilizando la imagen de disco como si fuese su disco duro
principal y la imagen ISO9660 como si fuese el CD-ROM. Se indica a QEmu que inicie
la emulación arrancando desde el CD-ROM para así simular la instalación. Para ello se
ejecuta el comando

$ qemu -hda disk.img -cdrom imagen.iso -boot d


3. Se abrirá una ventana en la cual se aprecia la emulación del hardware y el arranque de
la imagen de instalación. En ella pueden seguirse los pasos de instalación, particionado,
instalación de paquetes, etc. observando si cumple con los requerimientos deseados.

3. Adaptación del CDD.

La razón por la cual se desarrolla un CDD es porque se desea imponer una imagen y con-
guraciones especícas de aquellas incluidas en la distribución estándar Debian GNU/Linux,
pero aprovechar todos los paquetes y herramientas disponibles en Debian GNU/Linux. En este
sentido, la herramienta simple-cdd ofrece varios mecanismos que pueden aprovecharse para
lograr la adaptación.

3.1. Imagen de arranque del CD de instalación.


Cuando se inicia el CD de instalación de Debian GNU/Linux, aparece una imagen contenien-
do el logo de Debian GNU/Linux. Es posible cambiar esa imagen por cualquier otra, siempre
y cuando sea un PNG con paleta de 4 bits con un máximo de 14 (catorce) colores con una
resolución de 640 pixels de ancho y no más de 400 pixels de alto.
El archivo que contiene la imagen debe ubicarse en el directorio de trabajo, y hacer referencia
a ella en el archivo simple-cdd.conf en la variable de ambiente SPLASHPNG.

3.2. Selección de Paquetes.


Los paquetes mínimos para la instalación son seleccionados automáticamente en virtud del
uso de debootstrap y por razones obvias ninguno de esos paquetes puede ser removido. De
manera que a falta de un perl, el CD de instalación contendrá lo mínimo indispensable para
que el sistema instalado sea útil y permita instalar manualmente el resto de los paquetes que se
desee.
Pueden agregarse tantos paquetes como se desee dentro de los perles para constituir la
selección automática de paquetes a instalar ante la selección de cada perl. En el archivo de
conguración simple-cdd.conf se utiliza la directiva profiles=perfil1 perfil2 perfil3
para indicar los perles que deben incluirse en la imagen. Durante la instalación se le presentará
al usuario una lista de todos los perles contenidos en el disco, dándole la oportunidad de
seleccionar uno o más de ellos. Se combinarán los paquetes de todos los perles seleccionados
durante la instalación, de manera que es posible tener un mismo paquete en más de un perl.
También es posible forzar la instalación de uno o más perles sin necesidad que el usuario
los seleccione, automatizando aún más el proceso de instalación. Para aprovechar esta funciona-
lidad se utiliza la directiva auto_profiles=perfil1 perfil2 en el archivo de conguración
simple-cdd.conf, cuyo resultado es instalar los perles indicados automáticamente.

9
En la lista de paquetes no se pueden agregar paquetes linux-image-*. El instalador ya
tiene paquetes adecuados de kernel para instalar y lo hará automáticamente. La imagen de
instalación se creará con el kernel genérico para la arquitectura; en el caso de la arquitectura
i386, se utilizará el kernel linux-image-2.6-486, que opera por igual en cualquier procesa-
dor Intel o AMD sin optimizaciones especiales. Si se preere incluir uno o más paquetes con
imágenes de kernel optimizadas para una o más arquitecturas superiores, deben indicarse a
simple-cdd en la línea de comandos de construcción de la imagen de instalación utilizando la
opción --kernel-packages.
Una manera de construir la lista de paquetes es seleccionarlos uno a uno a partir de una
máquina en la cual se ha instalado todo lo que se necesita. Esto es, se instala un sistema modelo,
y luego se extrae la lista de paquetes instalados aprovechando el comando dpkg, pero ltrando
los paquetes correspondientes al kernel con un comando similar a
$ dpkg --get-selections | grep -v linux-image | cut -f1
Otra manera de construir la lista es utilizar alguno de los Tasks denidos en Debian como
punto de partida y completarlo. Con el comando
$ tasksel --list-tasks
se muestran todos los Tasks denidos en Debian, mientras que el comando
$ tasksel --task-packages desktop
muestra los paquetes que conforman el Task Desktop tal como lo dene Debian. Esa lista
de paquetes podría utilizarse como punto de partida para crear un perl.

3.3. Conguración Automática.


Una cantidad importante de paquetes Debian reciben su conguración a través de la base de
datos debconf. Esta contiene un listado de preguntas de conguración, además de sus valores
posibles y seleccionados. Cuando se instala el paquete, las preguntas son presentadas al usuario
para que las conteste apropiadamente. Algunas preguntas pueden obviarse, como por ejemplo
si se desea aceptar la licencia de Java, o en cuál interface activar DHCP; pero otras son críticas
y no pueden dejar de ser contestadas como por ejmplo el tipo de teclado de la máquina o el
nombre del usuario a crear.
Cuando se crea un CDD es posible suministrar un archivo con las respuestas por defecto y
las preguntas que aún deben ser formuladas, de manera que al efectuar la instalación la cantidad
de información solicitada al usuario sea mínima.

3.3.1. Sembrando Respuestas para el Instalador.


El Instalador Debian cuenta con una amplia gama de opciones que pueden ser sembradas
de manera automática para simplicar el proceso de instalación [10]. Evidentemente, mientras
menos preguntas se formulen resultará más fácil para el usuario, pero menos exible para el
experto.
En principio podría automatizarse toda la instalación salvo las preguntas relacionadas con
la identidad del usuario y el nombre de la máquina. La siguiente selección muestra un ejemplo
mínimo de conguración que podría estar incluído en el archivo inicial.preseed:

d-i debian-installer/locale string es_VE.UTF-8


d-i time/zone select America/Caracas

10
d-i clock-setup/utc boolean true
d-i popularity-contest/participate boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i netcfg/hostname string ejemplo
d-i netcfg/choose_interface select auto
d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Configure network manually

Con esta conguración se lograría que el instalador inicie automáticamente en idioma español,
asumiendo que el país es Venezuela y congurando el reloj de la máquina en hora UTC. Tiene
el efecto adicional que la instalación de paquetes incluirá la sección contrib y non-free de
los repositorios, con lo que será posible instalar controladores privativos y otros paquetes que
dependen de contenido que no está en los repositorios Debian (fonts de Microsoft, plugins de
Flash, plugin de Java). Por último, la máquina será nombrada ejemplo, intentará congurar
automáticamente la red usando DHCP sobre la primera interfaz que se detecte y en caso de no
poder hacerlo lo noticará.
Quedan abiertas las preguntas sobre el nombre de usuario y el esquema de particionamiento.
Esta última también puede ser preestablecida como lo explica la documentación, pero es prefe-
rible dejar el diálogo actual que ofrece la opción de particionamiento automático; es importante
notar que si el idioma de instalación es diferente al inglés (como es nuestro caso) en la siembra
de la pregunta debe utilizarse el nombre de la receta de particionamiento en el idioma de la
instalación. Así, si se quiere utilizar la receta que separa la partición /home del resto, la siembra
adecuada sería

d-i partman-auto/choose_recipe select Separar la partición /home

Una conguración interesante es la de deshabilitar el usuario root y activar el uso de sudo para
la administración. Para lograr eso, basta con que el perl incluya el paquete sudo y que en el
archivo de preseed se incluya

passwd passwd/root-login boolean false

esto tiene el efecto de deshabilitar el superusuario (se le coloca una clave imposible) y congurar
sudo para que el usuario regular pueda realizar las labores administrativas con su propia clave.

3.3.2. Sembrando Respuestas para los Paquetes.


Si dentro del perl se selecciona algún paquete que es congurado con debconf, es natural
querer automatizar las respuestas a las preguntas que sean necesarias para hacerlo funcionar
con la mínima intervención del usuario. En este sentido, la manera más práctica de lograrlo es
como sigue:

1. Instalar el paquete en la máquina de pruebas y congurarlo usando debconf.

11
debconf-show para observar las posibles preguntas y las respues-
2. Aprovechar el utilitario
tas que están almacenadas en la base de datos debconf. Por ejemplo, para el paquete
sun-java5-jre puede hacerse
debconf-show sun-java5-jre
y se obtiene como salida

* shared/accepted-sun-dlj-v1-1: true
sun-java5-jre/jcepolicy:
sun-java5-jre/stopthread: true
shared/error-sun-dlj-v1-1:
* shared/present-sun-dlj-v1-1:
donde las líneas marcadas con * indican las preguntas que fueron contestadas durante la
conguración del paquete. La que nos interesa es precisamente la primera que es la de
aceptación de la licencia.

3. Incluir en el archivo preseed del perl la pregunta con la respuesta adecuada asociada al
paquete de interés. En el caso del paquetes sun-java5-jre agregaríamos

sun-java5-jre shared/accepted-sun-dlj-v1-1 boolean true

3.3.3. Conguración automática del Perl de los Usuarios.


Durante el proceso de instalación, una vez terminada la instalación de paquetes en el sis-
tema destino se procede a crear el usuario con la identidad especicada durante el proceso de
instalación. La creación de cualquier usuario se hace utilizando el comando adduser que a su
vez hace uso del modelo de creación de usuario existente en /etc/skel.
Si se desea que la conguración inicial del primer usuario tenga características particulares,
basta colocar en /etc/skel aquellos componentes necesarios para lograrlo. Para ello es necesario
crear un paquete Debian a la medida que contenga los archivos y directorios a colocar en
/etc/skel posiblemente acompañado de un script de ajuste para preferencias del ambiente
de escritorio. Típicamente se incluyen en /etc/skel archivos .profile, .vimrc, directorios
de conguración para aplicaciones generales que no son de escritorio, incluso la creación de
un directorio Desktop dentro del cual colocar los archivos o enlaces que deben aparecer en el
escritorio de los usuarios.
Los usuarios creados posteriormente a la instalación también recibirán la conguración inicial
a partir del modelo contenido en /etc/skel.

3.3.4. Conguración automática de apariencia.


La forma portátil y eciente de lograr la conguración automática de la apariencia de la
instalación se basa en crear paquetes Debian que incluyan los elementos de arte gráco adi-
cionales y hacer que se instalen automáticamente. Cada elemento de arte tiene características
particulares y debe ser instalado de manera particular, por lo cual los paquetes Debian a crear
tendrán que adecuarse en cada caso. La forma de construir un paquete Debian está fuera del

12
alcance de este documento, siendo necesario estudiar el Debian Policy [11] y la Guía para Man-
tenedores Novatos [12]. Solamente describiremos la estructura necesaria de los elementos de arte
y la estrucura de los paquetes esenciales para la conguración.
Se han diseñado dos paquetes originales para la conguración automática de la apariencia:

debian-simple-cdd-themes, que genera paquetes individuales conteniendo los elementos


de arte gráco para colocarlos en directorios centrales particulares. Todos los objetos de
arte gráco residen en un subdirectorio particular (grub, gdm, etc.) a partir de la raíz
del paquetes, y en el directorio debian están los archivos de construcción del paquete
siguiendo los estándares del Debian Policy.

debian-simple-cdd, que genera paquetes individuales conteniedo las acciones de con-


guración adicionales para habilitar los elementos de arte gráco de forma automática.

Cada paquete está contenido en un directorio del mismo nombre, todos ellos dentro del directorio
Estilo en el área de trabajo de construcción del CDD. Para construir los paquetes, basta
ubicarse en el directorio raíz que los contiene y ejecutar el comando de construcción apropiado

$ cd testcdd/Estilo/debian-simple-cdd-themes
$ debian/rules binary

de manera que se generen los múltiples archivos .deb en el directorio testcdd/Estilo. Es-
te directorio debe aparecer en la directiva local_packages del archivo de conguración de
simple-cdd para que sean incluidos en el CDD.

Imagen de Arranque de GRUB


GRUB es el gestor de arranque del sistema y tiene la posibilidad de colocar una imagen de
fondo por detrás del menú de selección de imágenes de arranque. El último paso del proceso de
instalación del CDD es precisamente instalar GRUB en el sector de arranque del disco duro; si
para ese momento se ha instalado algún paquete que provea la imagen del menú de arranque
en el lugar adecuado, entonces quedará instalada.
Para poder utilizar una imagen como fondo de GRUB está debe tener una resolución de
640x480 pixels, tener una paleta de 4 bits con un máximo de 14 colores y estar en formato XPM.
La imagen se coloca en debian-cnti-cdd-themes/grub/debian-cnti-splash.xpm antes de
construir el paquete debian-cnti-cdd-themes. El paquete será instalado durante la fase de
instalación del CDD y la imagen se ubicará denitivamente en el directorio /boot/grub.
En los sistemas Debian GNU/Linux se dispone del comando update-grub para generar
automáticamente los archivos de conguración de GRUB. En particular el comando verica la
existencia del archivo /boot/grub/splash.xpm.gz y lo utiliza como imagen de fondo de GRUB.

Imagen de Entrada en GDM


GDM es el gestor de acceso al escritorio que solicita las credenciales de usuario para permitir
el ingreso. La documentación de GDM [13] describe con lujo de detalles los procedimientos a
seguir para crear un GDM Theme que puede instalarse en el sistema y que el administrador
puede seleccionar voluntariamente.

13
Se ha creado un GDM Theme prototipo con la intención que sirva como punto de partida
para adaptaciones futuras, posiblemente creando varios. Todos los componentes del tema para
GDM se encuentran en el directorio debian-cnti-cdd-themes/gdm/: imágenes PNG para los
íconos de acción, una imagen PNG para el fondo de pantalla, el archivo XML con la descripción
de la geometría del tema y un archivo .desktop para describir el tema a Gnome.

Imagen para Splash y Fondo de Escritorio


La imagen para Fondo de Escritorio es independiente del entorno de escritorio en uso, sin
embargo en la CDD se utiliza Gnome como ambiente de escritorio por defecto, de manera que
no solamente es necesario instalar la imagen en el directorio apropiado, sino que también debe
congurarse Gnome para utilizarla automáticamente para cualquier nueva sesión de usuario.
La imagen de splash es especíca de Gnome y al igual que con la imagen anterior, es necesario
ubicarla en el directorio apropiado y luego congurar Gnome para utilizarla automáticamente
para cualquier nueva sesión de usuario.
Las imagenes para el fondo de pantalla de escritorio y splash se colocan en el directo-
rio debian-cnti-cdd-themes/images/debian-cnti-cdd.png la primera, y en el directorio
debian-cnti-cdd-themes/images/splash/splash.png respectivamente, antes de construir el
paquete debian-cnti-cdd-themes. La primera debe tener una resolución mínima de 1280x1024
mientras que la segunda debe tener una resolución de 400x300; en ambos casos, se tiene total
libertad en la cantidad de colores a utilizar.

Conguración de las Preferencias


Las preferencias de Gnome se almacenan en la base de datos GConf que son particulares
a cada usuario. Cuando un usuario ingresa por primera vez a Gnome, se construye una con-
guración inicial basada en los valores por omisión del sistema. Si se modica la conguración
por omisión del sistema de manera adecuada, entonces cualquier usuario nuevo que ingrese a
Gnome por primera vez recibirá la conguración automáticamente. Note que esto no afecta
las conguraciones de usuarios que ya hayan sido creados. La base de datos de preferencias de
Gnome se manipula con el comando gconftool-2, el cual es capaz de modicar por lotes las
claves dentro de la base de datos. El utilitario Conguration Editor de Gnome permite explorar
las claves con una interfaz gráca de manera que pueda extraerse la información para luego
aplicarla con gconftool-2 de forma automática.
Las preferencias de GDM se encuentran en el archivo /etc/gdm/gdm.conf, el cual debe ser
editado para escoger el tema adecuado.
Para lograr que el CDD imponga este conjunto de conguraciones es necesario que luego de
instalados los paquetes con imagen gráca, se ejecute un script que aplique las conguraciones.
El paquete debian-simple-cdd contiene el script de instalación para las preferencias de Gnome,
el tema de GDM y la imagen de GRUB.

3.3.5. Receta de Particionamiento


El Instalador Debian ofrece un mecanismo mediante el cual las labores de particionamiento
y asignación de sistemas de archivo pueden automatizarse tanto como se desee. En principio,
podría congurarse de tal forma que el usuario no tenga ninguna intervención en el proceso,

14
y la instalación disponga del disco automáticamente según los parámetros que el creador de la
CDD disponga.
La ventaja de establecer una receta de particionamiento está precisamente en liberar al usua-
rio de la posible complejidad del proceso y de tomar decisiones sobre un tema que no domina.
La desventaja de establecer una receta de particionamiento está en que se resta exibilidad al
usuario avanzado que quiere controlar con precisión la disposición de la información en el disco.
Si uno no establece ninguna receta de particionamiento, la herramienta simple-cdd genera
una receta para crear una sola partición. En principio es recomendable establecer alguna receta
de particionamiento más razonable que esa, y en secciones anteriores se describió como sembrar
la receta para separar las particiones / y /home. Sea cual sea la receta deseada, la siembra debe
hacerse utilizando su nombre en el idioma del CDD. Al establecer una receta personalizada o
dejar que simple-cdd genere la receta de partición única, se pierde la funcionalidad de particio-
namiento asistido que ofrece el Instalador Debian y en consecuencia la posibilidad de particionar
a gusto.
Si uno no quiere una receta de particionamiento y desea que el asistente de particio-
namiento del Instalador Debian opere de la manera tradicional, debe modicar el archivo
/usr/share/simple-cdd/profiles/default.preseed y colocar en comentarios las siembras
de partman/choose_recipe. Este archivo de siembra es agregado automáticamente a cualquier
CDD, y al eliminar la siembra de recetas de particionamiento se habilitará el uso del asistente
de particionamiento estándar del Instalador Debian.

3.3.6. Conguraciones extra.


Algunos paquetes, a pesar de utilizar debconf, requieren actividades de conguración adi-
cional para operar correctamente. Estas actividades de conguración pueden involucrar la copia
de archivos o la ejecución de comandos arbitrarios. Justo al terminar la instalación de pa-
simple,
quetes del perl el instalador CDD ejecutará el script de post-instalación denido en
simple.postinst.
Este script de shell puede incluir todas las actividades de conguración necesarias. Por
ejemplo, cuando se instala Xorg es posible congurar automáticamente el teclado en base al
modelo de teclado que el usuario escogió durante la instalación, y también es posible suministrar
una lista de resoluciones que uno quiere activar automáticamente si la tarjeta de video es capaz.
Desafortunadamente, para que esas conguraciones sean aplicadas es necesario que el sistema
base ya esté instalado, y como el paquete Xorg es instalado simultáneamente por mucho que
se siembren respuestas en simple.preseed estás no se aplicarán.
Otra conguración interesante es la de colocar orígenes de paquetes preestablecidos en el
archivo /etc/apt/sources.list de la instalación.
La solución es realizar las actividades en el script de post-instalación. Ese script es invocado
automáticamente al terminar la instalación, y su ejecución se realiza en un chroot construido
sobre la instalación en el disco duro, de manera que pueden utilizarse comandos y nombres de
archivo absolutos, haciendo referencia de ese modo a los contenidos de la instalación.
#!/bin/sh
while read line
do
echo $line | debconf-set-selections
done < <SEEDS

15
xserver-xorg xserver-xorg/autodetect_monitor boolean true
xserver-xorg xserver-xorg/autodetect_keyboard boolean true
xserver-xorg xserver-xorg/config/display/modes multiselect 1280x1024, 1280x800,
1024x768
SEEDS
dpkg-reconfigure -fnoninteractive xserver-xorg
echo deb http://www.debian-multimedia.org/ etch main > >/etc/apt/sources.list

Referencias

[1] anonftpsync
Script de shell que facilita la construcción de mirrors completos o parciales Debian. Está
disponible en http://www.debian.org/mirror/anonftpsync
[2] Dimensiones de un mirror Debian.
http://www.debian.org/mirror/size
[3] Lista de Mirrors Ociales Debian.
http://www.debian.org/mirror/official
[4] Actualizaciones de Seguridad del Proyecto Debian.
http://www.debian.org/security/
[5] Paquetes Multimedia para Debian GNU/Linux provistos por Christian Marillat.
http://www.debian-multimedia.org/
[6] simple-cdd.
Herramientas utilitarias para facilitar la creación de Custom Debian Distributions provista
por el Proyecto Debian en la distribución unstable a.k.a. Sid y disponible para su descarga
manual en http://packages.debian.org/sid/simple-cdd
[7] Debian Installer
http://wiki.debian.org/DebianInstaller
[8] debconf-set-selections
Utilitario de línea de comandos exclusivo de Debian GNU/Linux que permite insertar
valores por defecto en la base de datos de conguración de debconf. Los detalles de formato
pueden encontrarse en su página de manual, legible con man debconf-set-selections.
[9] debian-cd
Herramienta para construir discos de instalación (CD o DVD) de la distribución Debian
GNU/Linux disponible en http://packages.debian.org/sid/debian-cd. La documen-
tación se incluye al instalar el paquete homónimo.

[10] Preseeding
Es la técnica que permite suministrar respuestas por omisión a los diferentes componentes
del Instalador Debian para automatizar el proceso. La documentación detallada de refe-
rencia se encuentra en http://www.debian.org/releases/stable/i386/apb.html.en

16
[11] Debian Policy
Guía que describe la estructura y contenidos de los repositorios y sistemas Debian, así como
las especicaciones y condiciones que deben cumplir los paquetes para ser adecuados. Se
encuentra en http://www.debian.org/doc/debian-policy/, pero también se instala con
el paquete debian-policy.
[12] Debian New Maintainer's Guide
Guía que describe la forma en que se construye un paquete Debian, orientado a desarrolla-
dores con poca experiencia que necesitan iniciarse en la tarea de mantener paquetes Debian.
Se encuentra en http://www.debian.org/doc/maint-guide/, pero también se instala con
el paquete maint-guide o maint-guide-es.
[13] Graphical Greeter Theme
Está sección de la documentación de GDM describe los elementos necesarios para construir
un tema visual a la medida. Se encuentra en http://www.jirka.org/gdm-documentation/
x1259.html

17

También podría gustarte