Installateur Debian personnalisé

Les installateurs Debian sont fournis sous forme d'images ISO qui sont des fichiers non modifiables. L'objectif ici est de décrire comment accéder au contenu de l'image pour pouvoir le modifier, puis comment régénérer une nouvelle image ayant les propriétés initiales.

Deux exemples de personnalisation sont présentés :

1 - Accès au contenu de l'image

$ mkdir -p debian_perso
$ cd debian_perso
$ wget -c debian-8.5.0-amd64-xfce-CD-1.iso
# mount -o loop debian-8.5.0-amd64-xfce-CD-1.iso /mnt
mount: /dev/loop0 est protégé en écriture, sera monté en lecture seule
$mkdir -p iso
$ rsync -a -H -exclude=TRANS.TBL /mnt/ iso
$ ls -la |grep iso
dr-xr-xr-x 1 root root 4096 juin 4 2016 iso1
dr-xr-xr-x 15 philippe philippe 4096 juin 4 2016 iso2
$ chmod -R +w-- iso
# umount /mnt

2 - Modification

Deux exemples de modification sont décrits :

2.1 - Ajout de firmware propriétaires

Les installateurs standards n'incluent que des composants "libres". Si des firmwares propriétaires sont nécessaires à l'installation, par exemple pour faire fonctionner la carte réseau, une solution consiste à les ajouter, sous la forme de paquets .deb, dans le répertoire /firmware de l'installateur.

Si l'on ne connaît pas les firmwares nécessaires, on peut choisir d'ajouter tous les firmwares disponibles, seuls les firmwares nécessaires seront utilisés et installés par l'installateur. C'est cette solution qui est décrite ici.

$ cd iso/firmware
$ wget http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/jessie/current/firmware.tar.gz
$ tar -xzvf firmware.tar.gz
$ ls
amd64-microcode_2.20160316.1~deb8u1_amd64.deb
amd64-microcode_2.20160316.1~deb8u1_i386.deb
atmel-firmware_1.3-4_all.deb
bluez-firmware_1.2-3_all.deb
dahdi-firmware-nonfree_2.10.0-1_all.deb
firmware-adi_0.43_all.deb
firmware-atheros_0.43_all.deb
firmware-b43-installer_019-2_all.deb
firmware-b43legacy-installer_019-2_all.deb
firmware-bnx2_0.43_all.deb
firmware-bnx2x_0.43_all.deb
firmware-brcm80211_0.43_all.deb
........
$ cd ..

2.2 - Utilisation de fichiers de pré-configurations (preseed)

La méthode du preseed consiste à préparer un fichier de configuration qui permettra d'automatiser l'installation en fournissant certaines "réponses" ou toutes les réponses aux questions de l'installateur sans intervention de l'opérateur.

$ cat isolinux/txt.cfg 
default install
label install
menu label ^Install
menu default
kernel /install.amd/vmlinuz
append auto=true file=/cdrom/preseed.cfg vga=788 initrd=/install.amd/initrd.gz --- quiet

3 - Régénération de l'image

Lorsque le contenu du répertoire est modifié, pour régénérer une image iso bootable :

$ find . -type f -print0 | xargs -0 md5sum > md5sum.txt
$ genisoimage -o ../linux.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./
$ cd ..
$ file linux.iso
linux.iso: ISO 9660 CD-ROM filesystem data 'CDROM' (bootable)
# aptitude install syslinux-utils
$ isohybrid linux.iso
$ file linux.iso
linux.iso: DOS/MBR boot sector ISO 9660 CD-ROM filesystem data 'CDROM' (bootable); partition 1 : ID=0x17, active, start-CHS (0x0,0,1), end-CHS (0x289,63,32), startsector 0, 1331200 sectors

4 - Utilisation

Install1.bis