B.2. Utiliser la préconfiguration

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 ou sur une clé USB. Si vous voulez inclure ce fichier sur une image d'installation, vous devez alors 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, https://www.buy-develop.eu.org/releases/bookworm/example-preseed.txt. Vous pouvez vous servir de ce fichier pour créer le vôtre. Ce fichier utilise les éléments de configuration inclus dans cette annexe.

B.2.1. Charger le fichier de préconfiguration

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
- ou
  preseed/url=tftp://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- quand l'amorçage se fait sur une image modifiée :
  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, preseed/file en file et preseed/file/checksum en preseed-md5 si vous les passez en paramètres d'amorçage.

B.2.2. Utiliser les paramètres d'amorçage pour préconfigurer des questions

Quand on ne peut pas utiliser un fichier de préconfiguration pour préconfigurer certaines étapes, on peut quand même automatiser complètement l'installation car il est possible de préconfigurer des paramètres sur la ligne de commande lors du démarrage de l’installateur.

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 chemin/vers/variable=valeur. Quand une valeur est destinée à la configuration de paquets du système cible, il est nécessaire d'ajouter le propriétaire [18]de la variable : propriétaire: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 du paquet en question.

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 la 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'utilisent 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 trois tirets seront copiés dans la configuration du programme d'amorçage (si l'installateur le permet). L'installateur filtrera automatiquement les options qu'il reconnaît, comme par exemple les options de préconfiguration.

[Note] Note

Il faut savoir que le noyau Linux (version 2.6.9 et au delà) accepte un maximum de 32 options en ligne de commandes et 32 variables d'environnement. Les options ajoutées par défaut 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 dans le fichier de configuration de votre chargeur de démarrage, comme vga=normal. Cela permet de rajouter autant d'options pour la préconfiguration.

[Note] Note

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.

B.2.3. Le mode auto

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.

Il faut pour cela utiliser le choix d'amorçage Automated install, ou auto dans certaines architectures et méthodes d'amorçage. Dans cette section, auto n'est donc pas un paramètre, mais un type d'amorçage qui ajoute des paramètres à l'invite d'amorçage.

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é sera trouvé à l'URL http://autoserver.example.com/d-i/bookworm/./preseed.cfg.

La dernière partie de l’adresse, (d-i/bookworm/./preseed.cfg), provient de auto-install/defaultroot qui contient le répertoire bookworm 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 « / », donc rattaché —, 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/bookworm/./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é,

  • 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 indiquer 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 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 pour que nous puissions éviter des conflits d'espace de noms et, qui sait, ajouter un alias pour votre paramètre.

Le type d'amorçage auto n'est pas encore défini pour toutes les architectures. Mais il suffit d'ajouter les deux paramètres auto=true priority=critical sur la ligne de commande du noyau. Le paramètre du noyau 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. Quand 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.

[Astuce] Astuce

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.

B.2.4. Alias utiles avec la préconfiguration

Voici des alias utiles avec la préconfiguration (mode auto). Il faut remarquer que ce sont simplement des alias courts pour les noms des questions. Vous devez toujours leur donner des valeurs, comme par exemple, auto=true ou interface=eth0.

priority debconf/priority
fb debian-installer/framebuffer
auto auto-install/enable
classes auto-install/classes
file preseed/file
url preseed/url
theme debian-installer/theme
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
keymap keyboard-configuration/xkb-keymap
modules anna/choose_modules
firmware hw-detect/firmware-lookup
interface netcfg/choose_interface
domain netcfg/get_domain
hostname    netcfg/get_hostname
protocol mirror/protocol
suite mirror/suite
recommends base-installer/install-recommends
tasks tasksel:tasksel/first
desktop tasksel:tasksel/desktop
preseed-md5 preseed/file/checksum

B.2.5. Exemples de préconfiguration de l'invite d'amorçage

Voici quelques exemples d'invites d'amorçage que vous pouvez adapter à vos besoins).

# Pour choisir la langue française et la France comme pays :
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=fr country=FR --- quiet
# Pour choisir la langue anglaise, l'Allemagne comme pays et utiliser un clavier allemand :
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=DE locale=en_US.UTF-8 keymap=de --- quiet
# Pour installer le bureau MATE :
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet
# Pour installer la tâche de serveur web :
/install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---

B.2.6. Utiliser un serveur DHCP pour indiquer les fichiers de préconfiguration

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 par le réseau (netboot). S'il s'agit d'une URL, le système d'installation qui permet une préconfiguration de type réseau 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 DHCP de ISC (paquet debian isc-dhcp-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 bloc d’instructions à 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.



[18] 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é.