Aller au contenu

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
Kernel Follower dans l'interface web
Sa page dans l'interface web, en anglais.

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

os-kernelfollow Versions