Saltar a contenido

Kernel Follower

os-kernelfollow · Sistema

Reconstruye un módulo de kernel de FreeBSD de fuera del árbol para el kernel que instala una actualización de OPNsense, antes del reinicio, para que un controlador de fuera del repositorio de OPNsense esté presente en el siguiente arranque.

En el menú

  • Con os-xgs-npu instalado: XGS: Kernel Follower
  • Sin os-xgs-npu: System: Kernel Follower
Kernel Follower en la interfaz web
Su página en la interfaz web, en inglés.

Lee el kernel que usará el siguiente arranque - un conjunto de kernel que una actualización ha preparado, o /boot/kernel - desde el binario, sin arrancarlo, y lo compara con el sello que hay junto a cada módulo registrado en él. Un módulo que no coincide se reconstruye para ese kernel desde sus fuentes: un archivo que la máquina lleva consigo, o github.com/opnsense/src en el commit que el kernel indica.

Se ejecuta desde el hook de actualización, desde el hook de parada de cada reinicio ordenado - que retiene el reinicio hasta que termina la compilación, diez minutos como máximo - y desde cron cada cinco minutos. Si un módulo que la red necesita no puede reconstruirse, el siguiente arranque se envía una sola vez a /boot/kernel.old, con el que coincide el módulo instalado; esto se cancela en cuanto el módulo se reconstruye.

Un plugin registra su módulo con un archivo en /usr/local/etc/kernelfollow.d/. En un Sophos XGS con os-xgs-npu, os-xgs-npu sigue sus propios dos módulos, octep.ko y npuep.ko, con su propio seguidor: este plugin se los deja y solo los muestra, toca nextboot solo para cancelar una vuelta atrás que él mismo puso, y deja las fuentes de kernel antiguas para que os-xgs-npu las elimine.

Funciones

  • Kernel del siguiente arranque

    Leído del binario de un conjunto de kernel preparado o de /boot/kernel, sin arrancarlo, y comparado con el sello de cada módulo.

  • Reconstrucción limpia

    Compilado desde cero en un directorio vaciado antes, comprobado que compiló cada fuente con las cabeceras de máquina de ese kernel, instalado con un nombre temporal y movido a su sitio; la compilación anterior se guarda como .prev con su propio sello.

  • Se ejecuta cuando importa

    El hook de actualización, el hook de parada de cada reinicio ordenado (diez minutos como máximo) y cron cada cinco minutos. Sin nada registrado, cada ejecución es un listado de directorio.

  • Vuelta atrás para la red

    Un módulo marcado CRITICAL=yes que no puede reconstruirse envía el siguiente arranque, una sola vez, a /boot/kernel.old con nextboot -k; la ejecución que lo reconstruye lo cancela.

  • Fuentes antiguas eliminadas

    Las fuentes de kernels que ya no se ejecutan se eliminan cuando el nuevo kernel lleva un día en marcha (un ajuste), con cada módulo coincidiendo con él y cargado.

  • Check y Follow now

    La página muestra el kernel en ejecución y el que tomará el siguiente arranque, cada módulo frente a él, las fuentes en disco y la última ejecución; Check dice qué haría una ejecución, Follow now la lanza.

Instalar y actualizar

A partir de la versión de os-xgs-npu posterior a 0.1.0-alpha.7.1, XGS: Updates lo muestra en su pestaña Plugins —una copia instalada se actualiza allí a mano, y una que falta se instala desde allí— y las imágenes listas construidas a partir de esa versión lo incluyen; hasta entonces se instala y se actualiza como se indica abajo. La entrada de cron del plugin ejecuta el seguidor cada cinco minutos, nunca la actualización. Para instalarlo en un appliance XGS o en cualquier otro OPNsense, como root: desde un checkout del repositorio con sh install/install.sh, que coloca la página bajo XGS con os-xgs-npu y bajo System sin él, y conserva los ajustes si se vuelve a ejecutar - los archivos de fuentes de kernel en kernel-sources/ junto al checkout permiten compilar a una máquina sin internet; o desde el paquete de la versión, os-kernelfollow-1.0.0.pkg, comprobado con SHA256SUMS y añadido con pkg. Una copia instalada así se actualiza con su propio self-update.py. No está en el repositorio de plugins de OPNsense.

Límites, y lo que aún no se ha probado

  • Una actualización real del kernel: un conjunto de kernel preparado, la descarga de las fuentes por la red, los hooks de actualización y de parada.
  • nextboot en sí, y la eliminación de fuentes antiguas.
  • El paquete, construido por tools/make-package.sh y añadido con pkg.
  • Una instalación en OPNsense sin os-xgs-npu.
  • Una actualización desde la pestaña Plugins o con self-update.py: 1.0.0 es la primera versión, así que ninguna ha ido por delante de una copia instalada.

Repositorio

Primera versión: 2026-10-25

os-kernelfollow Versiones