Du libre, du code, des idées, du mélange d’ArraKISS…

Pour éviter les frais de port, je peux vous envoyer le pdf à imprimer/relier chez un professionnel de votre entourage. Contactez-moi pour en discuter.


De l’épice pour la pensée

Fervent utilisateur de dwm depuis longtemps, j'ai toujours eu du mal à passer à autre chose. Les habitudes sont ancrées, tout est à portée de main, c'est simple... C'est une retrouvaille avec un vieux copain du forum debian-fr sur obsd4a (coucou eol ;) ) qui m'a donné envie de consacrer un peu de temps à un gestionnaire inclus par défaut dans OpenBSD : calm window manager ou cwm.
Il me semble qu'il s'agit là d'une belle réussite très bien pensée. L'équilibre entre fonctionnalités, ergonomie et part de configuration laissée à l'utilisateur est trouvé. Pour ma part, ça m'aide à être efficace et plus concentré.

Par contre, on ne va pas se mentir, quand on vient de gnome, ça peut être déroutant au début. Cela dit, si ça vous tente, je vous propose de faire un petit tour de ce gestionnaire de fenêtre (disponible aussi sur les distributions GNU/Linux) pour découvrir sa façon d'être. On tentera d'utiliser autant que possible les composants livrés avec OpenBSD par défaut.

Découverte et configuration

Sous OpenBSD, pour lancer une session cwm, je n'ai qu'à mettre dans le fichier ~/.xsession la ligne suivante :

cwm

Une fois la session démarrée, vous avez devant vous un écran tout gris. Beurk. C'est normal cela dit, puisque ce n'est pas au gestionnaire de fenêtres de gérer le fond d'écran. On va y remédier, ne vous en faîtes pas.

Tout d'abord, on va ouvrir un terminal. Pour ça, deux choix s'offrent à vous :

  • Ctrl-Alt-Entrée : pouf, xterm s'ouvre.
  • Alt-? : un menu pour écrire la commande s'affiche, vous pouvez alors écrire le nom de votre terminal favori.

Pour déplacer la fenêtre, un glisser-déposer avec la souris tout en appuyant sur Alt fera votre bonheur.
Pour redimensionner la fenêtre, là aussi plusieurs possibilités :

  • Ctrl-Alt-m : maximise la fenêtre
  • Ctrl-Alt-Shift-[hjkl] : selon la lettre choisie, vous redimensionnez la fenêtre
  • Alt-clic milieu : redimensionnement par glissé déposer.

Pour fermer une fenêtre, appuyez sur Ctrl-Alt-x.

Pour changer de fenêtre, vous avez toujours Alt-Tab, ou bien vous cliquez sur le bureau pour avoir un menu de sélection de fenêtre. On ne s'encombre pas avec une barre d'état, on reste concentré sur son travail :) Vous pouvez aussi appuyer sur Ctrl-/ puis taper le nom de la fenêtre. Si vous ne vous souvenez plus de son nom, appuyez sur Ctrl-a.

Ça semble faire beaucoup de raccourcis, mais ils ont tous une certaine logique et on s'y retrouve vite. Si vous n'aimez pas les raccourcis clavier, sachez que :

  • Un clic-gauche sur le bureau fait apparaître la liste des fenêtres
  • Un clic-droit fait apparaitre la liste des applications définies dans la configuration (vide par défaut)
  • Un clic-milieu fait apparaître la liste des groupes.

Dans la suite, j'écrirai "C" pour "Ctrl", "M" pour "Alt", "S" pour "Shift" et "4" pour la touche "Super" ou "Windows" qui ne sert à rien habituellement. Ces lettres sont celles utilisées dans la configuration.

