Afin de pouvoir automatiser l’installation de Debian et de ses dérivés, nous pouvons écrire des fichiers de réponse qui permettent de dérouler une installation sans interaction utilisateur. Ce fichier est prénommé preseed pour Debian, ou encore Kickstart pour RedHat et ses dérivés. Il existe plusieurs façon de spécifier ce fameux fichier de réponse, soit en modifiant directement le fichier ISO, soit en le spécifiant dans le lancement de l’installation.
Spécification du fichier preseed lors de l’installation
Vous pouvez trouver mon fichier preseed içi : https://github.com/Eliora59/KickStart-Preseed/blob/main/preseed
Il est également auto-héberger à l’adresse suivante afin de faciliter son utilisation : ks.overcomputing.net/preseed
Lors du lancement de l’ISO officiel de Debian, nous allons nous aller directement dans Advanced options

Puis ensuite aller dans Automated install

Le système va effectuer quelques actions de base, comme recevoir une configuration DHCP et va demander ensuite votre fichier preseed, on indique donc l’adresse du fichier

Intégration du preseed dans l’ISO
Cette solution permet de déployer une installation de Debian sans même à avoir besoin de spécifier l’emplacement du fichier preseed.
Chaque nouvelle génération nécessite le recommencement de toutes les étapes ainsi que la suppression des anciens fichiers afin d’éviter tout problème
Le fichier preseed qui va être préciser doit être au plus minimal possible, c’est à dire sans commentaire et juste les commandes principale afin d’éviter une corruption de fichier.
Dans un premier temps, nous allons télécharger l’ISO.
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.7.0-amd64-netinst.iso
Bash user command Une fois que l’iso est téléchargé, nous allons maintenant la décompresser avec l’utilitaire 7zip
7z x -odebian-ps debian-11.7.0-amd64-netinst.iso
Bash user command On se déplace dans notre dossier avec notre archive décompressée
cd debian-ps
Bash user commandOn ajoute notre fichier preseed.cfg dans le dossier extrait de Debian, et il doit être neutre sans commentaire pour éviter tout problème de corruption :
d-i debian-installer/locale string fr_FR
d-i console-keymaps-at/keymap select fr
d-i keyboard-configuration/xkb-keymap select fr(latin9)
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string DEB-SRV
d-i netcfg/get_domain string overcomputing.net
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i mirror/suite string stable
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Paris
d-i clock-setup/ntp boolean false
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman/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
d-i passwd/root-password password root
d-i passwd/root-password-again password root
d-i passwd/make-user boolean false
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i apt-setup/cdrom/set-first boolean false
d-i apt-setup/cdrom/set-next boolean false
d-i apt-setup/cdrom/set-failed boolean false
popularity-contest popularity-contest/participate boolean false
tasksel tasksel/first multiselect standard
d-i pkgsel/include string openssh-server build-essential
d-i grub-installer/only_debian boolean true
d-i grub-installer/bootdev string /dev/sda
d-i debian-installer/exit/poweroff boolean true
d-i finish-install/reboot_in_progress note
d-i preseed/late_command string in-target sh -c "echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config"; in-target /etc/init.d/ssh restart
Nous allons maintenant rendre modifiable notre fichier fichier initrd, le décompresser et y ajouter notre fichier preseed.cfg
chmod +w -R install.amd/
gunzip install.amd/initrd.gz
echo preseed.cfg | cpio -H newc -o -A -F install.amd/initrd
gzip install.amd/initrd
chmod -w -R install.amd/
Bash user command Nous allons maintenant régénérer le md5
chmod +w md5sum.txt
find -follow -type f ! -name md5sum.txt -print0 | xargs -0 md5sum > md5sum.txt
chmod -w md5sum.txt
Bash user command On génère maintenant le nouvel ISO
genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../debian-ps.iso .
Bash user command Maintenant si nous démarrons notre image, nous avons la possibilité de soit faire l’installation en mode graphique, ce qui nous permettra de configurer certains éléments à la main si nous souhaitons une machine pas commune, ou si on veut dérouler une installation courante, on appuie sur Install.
