C.1. Exemple de fichier de préconfiguration

Ce fichier est un exemple complet et fonctionnel de fichier de préconfiguration pour les installations automatiques. Son usage est expliqué dans Section 4.4, « Installation automatisée ». N'hésitez pas à modifier certaines lignes avant d'utiliser ce fichier.

#### Modification de syslinux.cfg.

# Éditez le fichier syslinux.cfg, et ajoutez les paramètres après les lignes
# « append » pour le noyau.
#
# Vous voudrez au moins dire à l'installateur où se trouve ce fichier de
# préconfiguration. 
# Si vous faites une installation à partir d'un support USB, utilisez ce 
# paramètre et mettez le fichier de préconfiguration dans le répertoire racine
# de la clé USB.
#   preseed/file=/hd-media/preseed
# Si vous faites une installation par le réseau, utilisez ce paramètre :
#   preseed/url=http://host/path/to/preseed
# Si vous recréez un cédérom, vous pouvez utiliser celui-ci :
#   preseed/file=/cdrom/preseed
# N'oubliez pas de mettre le fichier à l'endroit que vous indiquez.
# 
# Pendant que vous y êtes, vous pourriez déclarer un debconf/priority=critical
# pour éviter la plupart des questions, même s'il n'y en a pas beaucoup dans 
# la préconfiguration qui suit.
# Et vous pourriez aussi mettre le compte à rebours à 1 dans syslinux.cfg et
# éviter ainsi d'avoir à appuyer sur la touche Entrée pour lancer 
# l'installateur.
#
# Langue, pays et clavier ne peuvent être présélectionnés dans ce fichier
# car ces questions sont posées avant que le fichier ne soit chargé.
# Pour éviter ces questions, il faut ajouter ces paramètres aux paramètres du
# noyau :
#
#    languagechooser/language-name=English
#    countrychooser/shortlist=US
#    console-keymaps-at/keymap=us
#
# Il faut savoir que le noyau accepte un maximum de huit options ligne de
# de commandes et huit variables d'environnement. Et les options ajoutées
# par l'installateur sont comprises dans ces chiffres. S'il y a dépassement,
# les noyaux 2.4 ignorent les options en trop et les noyaux 2.6 paniquent.
# On peut sans risque supprimer certaines options par défaut, comme 
# 'vga=normal' ou 'devfs=mount'. Cela permet de rajouter autant d'options
# pour la préconfiguration.

#### Les commandes du shell.

# La préconfiguration de l'installation n'est pas sécurisée. Rien dans 
# dans l'installateur ne vérifie que des dépassements de tampons ou des
# exploitations quelconques des valeurs données dans ce fichier n'ont pas lieu.
# N'utilisez que les fichiers dont vous connaissez la provenance !
# Pour le dire comme c'est et parce que c'est en général utile, voici un
# moyen d'exécuter automatiquement une commande dans l'installateur.

# La première commande est exécutée aussi tôt que possible, juste après
# la lecture du fichier.
#d-i	preseed/early_command		string wget http://url/to/my.udeb -O /tmp/my.udeb ; udpkg -i /tmp/my.udeb
# Cette commande est exécutée juste avant que l'installation ne se termine,  
# mais quand le répertoire /target est encore utilisable.
#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
# Cette commande est exécutée au moment où base-config commence.
#base-config	base-config/early_command	string echo hi mom
# Cette commande est exécutée après base-config, juste avant la connexion.
# C'est un bon moyen d'installer les paquets que vous voulez ou d'affiner la
# la configuration du système.
#base-config	base-config/late_command	string apt-get install zsh; chsh -s /bin/zsh

#### Configuration du réseau.

# Bien sûr, si vous récupérez le fichier de préconfiguration sur le réseau,
# cela ne marchera pas ! Mais c'est parfait si vous amorcez à partir d'un
# cédérom ou d'une clé USB. Vous pouvez aussi ajouter des paramètres réseau
# aux paramètres du noyau si vous récupérez le fichier de préconfiguration 
# sur le réseau.

