Pour ceux installent ou réinstallent souvent Fedora, il peut être utile d'exploiter à fond l'image du DVD d'installation. L'ISO ne fait que 3,6Go ce qui nous laisse une bonne de marge de manoeuvre si l'on prend un DVD+RW comme média. Avec une clé USB de 8Go en tant que média d'installation et de l'imagination ce serait fantastique, mais je n'ai plus qu'un DVD sous la main... On fera avec. La première idée qui me vient est d'ajouter quelques paquets qui ne sont pas présents par défaut ainsi que de faire en sorte qu'il soient installés automatiquement sans avoir à « cocher toutes les cases ». Mais c'est en faisant quelques recherches dans l'image que j'ai vu à quel point je le sous-exploitais. En effet parmis les nombreux paquets que j'avais prévu de rajouter dans l'image, la moitié sont en fait déjà présents, mais ne sont pas installés par défaut. Je vous invite donc à passer en root dès maintenant, l'opération chirurgicale va commencer...

Après avoir téléchargé l'image et créé le répertoire /mnt/isoF17, nous pouvons la monter en lecture seule :

# mount -o loop /var/lib/libvirt/images/Fedora-17-x86_64-DVD.iso /mnt/isoF17

Puis on crée le répertoire ~/isoF17 pour copier tout le contenu de l'image :

$ cp -a /mnt/isoF17/* ~/isoF17

Pour ne pas trop ralonger l'article, je prends juste comme exemple les paquets linux_logo et cowsay qui n'ont pas une liste de dépendances trop conséquente (et n'oubliez pas les dépendances sinon l'installation va planter lamentablement).

Première étape, vérification d'une présence éventuelle dans le DVD :

$ grep linux_logo ~/isoF17/repodata/767f84f69c06ee9b14da2cc3ece4532520bd65969f4d8849852db692bbe57bc3-Fedora-17-comps.xml
$ grep cowsay ~/isoF17/repodata/767f84f69c06ee9b14da2cc3ece4532520bd65969f4d8849852db692bbe57bc3-Fedora-17-comps.xml

Les commandes grep ne renvoie rien donc ils ne sont pas dans le liste du menu « Personnaliser maintenant » de Anaconda.

En revanche ils pourraient être dans le dépôt en tant que dépendances d'autres paquets :

$ find ~/isoF17/Packages/ -iname "linux_logo*" -print
$ find ~/isoF17/Packages/ -iname "cowsay*" -print

Okay ! aucune trace de ces paquets dans l'image, à mon tour de jouer maintenant. Téléchargement des paquets en provenance directe du dépôt fedora :

$ yumdownloader linux_logo cowsay
$ mv linux_logo-5.11-3.fc17.x86_64.rpm ~/isoF17/Packages/l/
$ mv cowsay-3.03-10.fc17.noarch.rpm ~/isoF17/Packages/c/

Il ne reste plus qu'à générer le dépôt de métadonnées, mais avant on doit ajouter nos paquets dans le fichier XML original :

$ scp ~/isoF17/repodata/*-Fedora-17-comps.xml ~/isoF17/Fedora-17-comps.xml

Et avec votre éditeur de texte préféré :

$ geany ~/isoF17/Fedora-17-comps.xml

Ceux qui ont quelques notions d'XML, et même les autres, verrons qu'il suffit d'ajouter entre deux balises <packagelist> une ligne pour chacun de nos paquets.

Par exemple, pour que le paquet soit installé par défaut (uniquement si le groupe dans lequel il est présent est sélectionné) :

<packagereq type="default">linux_logo</packagereq>

Un autre exemple : pour que le paquet soit disponible dans la liste de paquets du groupe, mais pas présélectionné :

<packagereq type="optional">cowsay</packagereq>

Et puis tant qu'on y est, dans le premier groupe au tout début du fichier XML, il s'agit du groupe « Outils d'administration » dans lequel se trouve yumex qui est présent dans le DVD mais n'est pas installé par défaut. Vous l'aurez compris, il suffit de changer type="optional" en type="default" pour qu'il soit installé par défaut. Une fois que l'on a terminé de modifier ce fichier, il est temps de régénérer le dépôt de métadonnées :

$ rm -rf ~/isoF17/repodata
$ createrepo -g ~/isoF17/Fedora-17-comps.xml --distro Fedora-17 --repo Fedora-custom ~/isoF17/

Cette commande peut prendre un certain temps... Ensuite on peut supprimer le fichier ~/isoF17/Fedora-17-comps.xml qui ne sert plus à rien, ou bien le garder en copie de sauvegarde, pour générer un patch, qui sait.

Le plus dûr est passé, voici la dernière étape, la reconstruction de l'image ISO :

$ mkisofs -R -J -T -no-emul-boot -boot-load-size 4 -boot-info-table -V "Fedora 17 x86_64" -b isolinux/isolinux.bin -c isolinux/boot.cat -o Fedora-17-x86_64-DVD-custom.iso ~/isoF17

Vous avez remarqué lorsque l'on boote sur le DVD d'install, il y a toujours une entrée pour vérifier la somme de contrôle md5 avant d'aller plus loin, et bien nous allons également intégrer cette fonction dans notre image ISO :

$ implantisomd5 ~/Fedora-17-x86_64-DVD-custom.iso

Et puis, il faut aussi générer le célèbre fichier CHECKSUM qui contient la somme de contrôle sha256 du fichier image :

$ sha256sum Fedora-17-x86_64-DVD-custom.iso > Fedora-17-x86_64-custom-CHECKSUM

Et voilà ! un ISO de pro, prêt à l'emploi...

L'opération est plutôt facile, j'ai déjà commencé à faire un script qui automatise la tâche pour chaque nouvelle version de Fedora, mais surtout je me demande si je vais pas utiliser le DVD d'install pour mes backups spéciaux... après tout il y a environ 400Mo de place disponible et c'est facile d'ajouter quelques fichiers de la même façon que nous venons de voir. Ça serait dommage de s'en priver ;-)