Ce n’est pas très compliqué de créer sa propre iso d’installation d’OpenBSD. La méthode qui suit peut certainement être améliorée, surtout en utilisant directement des outils d’OpenBSD.
J’ai ici gardé une méthode artisanale qui devrait aussi bien fonctionner sous une système BSD que linux.
Le plus simple consiste à partir d’une image d’installation d’openBSD déjà existante et de la décompresser :
$ curl -C - -o install62.iso "http://ftp.fr.openbsd.org/pub/OpenBSD/6.2/amd64/install62.iso"
Une fois téléchargé, on extrait les fichiers contenus dans l'image d'intallation, vers le dossier install62 :
$ mkdir -p loopdir $ vnconfig vnd0 install62.iso $ mount -t cd9660 /dev/vnd0c loopdir $ cp -rv loopdir/* ./install-62 $ chown -R 1000:1000 ./install-62 $ chmod -R +w ./install-62
Il ne reste plus qu'à démonter l'image d'installation:
$ umount loopdir/ $ vnconfig -u vnd0 $ rm -r loopdir/
Il est maintenant possible de personnaliser le contenu de l'image se trouvant dans le dossier install-62
Dans le dossier précédent, vous trouverez un dossier 6.2/amd64/ qui contient tous les “sets”. Ce sont en fait toutes les archive .tgz disponibles à l’installation.
Vous pouvez librement supprimer celles qui ne vous intéressent pas. Mais j’imagine que ce que vous voulez, c’est en rajouter. Il faut pour cela créer une archive siteXX.tgz (en remplaçant les XX par le numéro de version).
Cette archive site62.tgz doit contenir la hiérarchie des fichiers prêts à être décompressée dans /
. Pour vous faire une idée, regardez comment sont faits les autres archives.
Vous avez donc la possibilité de mettre les programmes et autres fichiers que vous souhaitez avoir dans le système installé, comme par exemple le contenu de /etc/skel. Puisque cette archive est installée en dernier, les fichiers peuvent remplacer des déjà existants.
Heureusement, on peut inclure un script qui sera lancé juste après l’installation. Ce script doit s’appeler install.site
, qui doit être présent dans l’archive siteXX.tgz.
Vous pouvez donc mettre dedans une commande qui installera tous les paquets souhaités. Par exemple :
#!/bin/sh echo "* RUNNING POST-INSTALL SCRIPT" # pkg echo "http://ftp.fr.openbsd.org/pub/OpenBSD" > /etc/installurl pkg_add fluxbox p7zip dmenu st netsurf # kshrc mkdir -p /etc/skel echo ". /etc/ksh.kshrc" >> /etc/skel/.profile echo "HISTFILE=~/.mksh_hist" >> /etc/skel/.profile echo "HISTSIZE=3000" >> /etc/skel.profile exit 0
N’oubliez pas de rendre ce script exécutable :
chmod 755 install.site
Vous créez l’archive contenant ce script ainsi :
tar cvzf site62.tgz install.site
Notez que on peut installer des paquets par cette méthode. Cependant, je préfère installer les paquets lors du premier démarrage après l’installation pour m’assurer que tous les paquets sont bien enregistrés et les caches correctement générés.
ous pouvez lancer une série de commandes lors du premier démarrage de la machine qui vient d’être installée. Il faut pour cela créer le script /etc/rc.firsttime
. Ce script peut très bien être intégré dans l’archive siteXX.tgz. Veillez toutefois à lui donner les droits d’exécutions :
chmod 755 rc.firsttime
Une commande suffit :
genisoimage -r -no-emul-boot -b 6.2/amd64/cdbr -c boot.catalog -o CustomOBSD.iso install-62/
Vous pouvez récupérer les archives des programmes que vous voulez installer ainsi que leur dépendances, les décompresser dans un dossier, puis compresser le contenu de ce dossier dans une archive site62.tgz.
Voilà pour la théorie. Cependant, retrouver manuellement les dépendances de chaque paquet est très pénible (on les trouve dans le fichier +DESC contenu dans chaque archive).
Je vous propose donc le script suivant qui se chargera de récupérer les paquets listés dans la variables PACKAGES et d’en faire une archive siteXX.tgz (ne l’utilisez pas ☺) :
#!/bin/sh PKG_PATH="http://ftp.fr.openbsd.org/pub/OpenBSD/6.2/packages/amd64/" PACKAGES=" fluxbox-1.3.7p0.tgz ImageMagick-6.9.3.0.tgz antiword-0.37p0.tgz aspell-fr-0.50.3v1.tgz bogofilter-1.2.4-sqlite3.tgz bogofilter-1.2.4.tgz catfish-1.2.2.tgz cdrdao-1.2.0p2.tgz cdrtools-3.00p1.tgz detox-1.2.0.tgz discount-2.1.8ap0.tgz dmenu-4.6.tgz docx2txt-1.4.tgz dos2unix-7.3.2.tgz gv-3.7.1p1.tgz lftp-4.6.5.tgz ntfs_3g-2015.3.14.tgz oggconvert-0.3.3p3.tgz odt2txt-0.5.tgz p7zip-15.09p4.tgz pdftk-2.02p2.tgz rox-filer-2.11.tgz st-0.6p0.tgz vim-7.4.900-no_x11.tgz vim-spell-fr-7.4.tgz xdotool-3.20150503.1v0.tgz youtube-dl-2016.01.01.tgz " dl_tgzs() { mkdir -p temp for p in $@; do if [ ! -e $p ]; then echo $p curl -# -C - -O $PKG_PATH/$p tar -C site -xzphf $p DEPS=$(grep "@depend" site/+CONTENTS | cut -d':' -f3 | sed -e 's;$;.tgz;g') rm -f site/+* dl_tgzs $DEPS fi done } mkdir -p packages/site cd packages echo "* Downloading packages" dl_tgzs $PACKAGES echo "Create siteXX.tgz" cd site tar cvzf ../site62.tgz * exit 0
Mettez cette archive dans le dossier 6.2/amd64 avec les autres sets pour qu’elle soit proposée à l’installation de votre iso.
Avouez que récupérer le nom des paquets au numéro de version près, c’est juste super fastidieux (et je reste poli!). Qui plus est, selon les archives que l’on décompresse ensuite, il peut y avoir des erreurs.
Plus grave, le gestionnaire de paquets n’a aucune trace des paquets installés pour une suppression ultérieure. Il faut donc trouver une autre solution, comme lancer un script juste après l’installation.
Contribut(rice|eur)s :