Vous devez d'abord créer le fichier de préconfiguration et le placer là où vous le voulez. Cette création est abordée plus loin dans l'annexe. Mettre ce fichier au bon endroit est simple si vous voulez le lire sur le réseau, sur une disquette ou sur une clé usb. Si vous voulez inclure ce fichier sur un cédérom vous devrez recréer l'image iso. Cette annexe n'expliquera pas comment le mettre dans l'initrd. Veuillez consulter la documentation des développeurs de l'installateur.
Un exemple de fichier de préconfiguration basé sur les éléments de cette annexe est disponible, ../example-preseed.txt. Vous pouvez vous servir de ce fichier pour créer le vôtre.
Quand on utilise la méthode initrd, il faut être sûr qu'un fichier appelé
preseed.cfg
se trouve dans le répertoire racine
de l'initrd. L'installateur recherche ce fichier et le charge s'il est présent.
Avec les autres méthodes de préconfiguration, vous devez dire à l'installateur
quel fichier charger au moment de l'amorçage de l'installateur.
On peut passer un paramètre au noyau soit au moment de l'amorçage soit en modifiant
le fichier de configuration du programme d'amorçage (par exemple
syslinux.cfg
) et en ajoutant le paramètre à la fin des lignes
« append ».
Si vous avez indiqué le fichier de préconfiguration dans le fichier de configuration
du programme d'amorçage, il est possible de modifier la configuration pour ne pas avoir à
appuyer sur la touche « Entrée » pour lancer l'installateur.
Avec syslinux, il suffit de mettre le délai d'attente à 1 dans le fichier
syslinux.cfg
.
Pour être sûr que l'installateur charge le bon fichier de préconfiguration vous pouvez indiquer une somme de contrôle pour ce fichier. Cette somme doit être pour l'instant de type md5sum. Quand elle est spécifiée, elle doit correspondre au fichier sinon l'installateur refusera de charger le fichier.
Paramètres à indiquer : - quand l'amorçage se fait sur le réseau : preseed/url=http://host/path/to/preseed.cfg preseed/url/checksum=5da499872becccfeda2c4872f9171c3d - quand l'amorçage se fait sur un cédérom modifié : preseed/file=/cdrom/preseed.cfg preseed/file/checksum=5da499872becccfeda2c4872f9171c3d - quand l'amorçage se fait sur une clé USB (le fichier est dans le répertoire racine de la clé) : preseed/file=/hd-media/preseed.cfg preseed/file/checksum=5da499872becccfeda2c4872f9171c3d
Il est possible de raccourcir preseed/url
en url
et preseed/file
en file
si vous les
passez en paramètres d'amorçage.
Quand on ne peut pas utiliser un fichier de préconfiguration pour préconfigurer certaines étapes, on peut quand même automatiser l'installation car il est possible de passer des paramètres au noyau sur la ligne de commande.
Même si l'on ne veut pas se servir de la préconfiguration, on peut utiliser les paramètres d'amorçage pour fournir une réponse à une question particulière. Des exemples sont donnés ailleurs dans ce manuel.
Pour toutes les variables listées dans les exemples,
il suffit d'indiquer une paire de type
.
Quand une valeur est destinée à la configuration de paquets du système cible, il est nécessaire
d'ajouter le propriétaire [28]
de la variable :
chemin/vers/variable
=valeur
.
Si vous n'indiquez pas de propriétaire, la valeur de la variable ne sera pas copiée
dans la base de données debconf du système cible et ne sera pas utilisée pendant la
configuration des paquets.
propriétaire
:chemin/vers/variable
=valeur
Préconfigurer une question de cette manière signifie que la question ne sera pas posée. Si l'on veut à la fois donner une valeur par défaut et poser la question, il faut utiliser l'opérateur « ?= » au lieu de « = ». Voyez Section B.5.2, « Changer les valeurs par défaut avec la préconfiguration ».
Certaines des variables qui sont fréquemment définies à l'invite du démarrage
possèdent des alias plus courts. Quand un alias est disponible, les exemples de
cette annexe l'utilise au lieu de la variable complète. Ainsi la variable
preseed/url
possède l'alias url
et elle permet
de raccourcir les URL à utiliser. Un autre exemple est l'alias tasks
,
qui représente tasksel:tasksel/first
.
Dans les paramètres d'amorçage, « -- » possède une signification spéciale. Tous les paramètres du noyau placés après le dernier ensemble de deux tirets seront copiés dans la configuration du programme d'amorçage (si l'installateur le permet). Il se peut que ces deux tirets, « -- », soient déjà présents dans les paramètres d'amorçage par défaut. L'installateur filtrera automatiquement les options qu'il reconnaît, comme par exemple les options de préconfiguration.
Il faut savoir que le noyau Linux (version 2.6.9 et au delà) accepte un maximum de 32 options ligne de commandes et 32 variables d'environnement. Les options ajoutées par l'installateur sont comprises dans ces chiffres. S'il y a dépassement, le noyau panique. Les précédents noyaux acceptaient moins d'options.
On peut sans risque supprimer certaines options par défaut, comme
vga=normal
. Cela permet de rajouter autant d'options
pour la préconfiguration.
Il n'est pas toujours possible d'indiquer des valeurs contenant des espaces dans les paramètres d'amorçage, même encadrés par des guillemets.
En combinant certaines fonctionnalités de l'installateur Debian, il est possible d'écrire des lignes de commandes très simples qui automatiseront toutes vos installations, aussi complexes soient-elles. Voici quelques exemples à utiliser à l'invite d'amorçage :
auto url=autoserver
On suppose qu'un serveur DHCP permettra que autoserver
puisse
être résolu par un serveur DNS, en ajoutant peut-être un domaine local s'il est donné par le
serveur DHCP.
Si le site, dont le domaine est example.com
, possède un serveur
DHCP correctement configuré, alors le fichier de préconfiguration recherché serait
trouvé à l'URL http://autoserver.example.com/d-i/squeeze/./preseed.cfg
.
La partie adresse (d-i/squeeze/./preseed.cfg
) provient de
auto-install/defaultroot
qui contient
le répertoire squeeze
par défaut. Il sera ainsi possible
dans de prochaines versions d'indiquer un nom de code particulier, ce qui permettra des
migrations contrôlées. L'élément /./
indique une racine relative
à laquelle rattacher les chemins (à utiliser avec preseed/include et preseed/run).
On peut ainsi indiquer des fichiers soit avec une URL complète, chemin commençant par
/, soit avec un chemin relatif à l'endroit où a été trouvé le dernier fichier de
préconfiguration. Cela permettra d'écrire des scripts portables où une
hiérarchie complète de scripts pourra être déplacée à un nouvel endroit sans être
détruite. Par exemple, on pourra déplacer des fichiers d'un serveur web sur une clé USB.
Si le fichier de préconfiguration définit preseed/run
comme
/scripts/late_command.sh
, le fichier sera cherché à
http://autoserver.example.com/d-i/squeeze/./scripts/late_command.sh
.
S'il n'existe pas de serveur DHCP ou DNS, ou si vous ne voulez pas utiliser
le chemin par défaut du fichier preseed.cfg
,
vous pouvez toujours utiliser une url explicite. Et si vous n'utilisez pas l'élément
/./
, le fichier sera rattaché au troisième /
de l'URL.
Voici un exemple qui demande une gestion minimale du réseau :
auto url=http://192.168.1.2/path/to/mypreseed.file
Cela fonctionne ainsi :
Si l'URL n'a pas de protocole, HTTP est supposé,
si le domaine n'a pas de point, le domaine donné par DHCP lui sera ajouté et
s'il n'y a pas de /
après le domaine, le chemin par défaut
est ajouté.
En outre, vous pouvez indiquer des paramètres qui n'affectent pas directement
l'installateur Debian mais qui peuvent être passés à des scripts spécifiés dans
les éléments preseed/run
du fichier de préconfiguration
chargé. Pour l'instant, le seul exemple est auto-install/classes
,
avec l'alias classes
. Exemple :
auto url=example.com
classes=class_A;class_B
Une classe peut par exemple dénoter le type de système à installer ou la locale à utiliser.
Il est bien sûr possible d'étendre ce concept. Dans ce cas, il est raisonnable
d'utiliser l'espace de nom de auto-install. On peut avoir par exemple
un auto-install/style
qui sera utilisé dans les scripts.
Si vous en éprouvez le besoin, veuillez envoyer un courriel à la liste
<debian-boot@lists.debian.org>
pour que nous puissions éviter des conflits
d'espace de noms et, qui sait ? que nous ajoutions un alias pour vos paramètres.
Le paramètre auto
n'est pas encore défini partout.
Mais il suffit d'ajouter les deux paramètres
auto=true priority=critical
sur la ligne de commande du
noyau. Le paramètre auto
est un alias pour
auto-install/enable
. Quand il vaut true
, son effet est de retarder
les questions sur la locale et le clavier pour qu'elles puissent être préconfigurées.
Le paramètre priority
est un alias pour debconf/priority
.
Quans sa valeur est critical
, les questions avec une priorité plus basse
sont évitées.
Voici d'autres options intéressantes pour automatiser une installation avec DHCP :
interface=auto netcfg/dhcp_timeout=60
. Elles permettent de
choisir la carte réseau et de patienter pour l'obtention d'une réponse du serveur DHCP.
Il existe un exemple d'utilisation très poussée de la préconfiguration, avec des scripts et des classes, sur le site web de son développeur. Des exemples sont donnés d'effets très intéressants obtenus par un usage créatif de la préconfiguration.
Voici des alias utiles avec la préconfiguration (mode auto).
Il faut remarquer que ce sont simplement des alias pour les noms des questions.
Vous devez toujours leur donner des valeurs, comme par exemple,
auto=true
ou interface=eth0
.
auto | auto-install/enable |
classes | auto-install/classes |
fb | debian-installer/framebuffer |
language | debian-installer/language |
country | debian-installer/country |
locale | debian-installer/locale |
priority | debconf/priority |
file | preseed/file |
url | preseed/url |
interface | netcfg/choose_interface |
hostname | netcfg/get_hostname |
domain | netcfg/get_domain |
protocol | mirror/protocol |
suite | mirror/suite |
Il est aussi possible d'utiliser DHCP pour spécifier un fichier à télécharger sur le réseau. DHCP permet d'indiquer un nom de fichier. Normalement ce fichier sert à un amorçage sur le réseau. S'il s'agit d'une URL, le système d'installation qui permet une préconfiguration de type network téléchargera le fichier et l'utilisera comme fichier de préconfiguration. Voici un exemple montrant comment configurer le fichier dhcpd.conf appartenant à la version 3 du serveur ISC DHCP (paquet debian dhcp3-server).
if substring (option vendor-class-identifier, 0, 3) = "d-i" { filename "http://host/preseed.cfg"; }
Remarquez que l'exemple précédent n'autorise le fichier qu'aux clients DHCP qui s'identifient comme « d-i ». Les autres clients DHCP ne sont pas affectés. Vous pouvez aussi mettre le texte dans un paragraphe à destination d'un seul hôte pour ne pas préconfigurer toutes les installations faites dans votre réseau.
Une bonne façon d'utiliser cette technique est de ne préconfigurer que les valeurs liées à votre réseau, par exemple le nom de votre miroir Debian. De cette manière les installations utilisent automatiquement le bon miroir et la suite de l'installation peut se faire interactivement. Il faut être très prudent si l'on veut automatiser toute l'installation avec une préconfiguration de type DHCP.
[28] Le propriétaire d'une variable debconf (ou d'une question) est le paquet qui contient la question correspondante. Les variables utilisées par l'installateur sont la propriété de « d-i ». Variables et questions peuvent avoir plusieurs propriétaires, ce qui aide à déterminer si elles peuvent être supprimées de la base de données lorsqu'un paquet est purgé.