Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ernesto Hernández-Novich
Octubre 4, 2007
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).
1. Ambiente de Desarrollo
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.
El sistema ha de contar con suciente espacio en disco [2] para la construcción de mi-
rror. El espacio asignado para el mirror 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 del mirror.
1
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 mirroring. El script tiene comentarios que explican
con detalle todas las opciones. Como mínimo es necesario especicar:
• 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 un mirror completo 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.
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 mirrors 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.
En el resto del documento, asumiremos que existen réplicas de ambos y que están dis-
http://debian.ejemplo.com/debian-security
ponibles en el servidor usando los URL y
http://debian.ejemplo.com/debian-multimedia respectivamente.
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.
3
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 /
• El resto en /home
Instalar los paquetes rsync, debian-cd, reprepro, apt-utils, wget, python, debootstrap
y lsb-release de la versión Debian Etch usandoaptitude o synaptic.
Instalar manualmente la última versión disponible del paquete simple-cdd [6].1 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:
2
• 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
4
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 simple de 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.
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.
$ 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.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.
5
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.
6
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 build-
simple-cdd invocado desde la línea de comando con las opciones adecuadas. En nuestro caso
$ build-simple-cdd --conf simple-cdd.conf --profiles-udeb-dist sid
que realizará la construcción de la imagen. El proceso consta de varias etapas:
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
7
la emulación arrancando desde el CD-ROM para así simular la instalación. Para ello se
ejecuta el comando
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 es-
te sentido, la herramienta simple-cdd ofrece varios mecanismos que pueden aprovecharse para
lograr la adaptación.
8
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.
9
documentación, pero es preferible dejar el diálogo actual que ofrece la opción de particionamiento
automático.
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.
* 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
10
del 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.
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. La documentació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
11