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.debian.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.
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.
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
. 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 : 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. 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 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 | |
---|---|
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 | |
---|---|
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.
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 <debian-boot@lists.debian.org>
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 | |
---|---|
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 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 |
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 ---
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é.