Une des particularités de cwm est de permettre de :

  • Pouvoir étiqueter une fenêtre (ajout d'un label) afin de la retrouver facilement ensuite (Ctrl-Alt-n).
  • Placer les fenêtres dans des groupes. Ça ressemble aux espaces de travail auxquels vous êtes habitués, ainsi qu'aux tag de dwm.

À partir de ce moment-là, vous voudrez certainement éditer le fichier de configuration ~/.cwmrc afin d'y régler 2-3 choses.
Si vous souhaitez savoir ce que vous pouvez configurer, les pages "man cwm" et "man cwmrc" vous en diront plus.

Via ce lien, vous trouverez mon fichier de configuration si vous voulez regarder ce qui est possible. Rien de très étonnant dans ce que j'ai mis hein.
J'attire juste votre attention sur les éléments de configuration suivants :

Menu clic-droit

command "   Web   " firefox
command "   Mail  " 'xterm -class "mutt" -fa "Hack:size=10:antialias=true" mutt'
command "  Files  " pcmanfm
command " > next  " "mpc next"
command " < prev  " "mpc prev"
command "|> toggle" "mpc toggle"
command "   top   " "xterm top"

Avec Alt-Tab, je passe d'un groupe à l'autre rapidement

bind-key M-Tab group-cycle
bind-key MS-Tab group-rcycle

Tiling rapide
Pour un arrangement rapide en mode "tiling" des fenêtres, j'utilise Alt-t ou Alt-Return comme dans dwm. M-S-t permet un arrangement vertical. Et ça, ça claque des fesses ! :D

bind-key M-t window-vtile
bind-key M-Return window-vtile
bind-key MS-t window-htile

à la dwm
Puisque je parle de dwm, j'utilise les mêmes raccourcis pour passer d'un groupe à l'autre et assigner les fenêtres à des groupes facilement. Si vous cherchez les noms des touches, tapes "xev" dans un terminal puis appuyez sur la touche, vous verrez alors son petit nom.

bind-key M-ampersand        group-only-1
bind-key M-eacute           group-only-2
bind-key M-quotedbl         group-only-3
bind-key M-apostrophe       group-only-4
bind-key M-parenleft        group-only-5
bind-key M-minus            group-only-6
bind-key M-egrave           group-only-7
bind-key M-underscore       group-only-8
bind-key M-ccedilla         group-only-9
bind-key M-agrave           group-toggle-all

# Déplacer les fenêtres dans un groupe
bind-key MS-ampersand        window-movetogroup-1
bind-key MS-eacute           window-movetogroup-2
bind-key MS-quotedbl         window-movetogroup-3
bind-key MS-apostrophe       window-movetogroup-4
bind-key MS-parenleft        window-movetogroup-5
bind-key MS-minus            window-movetogroup-6
bind-key MS-egrave           window-movetogroup-7
bind-key MS-underscore       window-movetogroup-8
bind-key MS-ccedilla         window-movetogroup-9

Et tout autour?
Si vous avez bien regardé la capture d'écran au début, vous avez peut-être remarqué une barre tout en haut et des couleurs "solarized". C'est la partie rigolote où je vous montre mes scripts :P

Le fond d'écran
Le fond d'écran est chargé avec qiv au démarrage. En fait, ça tourne entre plusieurs fonds d'écran.
Si vous voulez rester simple, vous pouvez mettre une couleur pleine avec xsetroot (pas besoin d'installer quoi que ce soit) :

xsetroot -solid steelblue

La barre
La barre est un simple conky, dont la configuration est là : conkyrc. Il m'affiche la chanson jouée dans mpd, le nombre de nouveaux mails dans mes boîtes et la date et l'heure.
Mais ce n'est pas tout, tout à gauche, j'ai aussi les numéros des groupes utilisés par des fenêtres. Ça m'évite de les chercher, bien que je pourrais m'en passer.
Pour ça, je fais appel au script suivant :

#!/bin/sh

CURGROUP=$(xprop -root -notype _NET_CURRENT_DESKTOP | cut -d'=' -f2)

USEDGROUPS=$(
for ID in $(xprop -root -notype _NET_CLIENT_LIST | cut -d'#' -f 2); do
	#echo $(xprop -id "$ID" -notype _NET_WM_DESKTOP WM_NAME)
	echo $(xprop -id "$ID" -notype _NET_WM_DESKTOP |cut -d'=' -f 2)
done | sort -u
)

for G in $USEDGROUPS; do
	if [ $G -lt 10 ]; then
		if [ $G -eq $CURGROUP ]; then
			echo -n "\${color3}$G\${color} "
		else
			echo -n "$G "
		fi
	fi
done

Ce n'est plus très utile quand on tourne entre les groupes avec Alt-Tab comme configuré plus haut.

Le terminal
J'ai décidé d'utiliser les outils livrés par défaut avec OpenBSD. Donc xterm au lieu de st. Ici, vous trouverez le fichier de configuration pour les couleurs, faire du copier/coller dans le terminal...
Ce fichier doit être chargé au démarrage avec la commande

xrdb -load ~/.Xdefaults

Le démarrage de session
Pour prendre en compte tous ces petits ajouts à chaque démarrage, modifiez le script ~/.xsession ainsi :


#!/bin/sh
.  ~/.profile
# Fond d'écran
# ou qiv -z /chemin/vers/fond/decran
xsetroot -solid steelblue &
# Chargement des options pour xterm
xrdb -load ~/.Xdefaults &
# Verouillage automatique avec xlock
xautolock -time 10 -locker xlock &
conky &

cwm

Les "&" à la fin sont importants. Ajoutez dans ce fichier tous les outils que vous souhaitez lancer au démarrage de session.

Trouver une fenêtre parmi des centaines
En général je n'ai pas plus de 5 ou 6 fenêtres ouvertes en même temps. Cela dit, si un jour de folie j'en ouvrais des tas, je pourrais facilement les retrouver avec le raccourci M-/. C'est pratique quand on se souvient à peu près de l'application que l'on veut ouvrir. Sauf que quand beaucoup de fenêtres sont ouvertes, on ne se souvient peut-être plus du nom de celle souhaitée. Après avoir appuyé sur M-/, vous pouvez toutes les afficher avec C-a.
C'est chiant.
À la place, j'ai fait un script à base de dmenu :

#!/bin/sh
# script to choose a window from list
# only use 'xprop' coming with X server and xdotool

. ~/.dmenurc

P="Fenêtre:"
OPTION="$COLORS -l 10 -p $P "
W=$(
(for ID in $(xprop -root -notype _NET_CLIENT_LIST | cut -d'#' -f2); do
	echo $(xprop -id "$ID" -notype WM_NAME | cut -d'=' -f 2) "::"  $(xprop -id "$ID" -notype WM_CLASS | cut -d'"' -f2) "|"    $ID
done) | dmenu $OPTION | awk 'END {print $NF}')

if [ -n "$W" ]; then
	xdotool windowactivate $W
fi
exit 0

Et après ?
Les outils suckless sont très agréable à utiliser avec cwm si vous aimez la simplicité. Par exemple, je n'aime pas trop xlock que je remplace avec slock. Et sans dmenu, je serai perdu. Tous ces scripts sans doute pas très propres me rendent bien service ! :)
Sinon, j'utilise des outils simples : mutt/fdm/msmtp pour les mails, Firefox pour la navigation (eh oui, surf aurait bien besoin d'être mis à jour), pcmanfm, qiv...

Ce gestionnaire de fenêtres porte bien son nom : avec, je me sens plus caaaaalme :)
Je suppose qu'un certain PengouinBSD va me tanner pour faire une page de wiki après cet article, et le pire, c'est qu'il a raison le bougre ;P

