C.1. Ejemplo de fichero de preconfiguración

A continuación se muestra un ejemplo de un fichero de preconfiguración funcional que puede utilizar para realizar una instalación automatizada. Su uso se explica en Sección 4.4, “Instalación automática”. Tal vez quiera descomentar alguna de las líneas antes de usar el fichero.

Nota

Para poder presentar este ejemplo correctamente en el manual hemos tenido que dividir algunas líneas. Esto se indica con el uso del carácter de continuación de línea “\” y un nivel de indentación adicional en la línea siguiente. En un fichero de preconfiguración real estas líneas deben colocarse en una sola línea. Si no lo hace así, la preconfiguración fallará con resultados impredecibles.

#### Modificar syslinux.cfg.

# Edite el fichero syslinux.cfg (o similar) y añada parámetros al final de
# la línea «append» del núcleo.
#
# Por lo menos querrá añadir un parámetro indicando al instalador desde donde
# obtener el fichero de preconfiguración.
# Si está instalando desde un medio USB, use el siguiente parámetro, y coloque
# el fichero de preconfiguración en el directorio raíz del dispositivo USB.
#   preseed/file=/hd-media/preseed
# En cambio, si está arrancando desde red, use este:
#   preseed/url=http://maquina/ruta/hacia/fichero/preseed
# Si está remasterizando un CD, podría usar este otro:
#   preseed/file=/cdrom/preseed
# Asegúrese de copiar este fichero a la ubicación que ha especificado.
# 
# Mientras está realizando esto, tal vez quiera cambiar allí a 
# debconf/priority=critical, para obviar la mayoría de preguntas incluso
# si la siguiente preconfiguración excluye alguna.
# También podría definir el tiempo de espera a 1 en syslinux.cfg para
# evitar la necesidad de presionar «Enter» para arrancar el instalador.
#
# La selección de idioma, país y teclado no puede ser preconfigurada desde
# un fichero, debido a que éstas se configuran antes de que se cargue
# el fichero de preconfiguración.
# En su lugar, para obviar estas preguntas, pase algunos parámetros más
# al núcleo:
#
#    languagechooser/language-name=Spanish
#    countrychooser/shortlist=ES
#    console-keymaps-at/keymap=es
#
# Note que el núcleo acepta un máximo de 8 opciones de línea de órdenes
# y 8 opciones de entorno (incluyendo cualquier opción añadida en forma
# predeterminada por el instalador). Si éstas se exceden, los núcleos
# 2.4 eliminarán cualquier opción de exceso y los 2.6 darán un mensaje
# de «panic».
# Algunas opciones predeterminadas, como «vga=normal» y «devfs=mount»,
# podrían ser eliminadas sin problemas para la mayoría de instalaciones,
# lo cual le permitiría añadir más opciones para preconfiguración.

#### Órdenes del intérprete de comandos.

# La preconfiguración de d-i es inherentemente insegura. Ninguna parte del
# instalador verifica intentos de desbordamiento de buffer u otras
# formas de vulneració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 cualquier orden de shell
# que desee dentro del instalador, de forma automática.

# La primera orden a ejecutar tan pronto como sea posible, después de que
# se lea el fichero de preconfiguración:
#d-i preseed/early_command		string \
#    wget http://url/to/my.udeb -O /tmp/my.udeb ; udpkg -i /tmp/my.udeb

# Ésta orden se ejecuta justamente antes de que finalize la instalación,
# pero cuando todavía existe un directorio /target usable:
#d-i preseed/late_command		string \
#    for deb in /hd-media/*.deb; do cp $deb /target/tmp; \
#    chroot /target dpkg -i /tmp/$(basename $deb); done

# Ésta orden se ejecuta tan pronto como se inicie «base-config»:
#base-config base-config/early_command	string echo hola mama

# Ésta orden se ejecuta después de que finalice «base-config», y
# antes de presentar el indicador «login:». Esta es un buen método de
# instalar el conjunto de paquetes que desea, o de modificar la
# configuración del sistema:
#base-config base-config/late_command	string \
#    apt-get install zsh; chsh -s /bin/zsh

#### Configuración de red.

# Obviamente, ¡esto no funcionará si está cargando su fichero de 
# preconfiguración desde la red!. Pero es fantástico si está arrancando
# desde CD o memoria USB. También puede pasar parámetros de configuración
# de red en los parámetros del núcleo si está cargando el fichero de
# preconfiguración desde la red.