# Choisir une interface précise pour netcfg. Ce n'est normalement pas 
# nécessaire puisque netcfg utilise toute interface connectée
#d-i	netcfg/choose_interface	select eth0

# Si vous préférez configurer vous-même le réseau, voici comment faire :
#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

# Remarquez que les valeurs données par dhcp, nom de domaine ou nom de 
# machine, prennent le pas sur les valeurs déclarées ici. Cependant,
# cette déclaration empêche que les questions ne soient posées même si les
# valeurs viennent de dhcp.
d-i	netcfg/get_hostname	string unassigned-hostname
d-i	netcfg/get_domain	string unassigned-domain

# Supprimer le dialogue irritant sur la clé WEP.
d-i	netcfg/wireless_wep	string 
# Et l'étonnant nom de machine dhcp que certains FAI utilisent comme mot de
# passe.
#d-i	netcfg/dhcp_hostname	string radish

# Valeurs pour les miroirs

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

### Partitionnement.

# Si le système possède un espace libre, vous pouvez ne partitionner que cet
# espace.
#d-i	partman-auto/init_automatically_partition	select Use the largest continuous free space
# Vous pouvez aussi choisir un disque entier. Le format de son nom peut être
# donné selon le format devfs ou le format traditionnel.
# Par exemple, pour utiliser le premier disque connu sous devfs :
d-i	partman-auto/disk	string /dev/discs/disc0/disc

# Vous pouvez choisir parmi tous les schémas prédefinis :
d-i	partman-auto/choose_recipe	select Tous les fichiers dans une 
seule partition (recommandé aux débutants)
#d-i	partman-auto/choose_recipe	select Desktop machine
#d-i	partman-auto/choose_recipe	select Multi-user workstation
# Ou donner vous-même votre schéma...
# Le format des schémas est expliqué dans le fichier 
# devel/partman-auto-recipe.txt.
# Si vous avez la possibilité d'obtenir un schéma dans l'environnemt de
# l'installateur, vous pouvez simplement pointer sur lui.
#d-i	partman-auto/expert_recipe_file	string /hd-media/recipe
# Sinon, vous pouvez écrire un schéma en une seule ligne. L'exemple suivant
# crée une petite partition /boot, une partition swap convenable, et utilise le
# reste de l'espace libre pour la partition racine :
#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{ } . 
# Pour explication, voici le même schéma dans une forme plus lisible :
# 	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{ }
#	.

# Partman créera automatiquement les partitions sans demander de confirmation.
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

#### Installation du programme d'amorçage.

# Grub est le programme d'amorçage par défaut (pour x86). Si vous préférez
# LILO, décommentez la ligne suivante :
#d-i	grub-installer/skip		boolean true

# Il n'y a aucun danger à donner ce paramètre : il installe grub sur le
# secteur d'amorçage principal s'il n'existe aucun autre système d'exploitation
# sur la machine.
d-i	grub-installer/only_debian	boolean true
# Ce paramètre installe grub sur le secteur d'amorçage principal même s'il
# existe un autre système d'exploitation, ce qui est moins sûr car il pourrait
# ne pas savoir amorcer cet autre système.
d-i	grub-installer/with_other_os	boolean true
# Vous pouvez aussi l'installer ailleurs que dans le secteur d'amorçage 
# principal. Décommentez et modifiez les lignes suivantes :
#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

# TODO comment présélectionner l'installation de LILO ? Les questions posées
# rendent la tâche difficile.

##### Terminer la première étape de l'installation.

# Pour éviter le dernier message disant que l'installation est terminée.
d-i	prebaseconfig/reboot_in_progress	note 


##### Préconfiguration de base-config.
# XXX: La plupart de ces commandes ne fonctionneront correctement qu'avec
# base-config version 2.40.4.