Si vous testez cwm, je serais ravi de voir vos astuces/idées/configurations en commentaies ;)

Il y a à peu près un mois, j'ai ajouté sur mon site un petit bout de javascript pour intégrer coinhive et proposer aux visiteurs de miner du monero pour moi.
L'idée me semblait intéressante sur plusieurs points et je voulais savoir ce que ça pourrait donner.

Aujourd'hui, cela a fait gagner 0.00418 XMR, soit environ 5 centimes d'euros par mois, alors que certains ont fait tourner leur processeur rien que pour "me récompenser". Par ailleurs, il faut savoir que la somme minimale que l'on peut retirer à coinhive est de 0.5 XMR. On en est très loin donc.
Je met donc fin à cette expérience car :

  • Cela me gêne que des lecteurs de bonne foi pensent récompenser l'auteur alors que seul coinhive en profite;
  • Le côté abusif de coinhive qui tournait de façon cachée, en prenant toutes les ressources, peu importe s'il s'agit d'un mobile ou non a été pris en compte en amont;
  • Ce n'est pas rentable ni pour moi, et décevant pour ceux qui souhaitent bien faire;
  • Les autres méthodes de remerciement sont beaucoup plus efficaces ("merci", "coucou", ...);
  • Je n'aime pas dépendre d'un service tiers.

