Kernel Follower
os-kernelfollow · システム
OPNsense の更新がインストールするカーネルに合わせて、ソースツリー外の FreeBSD カーネルモジュールを再起動前に再ビルドし、OPNsense 自身のリポジトリ外のドライバーが次の起動にも揃うようにします。
メニューの場所
- os-xgs-npu をインストールした場合: XGS: Kernel Follower
- os-xgs-npu がない場合: System: Kernel Follower

次の起動で使われるカーネル(更新が準備したまま未適用のカーネルセット、または /boot/kernel)を、起動せずにバイナリから読み取り、登録された各モジュールの横にあるスタンプと比べます。合わないモジュールは、そのカーネル向けにソースから再ビルドします。ソースはマシン上のアーカイブ、またはカーネルが示すコミットの github.com/opnsense/src です。
アップグレードフック、整然とした再起動ごとの停止フック(ビルドが終わるまで再起動を最大 10 分待たせます)、そして 5 分ごとの cron から動きます。ネットワークに必要なモジュールを再ビルドできないときは、インストール済みのモジュールが合う /boot/kernel.old へ次の起動を 1 回だけ向け、モジュールが再ビルドされればそれを取り消します。
プラグインは /usr/local/etc/kernelfollow.d/ に 1 つのファイルを置いてモジュールを登録します。os-xgs-npu を入れた Sophos XGS では、os-xgs-npu が自分の 2 つのモジュール octep.ko と npuep.ko を独自のフォロワーで追従します。このプラグインはそれらを任せて表示だけにとどめ、nextboot には自分で設定したフォールバックを取り消すときしか触れず、古いカーネルソースの削除も os-xgs-npu に任せます。
機能
-
次の起動のカーネルを読む
準備されたカーネルセットまたは /boot/kernel のバイナリから、起動せずに読み取り、各モジュールのスタンプと比べます。
-
クリーンな再ビルド
空にしたディレクトリでゼロからビルドし、そのカーネルのマシンヘッダーで全ソースがコンパイルされたことを確認し、一時的な名前でインストールしてから所定の場所へ移します。前のビルドは独自のスタンプ付きで .prev として残します。
-
必要なときに動く
アップグレードフック、整然とした再起動ごとの停止フック(最大 10 分)、5 分ごとの cron。何も登録されていなければ、各回はディレクトリ一覧を見るだけです。
-
ネットワークのためのフォールバック
CRITICAL=yes のモジュールを再ビルドできないと、nextboot -k で次の起動を 1 回だけ /boot/kernel.old に向けます。再ビルドに成功した回がこれを取り消します。
-
古いソースの削除
新しいカーネルが 1 日(設定)動き、すべてのモジュールがそれに合って読み込まれていれば、もう使われないカーネルのソースを削除します。
-
Check と Follow now
ページには動作中のカーネルと次の起動のカーネル、それに対する各モジュール、ディスク上のソース、前回の実行を表示します。Check は実行時に何をするかを示し、Follow now は実行します。
インストールと更新
0.1.0-alpha.7.1 の次の os-xgs-npu リリースからは、XGS: Updates の Plugins タブにこのプラグインが表示され、インストール済みのコピーはそこで手動で更新でき、未インストールの環境ではそこからインストールできます。そのリリースから作られる完成済みイメージにも含まれます。それまでは、以下のとおりインストールと更新を行います。プラグインの cron エントリーは 5 分ごとにフォロワーを動かしますが、更新は決して実行しません。XGS アプライアンスでもほかの OPNsense でも、インストールは root で行います。リポジトリのチェックアウトから sh install/install.sh を実行する方法(ページは os-xgs-npu があれば XGS の下、なければ System の下に置かれ、再実行しても設定は保たれます。チェックアウトの横の kernel-sources/ にカーネルソースのアーカイブを置けば、インターネットのないマシンでもビルドできます)と、リリースのパッケージ os-kernelfollow-1.0.0.pkg を SHA256SUMS で確認して pkg で追加する方法があります。この方法でインストールしたコピーは、自身の self-update.py で更新します。OPNsense のプラグインリポジトリには含まれていません。
制限と、まだテストされていないこと
- 実際のカーネル更新:準備されたカーネルセット、ネットワーク経由のソース取得、アップグレードフックと停止フック。
- nextboot そのものと、古いソースの削除。
- tools/make-package.sh でビルドし pkg で追加するパッケージ。
- os-xgs-npu のない OPNsense へのインストール。
- Plugins タブまたは self-update.py による更新。1.0.0 が最初のリリースなので、インストール済みのコピーより新しいリリースはまだありません。
リポジトリ
最初のリリース: 2026-10-25