# Pour éviter le message d'introduction.
base-config	base-config/intro	note 

# Pour éviter le dernier message.
base-config	base-config/login	note 

# Si vous installez un gestionnaire d'affichage et si vous ne voulez pas le
# lancer immédiatemment après base-config :
#base-config	base-config/start-display-manager	boolean false

###### Configuration du fuseau horaire.

# Cette commande règle l'horloge matérielle sur GMT ou non :
base-config	tzconfig/gmt		boolean true

# Si vous avez dit à l'installateur que vous habitez aux USA, vous pouvez
# utiliser cette valeur pour déclarer le fuseau horaire.
# (Les choix sont les suivants : Eastern, Central, Mountain, Pacific, 
# Alaska, Hawaii, Aleutian, Arizona East-Indiana, Indiana-Starke, Michigan, 
# Samoa, autre)
base-config	tzconfig/choose_country_zone/US	select Eastern
# Si vous avez dit à l'installateur que vous habitez au Canada.
# (Choix : Newfoundland, Atlantic, Eastern, Central,
# East-Saskatchewan, Saskatchewan, Mountain, Pacific, Yukon, autre)
base-config	tzconfig/choose_country_zone/CA	select Eastern
# Si vous avez dit à l'installateur que vous habitez au Brésil. (Choix : 
# East, West, Acre, DeNoronha, autre)
base-config	tzconfig/choose_country_zone/BR	select East
# Beaucoup de pays n'ont qu'un seul fuseau horaire. Si vous avez dit à 
# l'installateur que vous habitez dans l'un de ces pays, vous pouvez le choisir
# avec cette question.
base-config	tzconfig/choose_country_zone_single boolean true
# Cette question est posée pour les pays qui n'appartiennent pas à la liste
# précédente et qui ont plusieurs fuseaux horaires. Vous pouvez préconfigurer
# l'un des fuseaux ou « autre ».
#base-config	tzconfig/choose_country_zone_multiple select 

###### Configuration des comptes.

# Pour préconfigurer le mot de passe de root, vous devez le mettre en clair
# dans le fichier. Ce n'est pas une très bonne idée, faites attention !
#passwd		passwd/root-password		password r00tme
#passwd		passwd/root-password-again	password r00tme

# Si vous voulez ne pas créer d'utilisateur :
#passwd		passwd/make-user		boolean false
# Vous pouvez aussi présélectionner le nom de l'utilisateur et son identifiant
# de connexion.
#passwd		passwd/user-fullname		string Debian User
#passwd		passwd/username			string debian
# Et le mot de passe, mais faites attention !
#passwd		passwd/user-password		password insecure
#passwd		passwd/user-password-again	password insecure

###### Configuration d'Apt..

# Cette question contrôle la source des paquets qui sera utilisée dans la
# deuxième étape de l'installation. Les choix sont cdrom, http, ftp, 
# filesystem, modifier soi-même le fichier sources list.
base-config	apt-setup/uri_type	select http

# Si vous choisissez ftp ou http, on vous demandera un pays et un miroir.
base-config	apt-setup/country	select enter information manually
base-config	apt-setup/hostname	string http.us.debian.org
base-config	apt-setup/directory	string /debian
# Ne faire le choix que d'un miroir.
base-config	apt-setup/another	boolean false

# Vous pouvez choisir d'installer des paquets de non-free et contrib.
#base-config	apt-setup/non-free	boolean true
#base-config	apt-setup/contrib	boolean true

# Pour autoriser les mises à jour de sécurité.
base-config	apt-setup/security-updates	boolean true

###### Sélection des paquets.