Alors qu'il avait été annoncé un modèle économique alternatif aux publicités pour récompenser les créateurs, je n'y crois pas du tout (ou alors il faut clairement abuser des ressources des visiteurs). Les dons récurrents via liberapay, les virements bancaires, l'envoi postal d'une carte avec un petit mot sont beaucoup plus efficaces (surtout en terme d'énergie).

J'avais déjà parlé des cryptomonnaies et je terminais par duniter. Cette dernière est pensée autour d'une philosophie captivante qui correspond davantage à mes valeurs que les autres. Cependant, et je me demande encore pourquoi, je me fourvoyais complètement sur la façon de l'utiliser, c'est pourquoi j'ai envie d'écrire ce petit guide. Entre la version desktop, la version server, le logiciel à utiliser pour échanger des sous, puis les inscriptions à faire alors que je croyais avoir un portefeuille... Bref, il est temps de poser ça à plat comme on dit. :)

Notez que je vais décrire la procédure sous OpenBSD. Avant de vous lancer dans les compilations, vérifiez si un binaire n'existe pas déjà.

1. Avant tout, il faut bien comprendre...
Contrairement aux autres cryptomonnaies, il y a une différence entre le logiciel et la monnaie.
"duniter", c'est le logiciel libre qui permet les transactions.
"Ğ1" est une monnaie disponible via duniter. Il est possible d'utiliser d'autres monnaies, mais c'est cette dernière qui est actuellement la plus utilisée. De plus, c'est libre ! :)
Un troisième logiciel est nécessaire pour échanger de la monnaie. Ce dernier est spécifique à la monnaie utilisée. Ce sera dans l'exemple cesium, mais il en existe d'autres.

Cela peut paraître excessif, mais c'est en réalité toute la force du logiciel libre. Pour résumer :

  • Un démon/protocole : duniter
  • Plusieurs monnaies : on s'intéressera à Ğ1
  • Une interface pour échanger des sous : cesium

2. Échanger des Ğ1
Téléchargez et décompressez l'archive de cesium qui est un logiciel nous permettant d'échanger de la monnaie. Je vous conseille la version "-web" qui ne nécessite qu'un navigateur pour s'en servir.

Décompressez l'archive .zip, puis ouvrez le fichier index.html dans un navigateur (Firefox ;) ).

Je vous conseille de suivre la visite guidée très bien faite pour découvrir cesium.

Lors du premier lancement, on vous propose de créer un compte. C'est nécessaire pour être inscrit dans le registre public du Ğ1. Cela vous crée un portefeuille. Si vous n'avez pas de compte, créez un compte "membre" pour pouvoir plus tard participer au dividende universel.
Si on ne vous propose rien, cliquez sur le lien "créer un compte"

Notez bien votre mot de passe, récupérez le certificat de révocation (on ne sait jamais), puis cliquez sur "mon compte" à gauche pour noter votre clé publique et modifier les informations vous concernant.

Vous voilà prêts à échanger des Ğ1 en cliquant sur le bouton "Virement" à gauche :

(bon, il faudra en recevoir avant... ;P )

Voir aussi l'excellent tutoriel suivant : http://www.le-sou.org/inscription-tuto/

3. Participer à l'utilisation des Ğ1 en étant un nœud

