Tutoriel : Installation automatique de debian
Debian contient un système de configuration automatique très puissant : debconf. Il est utilisé lors des mises à jour, mais aussi pendant l’installation du système.
Dans ce tutoriel nous allons voir une méthode permettant de créer un fichier iso personnalisé, pour installer et configurer automatiquement une nouvelle distribution debian.
Bien entendu cette procedure n’a d’intérêt que si l’on veut installer debian sur plusieurs machines différentes, avec la même configuration.
J’ai rédigé ce tutoriel en utilisant la documentation Debian (pour squeeze). Elle est extrêmement bien faite, et consultable.
Recommandations
Il vous faudra probablement plusieurs essais avant d’arriver à la configuration qui vous convient parfaitement. Pour cela je vous conseille d’utiliser une machine virtuelle. (En fait c’est assez indispensable, sinon vous allez devoir graver un cd à chaque essai).
ATTENTION: Durant la phase d’installation le disque dur est formaté. Faites attention à ne pas perdre des données. Si vous avez plusieurs disques vérifiez que la procédure de formatage du disque sélectionne le bon disque.
Creation du fichier preseed.cfg
Le fichier preseed.cfg contient les réponses aux questions posées par l’installeur debian. Lorsqu’une réponse n’est pas dans le fichier, l’installeur posera alors la question.
La constitution de ce fichier peut être assez complexe et longue. Pour expliquer le format, voici un petit exemple :
1 2 3 4 5 6 7 8 9 | # Les lignes qui commencent par un '#' sont des commentaires. # Keyboard selection. d-i console-keymaps-at/keymap select fr-latin9 d-i keyboard-configuration/xkb-keymap select fr(latin9) # d-i correspond à "debian installer" # la chaine suivante est un identifiant d'une question. # Suivie du type (Ici select represente une liste dans laquelle on selectionne une valeur) # Et finit par la réponse à la question. |
Voici un fichier preseed que j’ai utilisé : preseed.cfg. Je l’ai créé en utilisant la documentation debian.
Vous pouvez l’utiliser comme base de travail, en modifiant les réponses pour qu’elles correspondent à vos besoins.
Il est facile de répondre pour la plupart des valeurs du fichier preseed. Dans la suite de cet article, je vais décrire les parties qui ont été complexes à mettre au point.
Partitionnement du disque (partman)
Principe
Le partitionnement du disque est un élément sensible. L’installeur debian est fait pour être le plus générique possible, et doit s’adapter à tout les disques. Pour ce faire, il utilise partman.
Je vous conseille vivement de lire la documentation debian sur le partitionnement pour éviter des erreurs.
J’ai décidé d’embarquer la configuration de partman dans le fichier preseed. Il y a d’autres possibilité, je ne vais pas les développer ici.
Pour avoir un partitionnement totalement automatique il faut :
- Donner un schema de partitionnement, avec les tailles des différentes partition.
- Valider et confirmer l’utilisation de ce schéma.
On donne le schema en utilisant la propriété: « partman-auto/expert_recipe » : d-i partman-auto/expert_recipe string ...
Pour spécifier le schéma, il faut entrer les données au format partman. Le format partman est très restrictif, il faut le respecter à « l’espace près » :
- Un « { » doit toujours être suivi d’une espace.
- Un « } » doit toujours être précédé d’une espace.
- J’ai déjà eu des problèmes parce que je n’avais pas mis d’espace après le point final. Pensez à en mettre une.
La configuration partman dans preseed.cfg
Attention: Il est fortement recommandé de lire la documentation partman officielle, et de faire des sauvegardes de vos données. (La méthode présentée ici efface tout le disque !).
J’ai trouvé une documentation très utile ici : /usr/share/doc/debian-installer/devel/partman-auto-recipe.txt.gz
Dans le fichier preseed.cfg, chaque ligne correspond à une propriété. Pour avoir un fichier lisible, on va pouvoir « antislasher » les retours à la ligne.
Ensuite, pour ne pas avoir de à taper de confirmation, il faut définir les propriétés suivantes :
1 2 3 4 | d-i partman-partitioning/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman/confirm_nooverwrite boolean true |
Créer le fichier iso personnalisé
On cherche à créer un fichier iso contenant le fichier preseed.cfg, pour que l’installeur debian puisse le lire.
Pour commencer il faut télécharger l’ISO debian sur debian.org. J’utilise la version 6.0.0 amd64 en netinstall. Dans les exemples suivants, je supose que vous travaillez dans un dossier contenant l’iso et le fichier preseed.cfg.
Vous devrez probablement lancer en root certaine des commandes si dessous (Certain fichiers de l’iso après decompression ne sont accessible que par ‘root’).
sudo apt-get install bsdtar mkisofs
# Décomprésser l'iso dans un dossier nommé "debian"
mkdir debian
bsdtar -C ./deban -xf debian-6.0.0-amd64-netinst.iso
# Le fichier preseed doit aller dans l'archive "initrd"
# On créé un dossier de travail initrd
mkdir initrd
cd initrd
# On décompresse le initrd qui est dans le iso original
# ATTENTION: le chemin vers le initrd peut être different chez vous : Il dépend de votre architecture.
gunzip -c ../debian/install.amd/initrd.gz | cpio -id
# On copie notre fichier pressed.cfg dans notre dossier de travail
cp ../pressed.cfg .
# On compresse notre nouveau initrd
find . | cpio --create --format='newc' | gzip > ../initrd.gz
cd ..
# On le place dans l'iso
cp initrd.gz debian/install.amd/
# Il faut maintenant reconstruire l'iso.</pre>
# On commence par regénérer le fichier contenant les sommes md5 des fichiers:
cd debian
md5sum $(find ! -name "md5sum.txt" ! -path "./isolinux/*" ! -name "debian" -follow -type f) > ./md5sum.txt
cd ..
# On peut enfin reconstruir l'iso
mkisofs -o ./debian-6.0-netinstall-custom.iso \\
-V di`date -u +%m%d%H%M%S` -r -J -no-emul-boot -boot-load-size 4 \\
-boot-info-table -b isolinux/isolinux.bin \\
-c isolinux/boot.cat ./debian
# Nettoyons les fichiers de travail
rm -r debian initrd
Vous avez maintenant un fichier iso debian-6.0-netinstall-custom.iso.
Il ne vous reste plus qu’à installer votre debian normalement, sans avoir à répondre aux questions de l’installeur.