Introduction#

L’installation manuelle de Debian sur plusieurs machines peut vite devenir répétitive et chronophage. Heureusement, il existe une méthode efficace pour automatiser ce processus : l’utilisation d’un fichier de configuration preseed. Ce fichier permet de répondre à l’avance aux questions posées par l’installateur Debian, simplifiant ainsi le déploiement sur plusieurs machines. Dans ce billet, nous vous guidons à travers la création d’une image ISO Debian intégrant un fichier preseed.cfg pour automatiser l’installation.

Retrouvez le projet complet sur GitHub : debian-preseed-iso-builder.

Qu’est-ce que le fichier preseed.cfg ?#

Le fichier preseed.cfg est un fichier de configuration qui contient toutes les réponses aux questions habituellement posées par l’installateur Debian : choix du fuseau horaire, configuration réseau, partitionnement du disque, etc. Il vous permet d’automatiser complètement ou partiellement l’installation de Debian, facilitant ainsi le déploiement sur plusieurs machines.

Exemple de fichier preseed.cfg#

Voici un exemple de fichier preseed.cfg que vous pouvez utiliser comme point de départ pour personnaliser votre installation : Exemple de fichier preseed.cfg.

N’hésitez pas à lire la documentation officiel pour mieux comprendre quels sont les options possibles.

Voici les quelques spécificités de cette configuration :

  1. Création automatique des partitions suivantes avec LVM :
/dev/sda1      500M ext3 /boot
/dev/sda2      max  lvm  -
  vg_00        max  -    -
    lv_swap    2G   swap -
    lv_root    5G   xfs  /
    lv_home    1G   xfs  /home
    lv_var     3G   xfs  /var
    lv_var_log 1G   xfs  /var/log
    lv_tmp     1G   xfs  /tmp
  1. Définition des mirroires sources pour les mises à jour, correction de sécurité et des mises à jour du système.
  2. Installation des paquets suivants : openssh-server, build-essential, python3, wget, curl, vim, htop

Configurer le mot de passe root#

Avant de créer l’ISO personnalisée, il est important de configurer le mot de passe root. Pour ce faire, générez un mot de passe hashé avec les commandes suivantes :

sudo apt install -y whois
mkpasswd -m sha256crypt

Insérez ensuite le mot de passe hashé dans le fichier preseed.cfg à l’emplacement approprié.

Créer une image ISO Debian avec preseed.cfg#

Pour intégrer votre fichier preseed.cfg dans une image ISO Debian, vous pouvez suivre les instructions du wiki Debian. Toutefois, pour simplifier le processus, nous avons préparé un script Makefile qui automatise les commandes nécessaires :

ISOBASEFILE=debian-12.0.0-amd64-netinst.iso
DESTINATION=isofiles
PRESEEDFILE=preseed.cfg
ISOLINUXDIR=isolinux
TARGETISODIR=output
TARGETISO=$(TARGETISODIR)/preseed-$(ISOBASEFILE)

all: clean extract addcustomisolinux addpreseed generatemd5sum createiso

extract:
	7z x -o$(DESTINATION) $(ISOBASEFILE)

addpreseed:
	chmod +w -R $(DESTINATION)/install.amd/
	gunzip $(DESTINATION)/install.amd/initrd.gz
	echo $(PRESEEDFILE) | cpio -H newc -o -A -F $(DESTINATION)/install.amd/initrd
	gzip $(DESTINATION)/install.amd/initrd
	chmod -w -R $(DESTINATION)/install.amd/

addcustomisolinux:
	cp -R $(ISOLINUXDIR)/* $(DESTINATION)/isolinux/

generatemd5sum:
	chmod +w $(DESTINATION)/md5sum.txt
	cd $(DESTINATION) && find -follow -type f ! -name md5sum.txt -print0 | xargs -0 md5sum > md5sum.txt
	chmod -w $(DESTINATION)/md5sum.txt

createiso:
	mkdir -p $(TARGETISODIR)
	genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $(TARGETISO) $(DESTINATION)
	sudo rm -rf $(DESTINATION)

clean:
	sudo rm -rf $(DESTINATION)

Ce script réalise les étapes suivantes :

  1. Extraction des données de l’image ISO Debian.
  2. Ajout du fichier preseed.cfg.
  3. Mise à jour du fichier md5sum.txt.
  4. Création d’une nouvelle image ISO.

Générer l’image ISO personnalisée#

Une fois le fichier ISO Debian de base téléchargé et le fichier preseed.cfg configuré, utilisez la commande suivante pour générer une nouvelle image ISO personnalisée :

make ISOBASEFILE=debian-12.0.0-amd64-DVD-1.iso

Configurer les paramètres de langue et de clavier#

Certains paramètres, tels que la langue et le clavier, doivent être configurés avant que l’installateur Debian ne lise le fichier preseed.cfg. Pour ce faire, vous devez les définir directement dans les fichiers de configuration isolinux.

Pour plus d’informations sur IsoLinux, lisez cet article : Types de bootloaders Syslinux.

  • isolinux/isolinux.cfg : Ce fichier configure le comportement par défaut du chargeur de démarrage IsoLinux et inclut d’autres fichiers comme menu.cfg et txt.cfg pour gérer le processus de démarrage.
path 
prompt 0
timeout 0
include menu.cfg
default install
  • isolinux/txt.cfg : Ce fichier contient les commandes et arguments nécessaires pour charger le noyau avec les paramètres de langue et de clavier avant le démarrage de l’installateur Debian.
label install
	menu label ^Install
	kernel /install.amd/vmlinuz
	append vga=788 initrd=/install.amd/initrd.gz language=en country=GB keymap=fr(latin9) --- quiet

Conclusion#

En suivant ces étapes, vous pouvez désormais automatiser l’installation de Debian et gagner du temps lors du déploiement sur plusieurs machines. Que vous soyez administrateur système ou développeur, cette méthode vous permet de déployer Debian de manière efficace et sans effort manuel. Bonne installation automatisée !

Sources et documentation supplémentaires#

Pour plus d’informations sur l’automatisation de l’installation de Debian, consultez les ressources suivantes :