Vous pouvez héberger un noeud et participer aux calculs nécessaires aux échanges de Ğ1. Je reprends ici les explications pour OpenBSD (oh le fainéant). Tant qu'à faire, je vous propose une méthode pour, autant que possible, séparer les permissions et faire les choses proprement.
Je vais créer un utilisateur "_duniter" dont le seul rôle sera de faire tourner duniter, afin d'éviter de faire tourner le démon en tant que root.
Ensuite on installe node.
On s'identifie comme _duniter, puis on télécharge et compile duniter.

useradd -m -d /var/duniter
pkg_add node
npm install --global yarn
ln -s /usr/local/bin/python2.7 /usr/local/bin/python
su _duniter
cd /var/duniter
ftp -o duniter.tar.gz https://github.com/duniter/duniter/archive/v1.5.9.tar.gz
tar xvzf duniter.tar.gz
mv duniter-* duniter
cd duniter
yarn

On peut maintenant l'utiliser en suivant les recommandations situées ici.

On indique quelle clé utiliser : je me sert de la même clé que pour mon inscription précédente sous cesium par facilité.

./bin/duniter wizard key
? Modify you keypair? (y/N) y   
? Key's salt ********************************************   (clé publique précédente)
? Key's password *************************************************   (mot de passe du compte précédent)

Configurez ensuite le réseau. Dans le doute, laissez par défaut.

./bin/duniter wizard network
? IPv4 interface trunk0 192.168.1.64  (interface réseau à utiliser)
? IPv6 interface None
? Port 10901
? Remote IPv4 Enter new one
? Remote IPv4 109.190.193.124 (ici, c'est votre [IP publique|http://ipecho.net])
? Remote port 10901
? Does this server has a DNS name? n (répondez "y" si vous voulez héberger le noeud sur un serveur disponible avec un nom de domaine)

Enfin, lancez la synchronisation :

./bin/duniter sync g1.duniter.org 443

Vous pouvez maintenant lancer duniter et participer aux calculs :

./bin/duniter direct_start

ou pour qu'il tourne en arrière plan :

./bin/duniter start

Si vous faîtes tourner ce noeud sur un serveur, veillez à bien ouvrir les ports 10901. De plus, créer un CNAME pour un nom de domaine dédié à duniter sera sans doute pratique.

Afin d'avoir un service à lancer au démarrage sous OpenBSD, vous pouvez créer le fichier /etc/rc.d/duniter_daemon pour gérer le démon avec rcctl.

#!/bin/sh
#
# $OpenBSD: duniter.rc,v 1.0 2017/11/08 17:58:46 Thuban$

daemon="/var/duniter/duniter/bin/duniter"
daemon_user="_duniter"

. /etc/rc.d/rc.subr

rc_start() {
        ${rcexec} "${daemon} ${daemon_flags} start"
}

rc_stop() {
        ${rcexec} "${daemon} ${daemon_flags} stop"
}


pexp="node: duniter.*"
rc_reload=NO

rc_cmd $1

La suite, c'est comme n'importe quel service sous OpenBSD :

  • Activer le service : "rcctl enable duniter_daemon"
  • Démarrer le noeud : "rcctl start duniter_daemon"
  • Arrêter le noeud : "rcctl stop duniter_daemon"

Pour avoir des infos sur duniter, vous pouvez lancer :

su -l _duniter -c "/var/duniter/duniter/bin/duniter logs"

N'est-ce point merveilleux ? :

2017-11-09T19:00:19+01:00 - info: Pulling blocks from the network...
2017-11-09T19:00:22+01:00 - info: Block resolution: 0 potential blocks after current#67928...
2017-11-09T19:00:22+01:00 - info: Will pull blocks from the network in 0 min 20 sec
2017-11-09T19:00:26+01:00 - info: ⬇ PEER LFoG1wup
2017-11-09T19:00:26+01:00 - info: ✔ PEER LFoG1wup
2017-11-09T19:00:26+01:00 - info: POST Peer LFoG1wupku#67905
2017-11-09T19:00:26+01:00 - info: ⬇ PEER LFoG1wup
2017-11-09T19:00:26+01:00 - info: ✘ PEER LFoG1wup
2017-11-09T19:00:26+01:00 - error:  httpCode=400, ucode=2023, message=Peer document already known
2017-11-09T19:00:26+01:00 - warn: Could not reach duniter.fiat-tux.fr:10901
2017-11-09T19:00:26+01:00 - info: ⬇ PEER LFoG1wup
2017-11-09T19:00:27+01:00 - info: ✘ PEER LFoG1wup

Voir aussi la documentation d'installation

Vous pouvez activer l'interface web ainsi.

./bin/duniter plug duniter-ui@1.4.x 
sed -i "s/duniter\//..\/..\/..\/..\//g" node_modules/duniter-ui/server/controller/webmin.js

Cependant, j'ai tenté de modifier le fichier /etc/rc.d/duniter_daemon pour mettre "webstart" au lieu de "start", mais il ne semble pas trouver le module duniter-ui dans ce cas, donc ça ne fonctionne pas. Une histoire de chemin d'accès je suppose :/
Mais vous pouvez toujours lancer le noeud duniter et son interface web après vous être connecté avec le compte _duniter.
Si vous avez activé l'interface web, au lieu d'ouvrir et rediriger des ports sur votre serveur, créez un tunnel ssh ainsi à partir de votre ordinateur de bureau :

ssh -L 9999:127.0.0.1:9220 utilisateur@votreserveur.com

Ensuite, sur votre ordinateur, ouvrez un navigateur à l'adresse http://localhost:9999 pour voir l'interface de duniter :

Une fois le serveur configuré, je vous conseille de désactiver les connexions vers le compte _duniter

# usermod -s /sbin/nologin _duniter

Conclusion
Plus je m'y intéresse, plus je trouve cette alternative intéressante. Le seul, (mais vraiment le seul) point sur lequel je m'interroge, c'est le côté public de toutes les transactions. Je n'ai pas envie de savoir ce que vous achetez, ni de publier publiquement à qui je donne des sous. Par contre, côté vitesse de calcul, rendement énergétique et toute la théorie du Dividende Universel, je suis conquis. Et vous? :)

