Mise à jour : Debian 11.0 / Bullseyes
Les installateurs Debian sont fournis sous forme d'images ISO. Deux exemples de personnalisation de l'image sont présentés :
l'ajout de firmwares propriétaires
la modification de la ligne de commande linux et l'ajout d'unfichier de pré-configuration (preseed) afin d'automatiser l'installation
Référence https://stackoverflow.com/questions/31831268/genisoimage-and-uefi
Sommaire
Télécharger une image de l'installateur debian
$ wget -c debian-8.5.0-amd64-xfce-CD-1.iso
Monter l'image de l'installateur debian à un emplacement disponible, par exemple /mnt
$ sudo 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
Créer un sous-répertoire iso et y copier le contenu du répertoire /mnt
$ mkdir iso
$ rsync -a -H -exclude=TRANS.TBL /mnt/ iso/
Donner les droits en écriture au répertoire iso et son contenu afin qu'il soit modifiable
$ chmod -R +w-- iso
Le répertoire /mnt ne sera plus utilisé et peut-être démonté.
$ sudo umount /mnt
Deux exemples de modification sont décrits :
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.
Télécharger, dans le répertoire iso/firmwares, l'archive tar.gz comprenant l'ensemble des firmwares à partir de la page http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/ . Choisir la version de Debian appropriée, dans le cas de l'installateur jessie :
$ cd iso/firmware
$ wget http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/jessie/current/firmware.tar.gz
Désarchiver l'archive dans le répertoire. Celle-ci comprend environ 40 firmwares au format .deb.
$ 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
........
Se replacer dans le répertoire iso
$ cd ..
$ sudo cp preseed.txt iso/
Dans le fichier /isolinux/txt..cfg éditer la ligne commençant par append :
ajouter les options
auto=true pour indiquer que le fichier de preseed est à prendre en considération avant de poser les questions sur le choix de langue, la localisation, ....
file=/cdrom/preseed.cfg est le chemin vers le fichier de preseed quand l'installateur est chargé
supprimer les options de bureau éventuelles (par exemple desktop=xfce) qui viendraient en contradiction avec les choix du fichier de configuration
append auto=true file=/cdrom/preseed.txt vga=788 initrd=/install.amd/initrd.gz --- quiet
Lorsque le contenu du répertoire est modifié, pour régénérer une image iso bootable :
Toujours dans le répertoire iso
Mettre à jour le fichier checksum (md5sum.txt)
$ find . -type f -print0 | xargs -0 md5sum > md5sum.txt
$ sudo aptitude install genisoimage
Toujours depuis le répertoire iso, régénérer le fichier iso avec la commande
$ genisoimage -o ../linux.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./
le chemin et nom du fichier iso résultant (ici ../linux.iso) est indiqué après l'option -o
le chemin et nom du répertoire contenant les fichiers à utiliser pour réaliser l'image iso (ici install_perso) est indiqué en fin de ligne de commande. Dans le cas présent, il est désigné par son chemin relatif (./)
- isolinux/boot.cat et isolinux/isolinux.bin sont deux fichiers de ce répertoire
On peut vérifier avec la commande "file" que le fichier est reconnu comme fichier ISO bootable
$ cd ..
$ file linux.iso
linux.iso: ISO 9660 CD-ROM filesystem data 'CDROM' (bootable)
Pour transformer le fichier linux.iso en fichier hybride, bootable depuis un CDROM et une clé USB, utiliser isohybrid du paquet syslinux-utils
$ sudo aptitude install syslinux-utils $ isohybrid linux.iso
La commande file indique désormais, en plus du caractère ISO bootable du fichier, la présence d'un secteur de démarrage DOS/MBR
$ 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
Au lancement de l'installateur, sélectionner la ligne nommée "Install" et utiliser la touche Entrée pour démarrer l'installation avec le fichier de pré-configuration défini dans le fichier /isolinux/txt/cfg.
Si plusieurs fichiers de pré-configuration sont disponibles, utiliser la touche Tabulation pour éditer la ligne du menu et le nom du fichier de pré-configuration à utiliser.