# «netcfg» elegirá una interfaz que en lo posible tenga conexión. Esto
# hace que se evite mostrar una lista si existe más de una interfaz.
d-i  netcfg/choose_interface select auto

# En caso prefiera configurar la red manualmente, puede hacer lo siguiente:
#d-i netcfg/disable_dhcp	boolean true
#d-i netcfg/get_nameservers	string 192.168.1.1
#d-i netcfg/get_ipaddress	string 192.168.1.42
#d-i netcfg/get_netmask		string 255.255.255.0
#d-i netcfg/get_gateway		string 192.168.1.1
#d-i netcfg/confirm_static	boolean true

# Note que cualquier nombre de máquina o dominio asignado desde dhcp
# tomará precedencia sobre los valores definidos aquí. Sin embargo, 
# el hacerlo evita que se muestren las preguntas incluso si los 
# valores vienen desde dhcp.
d-i netcfg/get_hostname		string unassigned-hostname
d-i netcfg/get_domain		string unassigned-domain

# Deshabilita el molesto cuadro de diálogo de clave WEP
d-i netcfg/wireless_wep		string 
# El nombre de máquina dhcp que algunos ISPs usan como un tipo de claves.
#d-i netcfg/dhcp_hostname	string radish

#### Configuración de servidor espejo

d-i mirror/country		string enter information manually
d-i mirror/http/hostname	string http.es.debian.org
d-i mirror/http/directory	string /debian
d-i mirror/suite		string testing
d-i mirror/http/proxy		string 

### Particionado.

# Si el sistema tiene espacio libre puede elegir particionar solamente
# este espacio.
#d-i partman-auto/init_automatically_partition \
#    select Use the largest continuous free space
#
# Alternativamente, puede especificar un disco a particionar. El nombre del
# dispositivo se puede ingresar tanto en formato tradicional o en devfs.
# Por ejemplo, para usar el primer disco dvfs:
d-i  partman-auto/disk		string /dev/discs/disc0/disc

# Puede elegir cualquiera de las recetas de particionado predefinidas:
d-i  partman-auto/choose_recipe	select \
     All files in one partition (recommended for new users)
#d-i partman-auto/choose_recipe		select Desktop machine
#d-i partman-auto/choose_recipe		select Multi-user workstation

# O indique su propia receta
# El formato de las recetas está documentado en el fichero 
# devel/partman-auto-recipe.txt.
# Si tiene una forma de colocar el fichero de receta dentro del entorno
# del d-i, simplemente puede direccionarlo a éste.
#d-i partman-auto/expert_recipe_file	string /hd-media/recipe

# Si no, puede colocar la receta en una línea. Este ejemplo crea una
# partición /boot pequeña, una partición de intercambio y usa el resto
# del espacio para la partición raíz:
#d-i partman-auto/expert_recipe		string boot-root :: \
#    20 50 100 ext3 $primary{ } $bootable{ } method{ format } format{ } \
#    use_filesystem{ } filesystem{ ext3 } mountpoint{ /boot } . \
#    500 10000 1000000000 ext3 method{ format } format{ } \
#    use_filesystem{ } filesystem{ ext3 } mountpoint{ / } .  \
#    64 512 300% linux-swap method{ swap } format{ } . 
# Para que sirva de referencia, aquí puede ver la misma recenta
# en un formato más legible:
#   boot-root ::
# 	40 50 100 ext3
#		$primary{ } $bootable{ }
#		method{ format } format{ }
#		use_filesystem{ } filesystem{ ext3 }
#		mountpoint{ /boot }
#	.
# 	500 10000 1000000000 ext3
#		method{ format } format{ }
#		use_filesystem{ } filesystem{ ext3 }
#		mountpoint{ / }
#	.
# 	64 512 300% linux-swap
#		method{ swap } format{ }
#	.

# Lo siguiente hace que «partman» particione automáticamente sin confirmación.
d-i partman/confirm_write_new_label	boolean true
d-i partman/choose_partition		select \
    Finish partitioning and write changes to disk
d-i partman/confirm			boolean	true

#### Instalación del gestor de arranque.

# GRUB es el gestor de arranque predeterminado (para x86). Si quiere instalar
# lilo en su lugar, descomente esto:
#d-i grub-installer/skip		boolean true

