Debian Installation avec Preseed

Afin de pou­voir auto­ma­ti­ser l’ins­tal­la­tion de Debian et de ses déri­vés, nous pou­vons écrire des fichiers de réponse qui per­mettent de dérou­ler une ins­tal­la­tion sans inter­ac­tion uti­li­sa­teur. Ce fichier est pré­nom­mé pre­seed pour Debian, ou encore Kicks­tart pour Red­Hat et ses déri­vés. Il existe plu­sieurs façon de spé­ci­fier ce fameux fichier de réponse, soit en modi­fiant direc­te­ment le fichier ISO, soit en le spé­ci­fiant dans le lan­ce­ment de l’ins­tal­la­tion.


Spécification du fichier preseed lors de l’installation

Vous pou­vez trou­ver mon fichier pre­seed içi : https://github.com/Eliora59/KickStart-Preseed/blob/main/preseed
Il est éga­le­ment auto-héber­ger à l’a­dresse sui­vante afin de faci­li­ter son uti­li­sa­tion : ks.overcomputing.net/preseed

Lors du lan­ce­ment de l’I­SO offi­ciel de Debian, nous allons nous aller direc­te­ment dans Advan­ced options

Puis ensuite aller dans Auto­ma­ted ins­tall

Le sys­tème va effec­tuer quelques actions de base, comme rece­voir une confi­gu­ra­tion DHCP et va deman­der ensuite votre fichier pre­seed, on indique donc l’a­dresse du fichier


Intégration du preseed dans l’ISO

Cette solu­tion per­met de déployer une ins­tal­la­tion de Debian sans même à avoir besoin de spé­ci­fier l’emplacement du fichier pre­seed.

Chaque nou­velle géné­ra­tion néces­site le recom­men­ce­ment de toutes les étapes ain­si que la sup­pres­sion des anciens fichiers afin d’é­vi­ter tout pro­blème
Le fichier pre­seed qui va être pré­ci­ser doit être au plus mini­mal pos­sible, c’est à dire sans com­men­taire et juste les com­mandes prin­ci­pale afin d’é­vi­ter une cor­rup­tion de fichier.

Dans un pre­mier temps, nous allons télé­char­ger l’I­SO.

wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.7.0-amd64-netinst.iso
Bash user com­mand

Une fois que l’i­so est télé­char­gé, nous allons main­te­nant la décom­pres­ser avec l’u­ti­li­taire 7zip

7z x -odebian-ps debian-11.7.0-amd64-netinst.iso
Bash user com­mand

On se déplace dans notre dos­sier avec notre archive décom­pres­sée

cd debian-ps
Bash user com­mand

On ajoute notre fichier preseed.cfg dans le dos­sier extrait de Debian, et il doit être neutre sans com­men­taire pour évi­ter tout pro­blème de cor­rup­tion :

preseed.cfg
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 main­te­nant rendre modi­fiable notre fichier fichier ini­trd, le décom­pres­ser et y ajou­ter 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 com­mand

Nous allons main­te­nant 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 com­mand

On génère main­te­nant le nou­vel 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 com­mand

Main­te­nant si nous démar­rons notre image, nous avons la pos­si­bi­li­té de soit faire l’ins­tal­la­tion en mode gra­phique, ce qui nous per­met­tra de confi­gu­rer cer­tains élé­ments à la main si nous sou­hai­tons une machine pas com­mune, ou si on veut dérou­ler une ins­tal­la­tion cou­rante, on appuie sur Ins­tall.