Depuis la publication d'isotop, je me dis que ça serait intéressant d'expliquer un peu comment cette "non-distribution" est faîte. Vous allez, voir, c'est enfantin.
Je vais décrire la procédure en détaillant les commandes utilisées, sachant qu'en réalité tout ceci est mis dans des scripts pour se simplifier la vie.

Isotop n'est qu'une OpenBSD personnalisée. Pour ça, on récupère d'abord une image d'installation iso depuis un miroir.

ftp -o install6.2.iso https://ftp.fr.openbsd.org/pub/OpenBSD/6.2/amd64/install62.iso

Ensuite, on décompresse cette iso pour pouvoir modifier son contenu :

    mkdir -p loopdir
    mkdir -p ./install6.2
    if [ "$(uname)" = "OpenBSD" ]; then
        vnconfig vnd0 install6.2.iso
        mount -t cd9660 /dev/vnd0c loopdir/
        cp -r loopdir/* ./install6.2
        umount loopdir/
        vnconfig -u vnd0
    else
        mount -o loop install6.2.iso loopdir
        cp -r loopdir/* ./install6.2
        umount loopdir/
    fi
    rm -r loopdir/

Selon si on est sous OpenBSD ou Linux, la procédure n'est pas tout à fait la même. Ces commandes n'ont rien de magique, on trouve facilement sur le web comment extraire une iso.

Nous voilà donc avec un dossier install6.2 qui contient tout le nécessaire pour installer OpenBSD. C'est maintenant que la personnalisation commence. On peut configurer l'installation grâce à 3 mécanismes :

  • Intégrer une archive siteXX.tgz (remplacez XX par le numéro de version, ici 62) qui sera décompressée à l'installation sur la racine /. Cela permet d'intégrer les configurations voulues. Par exemple, le fichier /etc/doas.conf personnalisé, ou encore un dossier /etc/skel qui contient tout ce qui sera copié dans le dossier personnel d'un nouvel utilisateur (langue, profil firefox...)).
  • Ajouter un script "install.site" dans cette archive. ce dernier sera exécuté juste à la fin de l'installation. On peut y mettre un miroir pour récupérer les paquets, activer par défaut certains services comme le résolveur unbound...
  • Ajouter un script "etc/rc.firsttime" qui sera lancé au premier démarrage de la machine. Ce dernier me sert principalement à installer les paquets de logiciels.

C'est parti, on crée un dossier "site" dans lequel on va mettre tout notre bazar :

mkdir site

Allez, pour l'exemple, je vais ajouter un set d'icônes dedans :

mkdir -p site/usr/local/share/icons
cp -r /usr/local/share/icons/Arc site/usr/local/share/icons

J'y met aussi un script "install.site" qui va activer la gestion d'énergie juste après l'installation :

echo "rcctl enable apmd" >> site/install.site
echo "rcctl set apmd status on" >> site/install.site
echo "rcctl set apmd flags -A">> site/install.site
chmod +x site/install.site

Enfin, je mets dans le script lancé au premier démarrage de quoi installer un environnement de bureau :

echo "pkg_add xfce" >> site/etc/rc.firsttime
chmod +x site/etc/rc.firsttime

Allez zou, on met ces configurations dans une archive comme prévu :

cd site
tar cvzf ../site62.tgz *

Ne reste plus qu'à copier cette archive dans l'iso extraite :

cp site62.tgz install6.2/6.2/amd64/site62.tgz 

Lors de l'installation, il sera proposé d'installer le set site62 afin de profiter de cette configuration.

Enfin, on reconstruit l'iso. Remplacez genisoimage par mkisofs selon ce qui est disponible sur votre système :

genisoimage -r -no-emul-boot -b 6.2/amd64/cdbr -c boot.catalog -o ./CustomOBSD.iso install6.2 

Et voilà ;)
Fastoche non ?

Pour plus de détails ou d'idées, je vous invite à aller regarder le code source d'isotop, en particulier les scripts qui servent à la génération des images. Ces derniers permettent notamment de générer une iso personnalisée d'OpenBSD même à partir d'un sysètme Linux.