# Ésta es una configuración adecuada y segura, hace que grub se instale 
# automáticamente en el MBR si no se detecta otro sistema operativo en 
# la máquina.
d-i grub-installer/only_debian		boolean true

# Lo siguiente hace que el «grub-installer» instale en el MBR si también 
# se encuentra otro sistema operativo, lo cual es menos seguro puesto que
# podría dejar sin posibilidad de arrancar al otro sistema operativo.
d-i grub-installer/with_other_os	boolean true

# Alternativamente, si desea instalar en una ubicación distinta al MBR,
# descomente y edite estas líneas:
#d-i grub-installer/bootdev		string (hd0,0)
#d-i grub-installer/only-debian		boolean false
#d-i grub-installer/with_other_os	boolean false

##### Final de la primera fase de instalación.

# Obviar el mensaje final sobre la finalización de la instalación.
d-i prebaseconfig/reboot_in_progress	note 


##### base-config de preconfiguración.

# Obviar el mensaje de bienvenida.
base-config base-config/intro	note 

# Obviar el mensaje final.
base-config base-config/login	note 

# Si ha instalado un gestor de ventanas, pero no desea iniciarlo 
# inmediatamente después que finalice «base-config».
#base-config base-config/start-display-manager	boolean false

###### Configuración de zona horaria.

# Controla si el reloj de hardware está configurado a GMT o no.
base-config tzconfig/gmt		boolean true

# Si indica al instalador que se encuentra en los Estados Unidos, entonces
# puede definir la zona horaria usando esta variable.
# (Las opciones son: Eastern, Central, Mountain, Pacific, Alaska, Hawaii,
# Aleutian, Arizona East-Indiana, Indiana-Starke, Michigan, Samoa, other)
base-config  tzconfig/choose_country_zone/US	select Eastern
# Si indica que se encuentra en Canada.
# (Las opciones son: Newfoundland, Atlantic, Eastern, Central,
# East-Saskatchewan, Saskatchewan, Mountain, Pacific, Yukon, other)
base-config  tzconfig/choose_country_zone/CA	select Eastern
# Si indica que se encuentra en Brasil. (Las opciones son: East, West, Acre,
# DeNoronha, other)
base-config  tzconfig/choose_country_zone/BR	select East
# Muchos países solamente tienen una zona horaria. Si indica al instalador
# que se encuentra en una de estas, puede elegir su zona horaria estándar
# a través de esta pregunta.
base-config  tzconfig/choose_country_zone_single boolean true
# Esta pregunta se formula como un método de soporte para otros países 
# distintos a los mencionados antes, y que tienen más de una zona horaria. 
# Puede preconfigurar una de las zonas horarias o «other».
#base-config  tzconfig/choose_country_zone_multiple select 

###### Configuración de cuenta.

# Para preconfigurar la clave de superusuario, debe colocarla en
# texto legible en este fichero. Esta no es una buena idea, ¡usela con
# precaución!
#passwd passwd/root-password		password r00tme
#passwd	passwd/root-password-again	password r00tme

# Si desea saltar la creación de una cuenta de usuario común.
#passwd	passwd/make-user		boolean false

# Alternativamente, puede preconfigurar el nombre del usuario. Note que
# el usuario asignado será derivado de éste; actualmente no puede ser
# modificado. El usuario asignado será (en minúsculas) el primer nombre
# del nombre completo.
#passwd	passwd/user-fullname		string Usuario de Debian
#passdw	passwd/username			string debian
# Y su clave, ¡pero uselo con precaución!
#passwd	passwd/user-password		password insegura
#passwd	passwd/user-password-again	password insegura

###### Configuración de Apt.

# Esta pregunta controla que fuente usará la segunda fase de la 
# instalación para obtener paquetes. Las opciones son cdrom, http, ftp, 
# filesystem y editar la lista en forma manual.
base-config  apt-setup/uri_type		select http

# Si elige ftp o http, se le preguntará el país y un servidor espejo
base-config  apt-setup/country		select enter information manually
base-config  apt-setup/hostname		string http.es.debian.org
base-config  apt-setup/directory	string /debian
# Para luego de elegir un servidor espejo.
base-config  apt-setup/another	boolean false

# Puede elegir instalar software desde «non-free» y «contrib».
#base-config  apt-setup/non-free	boolean true
#base-config  apt-setup/contrib		boolean true

