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 construcció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
1.
<
[email protected]>.
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 distribució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 es, debe incluir la lista de paquetes y el
pool
completa para la arquitectura de interés, esto
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-
anonftpsync [1] provista por el proyecto Debian. Existe otra debmirror que también permite crear réplicas parciales, sin embargo
siste en utilizar la herramienta herramienta denominada
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 resta 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 puede 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 El servidor remoto a partir del cual tomar la copia utilizando la variable
RSYNC_HOST.
TO.
rsync,
indicado en
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 indicado en la variable
•
RSYNC_DIR.
rsync,
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/
[email protected] Una vez modicado el script, utilice el comando
root
y grupo
root,
y el comando
chmod
chown
para que pertenezca al usuario
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 ubicaciones. 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 http://debian.ejemplo.com/debian-multimedia respectivamente.
disponibles en el servidor a través de los URL y
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 construcció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 utilizados 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 generadas 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
rsync, syslinux, netpbm, reprepro, apt-utils, wget, python, lsb-release de la versión Debian Etch usando aptitude o synaptic.
Instalar los paquetes
debootstrap Instalar te
.deb
y
manualmente la última versión disponible del paquete debian-cd[9].1 El paquese descarga usando el navegador y una vez en el escritorio puede instalarse bien
sea con la herramienta gráca
1A
gdebi
o bien desde la línea de comandos utilizando
la fecha de escritura de este documento, la versión más reciente de debian-cd es la 3.0.3. 4
dpkg.
Instalar quete
manualmente la última versión disponible del paquete simple-cdd [6].2 El pa-
.deb
se descarga usando el navegador y una vez en el escritorio puede instalarse
bien sea con la herramienta gráca
dpkg.
gdebi
o bien desde la línea de comandos utilizando
Una vez creadas las imágenes ISO con las CDD, es posible vericar su funcionalidad utilizando 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:
qemu,
3
•
El paquete
•
El paquete con los módulos del kernel apropiados para acelerar el funcionamiento
para tener el emulador y todas sus dependencias.
de QEmu en la máquina antriona. Los módulos dependen del kernel particular instalado, y para nuestro ejemplo sería necesario instalar
2.
kqemu-modules-2.6-686.
Procedimiento de Construcción
simple-cdd consiste en utilizar las herrareprepro, debootstrap, debconf, etc.) para cons-
La metodología de creación de CDD utilizando mientas existentes en Debian (debian-cd,
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 conteniendo 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. 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. 3 La
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
inicial,
el perl de nombre
inicial.packages
es necesario crear:
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 instalació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 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 basta agregar la línea
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 omisión (el
Este archivo de texto es
preseed )
opcional
y contiene las selecciones a utilizar por
para las preguntas de conguración que presente el Instalador De-
debconf para congurarse. El formato utilitario debconf-set-selections [8].
bian o cualquier paquete que utilice idéntico al requerido por el
inicial.postinst
Este archivo de texto es
opcional
del archivo es
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 $ simple-cdd --conf simple-cdd.conf
con las opciones adecuadas. En nuestro caso
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). debootstrap y para los perles denidos en el CDD. dentro del directorio de trabajo en el subdirectorio tmp/mirror, construyendo
3. Se descargan todos los paquetes necesarios para
un repositorio parcial solamente con los paquetes a incluir en el CDD. Mientras más paquetes 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
tmp/debian-cd
debian-cd
[9] dentro del directorio
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
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 basta modicar los archivos de conguración de
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 deseados 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 conteniendo 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 funcionalidad se utiliza la directiva
simple-cdd.conf,
auto_profiles=perfil1 perfil2
en el archivo de conguración
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 opción --kernel-packages.
de construcción de la imagen de instalación utilizando la
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
d-i debian-installer/locale string es_VE.UTF-8 d-i time/zone select America/Caracas 10
inicial.preseed:
d-i d-i d-i d-i d-i d-i d-i d-i d-i d-i
clock-setup/utc boolean true popularity-contest/participate boolean false grub-installer/only_debian boolean true grub-installer/with_other_os boolean true apt-setup/non-free boolean true apt-setup/contrib boolean true netcfg/hostname string ejemplo netcfg/choose_interface select auto netcfg/dhcp_failed note 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 preferible 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 sudo y que en el
la administración. Para lograr eso, basta con que el perl incluya el paquete 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
11
debconf.
debconf-show para observar las posibles preguntas y las respuestas que están almacenadas en la base de datos debconf. Por ejemplo, para el paquete sun-java5-jre puede hacerse
2. Aprovechar el utilitario
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 sistema 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 vez hace uso del modelo de creación de usuario existente en
/etc/skel.
adduser
que a su
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 adicionales 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 Mantenedores 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, del paquetes, y en el directorio
debian
gdm,
etc.) a partir de la raíz
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 conguració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 .deb en el local_packages
testcdd/Estilo.
de manera que se generen los múltiples archivos
directorio
te directorio debe aparecer en la directiva
del archivo de conguración de
simple-cdd
Es-
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.
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 La imagen se coloca en
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 La imagen de
nueva sesión de usuario.
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
claves
gconftool-2,
el cual es capaz de modicar por lotes las
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 usuario 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 adicional 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, simple.postinst.
quetes del perl Este
script
el instalador CDD ejecutará el
script
de post-instalación denido en
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 se siembren respuestas en
simple.preseed
simultáneamente por mucho que
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 [7]
http://packages.debian.org/sid/simple-cdd
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
[9]
man debconf-set-selections.
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 referencia 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
http://www.debian.org/doc/debian-policy/, pero también se instala con debian-policy.
encuentra en el paquete [12]
Debian New Maintainer's Guide Guía que describe la forma en que se construye un paquete Debian, orientado a desarrolladores con poca experiencia que necesitan iniciarse en la tarea de mantener paquetes Debian.
http://www.debian.org/doc/maint-guide/, pero también se instala con maint-guide o maint-guide-es.
Se encuentra en el paquete [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
x1259.html
http://www.jirka.org/gdm-documentation/
17