Skip to content

Updating an appliance, step by step

On 2026-10-19 all three appliances on the bench were updated to v0.1.0-alpha.2 from their own XGS: Updates page, in the browser, and photographed along the way. The XGS 136 and the first XGS 3300 were offered the release as usual. The second XGS 3300 at first was not, for a reason this page shows. Each update, from Update to done, took 16 or 17 seconds; the driver is built on the appliance itself.

The page does for this plugin what OPNsense's own System: Firmware does for OPNsense, which does not list the plugin. Nothing on it reboots by itself.

1. What is installed, and what is offered

Status shows three cards: what is installed, the newest release, and the last update. Below them are the channel this appliance follows (Releases, or Test for every change merged) and the two buttons.

The XGS 136: installed a commit from main, v0.1.0-alpha.2 offered

The first XGS 3300, the same release offered

2. What changed

What changed lists every change the offered release brings, each with its pull request.

What changed, as it was: the pull requests printed as Markdown

The pull requests were printed as their Markdown, brackets and address included; they are drawn as links now:

What changed, the pull requests as links

3. Update, and what it says first

Update asks once, and says what is about to happen: the version shown is downloaded, its installer runs, and the driver is built for the running kernel. The driver that is running now stays until the next boot, so the firewall goes on forwarding.

The confirmation

4. The progress bar

Six steps, each lit as it starts and ticked as it ends:

  • Download - the release, by the commit the check found;
  • Unpack;
  • Install - the plugin, its pages and its boot hooks;
  • Kernel sources - the sources of the kernel this appliance runs;
  • Build the driver - counted in source files, 9 of 9;
  • Finish.

On the first XGS 3300, about once a second:

2 %: downloading the release

18 %: installing the plugin, its pages and its boot hooks

24 %: still installing

73 %: building the driver, 6 of 9 source files compiled

90 %: 9 of 9 compiled

And on the XGS 136 and the second XGS 3300:

The XGS 136 at 33 %, installing

The second XGS 3300 starting

The second XGS 3300 installing

The second XGS 3300 at the kernel sources

The second XGS 3300 building its driver, 90 %

The second XGS 3300 finishing

5. Done - and a reboot only when the driver changed

When it is done the bar is full and every step ticked. A reboot loads the driver just built, and the page offers it with Reboot now.

The first XGS 3300: installed, waiting for a reboot to load its new driver

The XGS 136 was asked for a reboot too, although the driver its update built was byte for byte the one it was running (npuep 9619e07c, built by hand earlier the same day from the same source). A reboot would have loaded the same driver again:

The XGS 136 asked for a reboot it did not need

Now the update compares the driver it built with the one the boot loaded, and says when nothing waits:

The second XGS 3300: installed, the driver it built is the one running

6. The reboot

Reboot now asks once, and says what it costs: traffic stops until the appliance is back, a few minutes.

The reboot asks

Rebooting: the page says to reload it once the firewall is back

The first XGS 3300 was back at 18:36:09 UTC with the new driver (octep 3315c08f) loaded and its links up. The reboot also ended the browser's session, so the page after it asked for a login.

7. The installer's log

Installer log keeps everything the installer printed: what was downloaded, each part installed, and the driver's build.

The installer log

A build from a branch

The second XGS 3300 had last been installed from a test branch. That build is not in the history of the releases: the branch's change was merged as a single commit, which is a different commit from the test build. Compared with the release, the build is neither ahead nor behind; GitHub calls this diverged. The page treated it as up to date and turned Update off:

The second XGS 3300 shown as up to date, the release ahead of it

A build like that is now offered the release, with the reason beside it:

The release offered, and why

Discussion

The discussion of this page is held in the project's GitHub Discussions. Showing it here loads giscus from giscus.app and GitHub, and writing in it needs a GitHub account - what that means.