B.5. Opciones avanzadas

B.5.1. Ejecutar órdenes a medida durante la instalación

Una opción muy potente y flexible que se ofrece con las herramientas de preconfiguración es la capacidad de ejecutar órdenes o programas en distintos puntos de la instalación.

# La preconfiguración de d-i es inherentemente insegura. Ninguna parte del
# instalador verifica intentos de desbordamiento de buffer u otras
# formas de malversación de los valores de un fichero de preconfiguración
# como éste. ¡Use solamente ficheros de preconfiguración de fuentes
# confiables! Para poder gestionar esto, y porque generalmente es útil,
# a continuación ofrecemos una forma de ejecutar automáticamente cualquier 
# orden de shell que desee dentro del instalador.

# Esta primera orden se ejecuta tan pronto como sea posible, después de que
# se lea el fichero de preconfiguración:
#d-i preseed/early_command string anna-install some-udeb

# Ésta orden se ejecuta justamente antes de que finalice la instalación,
# pero cuando todavía existe un directorio /target usable. Puede
# hacer un chroot a /target y utilizarlo directamente o utilizar las
# órdenes apt-install e «in-target» para instalar fácilmente paquetes
# y ejecutar órdenes en el sistema objetivo
#d-i preseed/late_command string apt-get install zsh; in-target chsh -s /bin/zsh

B.5.2. Utilizar la preconfiguración para cambiar valores por omisión

Es posible utilizar la preconfiguración para cambiar la respuesta por omisión para una pregunta, pero manteniendo la pregunta de forma que ésta se haría en cualquier caso. Para hacer esto tiene que resetar el campo seen (n. del t., «visto») a “false” después de fijar el valor para la pregunta.

d-i foo/bar string value
d-i foo/bar seen false

Puede conseguir el mismo efecto en todas las preguntas sin más que configurar el parámetro preseed/interactive=true en el indicador de arranque. Esta opción puede ser útil para probar o depurar su fichero de preconfiguración. Puede hacer que el instalador le pregunte una pregunta específica utilizando el operador “?=” si está preconfigurando con parámetros del arranque. Por ejemplo, foo/bar?=value. Esta opción sólo tendrá utilidad en el caso de parámetros que correspondan a preguntas que se muestran durante la instalación y no para el caso de parámetros “internos”.

B.5.3. Carga de archivos de configuración en cadena

Si lo desea puede incluir otros ficheros de preconfiguración en éste. Cualquier configuración en estos ficheros modificará los valores preexistentes de este fichero. Esto permite, por ejemplo, poner la configuración general de red para su ubicación en un fichero y poner configuraciones más específicas para algunas configuraciones en otros ficheros.


# Se puede listar más de un fichero, separado por espacios y se cargarán
# todos. Los ficheros incluidos también pueden tener directivas propias
# de preconfiguración o inclusión. Tenga en cuenta que si los nombres de
# fichero son relativos, éstos se toman del mismo directorio donde se
# ubica el fichero que los incluye.
#d-i preseed/include string x.cfg

# El instalador puede, opcionalmente, verificar las sumas de control
# de los ficheros de preconfiguración antes de utilizarlos. De momento
# sólo se pueden utilizar sumas MD5. Debe listar las sumas MD5 en el
# mismo orden en el que lista los ficheros a incluir.
#d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d


# Esta opción es todavía más flexible: se ejecuta una orden de shell y
# se incluyen nuevos ficheros si ésta imprime los nombres de otrs
# ficheros de preconfiguración.
#d-i preseed/include_command \
#      string echo if [ "`hostname`" = bob ]; then echo bob.cfg; fi

# Lo más flexible es descargar un programa y ejecutarlo. El programa
# puede utilizar órdenes como debconf-set para manipular la base de datos
# de debconf. 
# Puede listar más de un programa, separándolos entre sí con espacios.
# Tenga en cuenta que los nombres de los archivos son relativos,
# se obtienen del mismo directorio donde está el archivo de preconfiguración
# que los ejecuta.
#d-i preseed/run string foo.sh

También es posible cargar en cadena desde el initrd o la fase de preconfiguración de fichero en la preconfiguración con red configurando preseed/url en los ficheros antriores. Esto hará que la preconfiguración de la red se realice antes de configurar la red. Ha de tener cuidado cuando hace esto ya que habrá dos ejecuciones independientes de la pregconfiguación. Lo que significa que tiene dos oportunidades para ejecutar la orden preseed/early command, la segunda tendrá lugar justo después de que se habilite el acceso a la red.