Packaging
Preseed ta Debian !
3L’idée est d’automatiser l’installation d’une Debian à l’aide de l’outil preseed. Cet outil est inclus en standard dans la distribution Lenny. Ce qui suit pourra être appliqué sur les distributions dérivées comme Ubuntu. Je m’appuie sur une distribution Debian Lenny standard depuis une ISO netinstall du système (architecture 64 bits).
Pour récupérer l’ISO, au choix:
- Sur le site officiel Debian avec choix d’architecture;
- Le lien direct utilisé pour cet article.
Extraction de l’ISO Debian
L’extraction du contenu de l’image CDROM s’effectue à l’aide de l’outil bsdtar. L’ISO est ensuite simplement extrait à l’aide des commandes suivantes:
# ls debian-505-amd64-netinst.iso # mkdir debian-505-adm64 # bsdtar -C ./debian-505-adm64 -xf ./debian-505-amd64-netinst.iso
Création du fichier preseed
Je m’appuie sur la documentation en ligne proposée sur le site de la communauté Debian. Je n’aborde pas la création du fichier preseed. C’est en effet un travail qui peut être assez long et fastidieux. Mais voici tout de même le fichier preseed.cfg que j’utilise.
Ce fichier décrit toutes les réponses automatisées de l’installateur Debian. Dans mon cas, je n’ai pas automatisé la configuration réseau. De plus, à la fin de l’installation, preseed exécutera automatiquement un script de post-installation.
Reconstruire l’initrd
Lorsque le CDROM de Debian bootera, le fichier preseed.cfg sera automatiquement lu par l’installateur Debian. Pour cela, le plus simple reste de reconstruire le fichier initrd.gz du cdrom, en y incluant ce nouveau fichier.
# cd debian-505-amd64 # chmod u+w debian-505-amd64/install.amd # cp debian-505-amd64/install.amd/initrd.gz debian-505-amd64/install.amd/initrd.gz.org # chmod u-w debian-505-amd64/install.amd debian-505-amd64/install.amd/initrd.gz.org
Ensuite, j’extrais le contenu du fichier initrd.gz dans un répertoire temporaire:
# mkdir initrd # cd initrd # gunzip -c ../debian-505-amd64/install.amd/initrd.gz.org" | cpio -id
J’y place le fichier preseed.cfg, et je reconstruis l’archive:
# cp /path/to/preseed.cfg ./ # find . | cpio --create --format='newc' | gzip > ../initrd.gz
Une fois le fichier reconstruit, il ne reste plus qu’à le replacer dans le répertoire d’origine:
# cd .. # chmod u+w ./debian-505-amd64/install.amd ./debian-505-amd64/install.amd/initrd.gz # cp ./initrd.gz ./debian-505-amd64/install.amd/initrd.gz # chmod u-w ./debian-505-amd64/install.amd ./debian-505-amd64/install.amd/initrd.gz
Reconstruire l’ISO Debian
Dans un premier temps, il faut absolument recalculer les sommes MD5 des nouveaux fichiers sur le CD-ROM. C’est le fichier md5sum.txt qui contient l’ensemble des données.
# ./debian-505-amd64 # md5sum `find ! -name "md5sum.txt" ! -path "./isolinux/*" ! -name "debian" -follow -type f` > ./md5sum.txt
Et enfin, la commande ci-dessous ne s’invente pas, mais elle permet de reconstruire l’ISO et le rendre bootable:
# mkisofs -o ./debian-505-amd64-netinst-custom.iso \ -V di`date -u +%m%d%H%M%S` \ -r -J -no-emul-boot -boot-load-size 4 -boot-info-table \ -b isolinux/isolinux.bin -c isolinux/boot.cat \ ./debian-505-amd64
Voilà! Cette ISO permet d’automatiser l’installation de votre système Debian, de manière totalement personnalisée grâce au fichier preseed.cfg, idéal pour des installations en masse ou sur de l’embarqué.
Un peu de lecture supplémentaire
Cet article est adapté du document d’origine, de moi même, disponible ici.