# Vous pouvez installer toute combinaison de tâches parmi celles disponibles.
# Pour l'heure, les tâches disponibles sont les suivantes : environnement
# de bureau, serveur Web, serveur d'impression, serveur DNS, serveur de 
# fichiers, serveur de courrier, base SQL, sélection manuelle des paquets.
# La dernière utilise aptitude. Vous pouvez aussi de ne pas installer de tâches
# et de forcer l'installation de paquets par un autre moyen.
# XXX: cela ne fonctionnera qu'avec tasksel version 2.12.
tasksel		tasksel/first	multiselect Desktop environment
#tasksel	tasksel/first	multiselect Web server, Mail server, DNS server

###### Configuration du MTA.

# Pendant une installation normale, exim pose seulement deux questions. Voici
# comment les éviter. Une préconfiguration plus complexe est possible.
exim4-config	exim4/dc_eximconfig_configtype	select no configuration at this time
# C'est une bonne idée d'indiquer ici le nom de l'utilisateur que vous avez 
# créé. Si vous n'indiquez aucune valeur, le courrier pour postmaster ira dans
# /var/mail/mail.
exim4-config	exim4/dc_postmaster		string 

###### Configuration du serveur X.

# Préconfigurer le serveur X est possible, mais vous devrez sans doute 
# connaître les caractéristiques du matériel video de votre machine. Le
# configurateur Debian du serveur X ne configure rien automatiquement.

# X peut détecter le bon pilote pour certaines cartes, mais si vous faites une
# préconfiguration, vous annulez ce qu'il aura choisi. Cependant vesa
# fonctionne la plupart du temps.
#xserver-xfree86	xserver-xfree86/config/device/driver	select vesa

# Pour la détection automatique de la souris, il faut savoir que si elle
# échoue, X recommence sans fin le processus. Donc, s'il y a préconfiguration,
# une boucle infinie peut apparaître si la souris n'est pas détectée.
#xserver-xfree86	xserver-xfree86/autodetect_mouse	boolean true

# La détection automatique du moniteur est recommandée.
xserver-xfree86		xserver-xfree86/autodetect_monitor	boolean true
# Décommentez la ligne suivante si vous posséder un écran LCD.
#xserver-xfree86	xserver-xfree86/config/monitor/lcd	boolean true
# X possède trois adresses pour la configuration du moniteur. Voici comment
# présélectionner l'adresse « medium », qui est toujours disponible.
# L'adresse « simple » peut ne pas être disponible et l'adresse
# « advanced » pose trop de questions.
xserver-xfree86	xserver-xfree86/config/monitor/selection-method	select medium
xserver-xfree86	xserver-xfree86/config/monitor/mode-list	select 1024x768 @ 60 Hz

###### Les autres questions.

# Selon les logiciels que vous avez installés et s'il y a eu des problèmes
# pendant le processus d'installation, d'autres questions peuvent être posées.
# Vous pouvez bien sûr les préconfigurer ! Pour obtenir la liste de toutes
# les questions possibles, faites une installation, et exécutez ces 
# commandes :
#   debconf-get-selections --installer > fichier
#   debconf-get-selections >> fichier

# Si vous voulez, vous pouvez inclure dans ce fichier d'autres fichiers de
# de préconfiguration. Toutes les valeurs de ces fichiers annuleront les
# valeurs préexistantes. Vous pouvez indiquer plus d'un fichier, en les
# séparant par des espaces ; tous seront chargés. Ces fichiers peuvent
# à leur tout contenir d'autres directives de préconfiguration ou d'inclusion.
# Notez que si les fichiers sont relatifs, ils seront pris dans le répertoire 
# ou se trouve le fichier qui les inclut.
#d-i	preseed/include	string x.cfg
# D'une manière plus souple, cela exécute des commandes du shell et si le 
# résultat donne les noms de ces fichiers, ils sont inclus. Par exemple,
# pour changer de configuration, selon tel périphérique de stockage USB,
# dans ce cas, un lecteur carte intégré :
#d-i	preseed/include_command	string if $(grep -q "GUID: 0aec3050aec305000001a003"  /proc/scsi/usb-storage-*/*); then echo kraken.cfg; else echo otherusb.cfg; fi