# Habilitar actualizaciones de seguridad.
base-config  apt-setup/security-updates	boolean true

###### Selección de paquetes.

# Puede elegir instalar cualquier combinación de paquetes que esté
# disponible. Las tareas disponibles al momento de escribir este fichero
# incluyen: Entorno de escritorio, Servidor web, Servidor de impresión, 
# Servidor DNS, Servidor de ficheros, Servidor de correos, Base de datos,
# Selección manual de paquetes. La última de éstas ejecutará aptitude.
# También puede elegir el no instalar tareas y forzar la instalación de
# un conjunto de paquetes de alguna otra manera.
tasksel     tasksel/first	multiselect Desktop environment
#tasksel     tasksel/first	multiselect Web server, Mail server, DNS server

###### Configuración de agente de correo.

# Durante una instalación común, exim solamente formula dos preguntas.
# Ésta es una forma de evitar incluso éstas. Es posible crear una
# preconfiguración más complicada.
exim4-config exim4/dc_eximconfig_configtype \
   select no configuration at this time

# Es una buena idea configurar esto a la cuenta que ha elegido crear.
# El dejar el valor en blanco va a significar que el correo de postmaster
# se entregue en «/var/mail/mail».
exim4-config exim4/dc_postmaster		string 

###### Configuración de X.

# La preconfiguración de X en Debian es posible, pero probablemente
# necesitará saber algunos detalles sobre el hardware de vídeo de la
# máquina, puesto que el programa de configuración no efectúa una
# configuración totalmente automática de todo.

# X puede detectar el controlador adecuado para algunas tarjetas, pero
# si está preconfigurando, puede modificar el que éste elija. Incluso así,
# vesa funcionará para la mayoría de hardware.
#xserver-xfree86 xserver-xfree86/config/device/driver	select vesa

# Un problema con la autodetección del ratón es que si falla, X 
# reintentará vez tras vez. De modo que si se efectúa la preconfiguración,
# existe la posibilidad de un bucle infinito si no se autodetecta el ratón.
#xserver-xfree86 xserver-xfree86/autodetect_mouse	boolean true

# Se recomienda autodetección de monitor.
xserver-xfree86	xserver-xfree86/autodetect_monitor	boolean true
# Descomente si tiene una pantalla LCD.
#xserver-xfree86 xserver-xfree86/config/monitor/lcd	boolean true
# X tiene tres métodos de configuración para el monitor. Esta es la forma
# de preconfigurar el método «medio», que siempre esta disponible. El
# método «simple» podría no estar disponible y la «avanzada» formula
# muchas preguntas.
xserver-xfree86	xserver-xfree86/config/monitor/selection-method	\
    select medium
xserver-xfree86	xserver-xfree86/config/monitor/mode-list \
    select 1024x768 @ 60 Hz

###### Todo lo restante.

# Dependiendo del software que elija instalar, o si las cosas no salen
# bien durante el proceso de instalación, es posible que se formulen
# otra preguntas. También puede preconfigurar éstas, por supuesto.
# Para obtener una lista de cada posible pregunta que podría ser
# formulada durante una instalación, efectúe una instalación y
# ejecute estas órdenes:
#   debconf-get-selections --installer > fichero
#   debconf-get-selections >> fichero

# Si gusta, puede incluir otros ficheros de preconfiguración en éste.
# Cualquier configuración en estos ficheros modificará los valores
# preexistentes de este fichero. Se puede listar más de un fichero,
# separado por espacios, todos éstos serán cargados. Los ficheros 
# incluidos también pueden tener directivas propias de preconfiguración o
# inclusión. Note que si los nombres de fichero son relativos, éstos son 
# tomados del mismo directorio donde se ubica el fichero que los incluye.
#d-i preseed/include	string x.cfg

# Esto es todavía más flexible, se ejecuta una orden de shell y si ésta 
# presenta como resultado los nombres de los ficheros de preconfiguración, 
# éstos se incluyen. Por ejemplo, para alternar configuraciones basadas en
# un dispositivo de almacenamiento usb particular (en este caso, un 
# lector de tarjetas integrado):
#d-i preseed/include_command	string \
#    if $(grep -q "GUID: 0aec3050aec305000001a003"  /proc/scsi/usb-storage-*/*); \
#    then echo kraken.cfg; else echo otherusb.cfg; fi