Curieux de cette cryptomonnaie, je voulais tester duniter sous OpenBSD. Voici la marche à suivre :

Récupérez une archive de duniter sur github : https://github.com/duniter/duniter/releases/tag/v1.5.9

Ensuite, suivez la procédure suivante ("#" veut dire que c'est à lancer avec les droits super utilisateur, "$" en user normal) :

# pkg_add node
# npm install --global yarn
# ln -s /usr/local/bin/python2.7 /usr/local/bin/python
$ ftp -o duniter.tar.gz https://github.com/duniter/duniter/archive/v1.5.9.tar.gz
$ tar xvzf duniter.tar.gz
$ cd duniter*
$ yarn

On peut maintenant l'utiliser en suivant les recommandations situées ici.

./bin/duniter wizard key
./bin/duniter wizard network
./bin/duniter sync

Et ça tourne...

Vos clés sont dans le fichier ~/.config/duniter/duniter_default/keyring.yml

Je n'arrive cependant pas à avoir l'interface web comme indiqué dans la doc, comme si elle n'existait plus. En fait, la documentation est soit incomplète soit peu à jour, soit sous forme de vidéo ce qui est très peu pratique à mon avis. Il faudra peut-être améliorer ces points pour que duniter soit plus utilisée. La prochaine étape serait de se faire certifier par d'autres utilisateurs, mais là aussi je bloque : où est-ce que ça se passe?

EDIT : suite aux commentaires, pour avoir l'interface web :

./bin/duniter plug duniter-ui@1.4.x
sed -i "s/duniter\//..\/..\/..\/..\//g" node_modules/duniter-ui/server/controller/webmin.js
./bin/duniter direct_webstart

Il semble que les droits administrateur soient requis.

Puis direction https://localhost:9220

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.