Kernel Follower
os-kernelfollow · Système
Recompile un module noyau FreeBSD hors de l'arbre des sources pour le noyau qu'installe une mise à jour d'OPNsense, avant le redémarrage, pour qu'un pilote venu d'ailleurs que le dépôt d'OPNsense soit là au démarrage suivant.
Dans le menu
- Avec os-xgs-npu installé : XGS: Kernel Follower
- Sans os-xgs-npu : System: Kernel Follower

Il lit le noyau que prendra le prochain démarrage - un jeu de noyau préparé par une mise à jour, ou /boot/kernel - dans le binaire, sans démarrer dessus, et le compare au tampon placé à côté de chaque module enregistré auprès de lui. Un module qui ne correspond pas est recompilé pour ce noyau à partir de ses sources : une archive présente sur la machine, ou github.com/opnsense/src au commit que le noyau indique.
Il s'exécute depuis le hook de mise à niveau, depuis le hook d'arrêt de chaque redémarrage ordonné - qui retient le redémarrage jusqu'à la fin de la compilation, dix minutes au plus - et depuis cron toutes les cinq minutes. Quand un module dont le réseau a besoin ne peut pas être recompilé, le prochain démarrage est envoyé une seule fois sur /boot/kernel.old, auquel correspond le module installé ; c'est annulé dès que le module est recompilé.
Un plugin enregistre son module avec un fichier dans /usr/local/etc/kernelfollow.d/. Sur un Sophos XGS avec os-xgs-npu, os-xgs-npu suit ses deux propres modules, octep.ko et npuep.ko, avec son propre suiveur : ce plugin les lui laisse et ne fait que les afficher, ne touche à nextboot que pour annuler un repli qu'il a lui-même posé, et laisse les anciennes sources du noyau à os-xgs-npu pour qu'il les supprime.
Fonctions
-
Noyau du prochain démarrage lu
Dans le binaire d'un jeu de noyau préparé ou de /boot/kernel, sans démarrer dessus, puis comparé au tampon de chaque module.
-
Recompilation propre
Compilé à partir de rien dans un répertoire vidé au préalable, vérifié pour avoir compilé chaque source avec les en-têtes machine de ce noyau, installé sous un nom temporaire puis mis en place ; la compilation précédente est gardée en .prev avec son propre tampon.
-
S'exécute quand il le faut
Le hook de mise à niveau, le hook d'arrêt de chaque redémarrage ordonné (dix minutes au plus) et cron toutes les cinq minutes. Sans rien d'enregistré, chaque passage est un simple listage de répertoire.
-
Repli pour le réseau
Un module marqué CRITICAL=yes qui ne peut pas être recompilé envoie le prochain démarrage, une seule fois, sur /boot/kernel.old avec nextboot -k ; le passage qui le recompile l'annule.
-
Anciennes sources supprimées
Les sources des noyaux qui ne tournent plus sont supprimées une fois que le nouveau noyau a tourné un jour (un réglage), avec chaque module correspondant et chargé.
-
Check et Follow now
La page montre le noyau en cours et celui que prendra le prochain démarrage, chaque module face à lui, les sources sur disque et le dernier passage ; Check dit ce que ferait un passage, Follow now le lance.
Installer et mettre à jour
À partir de la version d'os-xgs-npu qui suit 0.1.0-alpha.7.1, XGS: Updates l'affiche dans son onglet Plugins — une copie installée s'y met à jour à la main, et une copie absente s'y installe — et les images prêtes construites à partir de cette version l'embarquent ; d'ici là, il s'installe et se met à jour comme ci-dessous. L'entrée cron du plugin lance le suiveur toutes les cinq minutes, jamais la mise à jour. Pour l'installer sur une appliance XGS ou sur tout autre OPNsense, en root : depuis un checkout du dépôt avec sh install/install.sh, qui place la page sous XGS avec os-xgs-npu et sous System sans lui, et garde les réglages s'il est relancé - des archives de sources du noyau dans kernel-sources/ à côté du checkout permettent de compiler sur une machine sans internet ; ou depuis le paquet de la version, os-kernelfollow-1.0.0.pkg, vérifié avec SHA256SUMS et ajouté avec pkg. Une copie ainsi installée se met à jour par son propre self-update.py. Il n'est pas dans le dépôt de plugins d'OPNsense.
Limites, et ce qui n'est pas encore testé
- Une vraie mise à jour du noyau : un jeu de noyau préparé, la récupération des sources par le réseau, les hooks de mise à niveau et d'arrêt.
- nextboot lui-même, et la suppression des anciennes sources.
- Le paquet, construit par tools/make-package.sh et ajouté avec pkg.
- Une installation sur OPNsense sans os-xgs-npu.
- Une mise à jour par l'onglet Plugins ou self-update.py : 1.0.0 est la première version, aucune n'a donc encore devancé une copie installée.
Dépôt
Première version: 2026-10-25