The kernel module loads tun at boot and keeps the running kernel's modules across an upgrade; mesh-build-image takes no ask where it cannot build (group fix/ace-tun)
#543
Merged
mesh-toolsmerged 2 commits from fix/ace-tun into main2026-10-28 13:07:43 +00:00
Delivery group fix/ace-tun (mesh-sdk, mesh-catalog). Issue 1126 notes 68-69.
modules/kernel: /etc/modules-load.d/mesh-kernel.conf loads tun at every boot; the package kernel-modules-hook (and its linux-modules-cleanup.service, at boot) keeps the running kernel's modules across a kernel upgrade, so a long-running node can still load a module after one (ace had lost 6.18.54's modules).
modules/mesh-build-image: its check opens /dev/net/tun; any refusal of its check makes the node not eligible (capacity 0, the reason in health and in its capacity record), and a changed result wakes the puller; pins mesh-sdk 1618837.
Quick vs thorough: quick is a reboot of ace (one instance); thorough built: the kernel keeps modules across upgrades and every refusal routes asks elsewhere instead of failing them.
Needs the operator: ace takes no image build until it reboots (its tun module cannot load before).
Subtask kept: a check cancelled by a shutdown should not mark a node ineligible (note 69).
Tests: kernel manifest test; mesh-build-image TestHealthIsUnhealthyWithoutWhatABuildNeeds and TestAPulledImageAskCopiesThenBuilds rows, each failing first; the 22 catalog checks pass.
Delivery group fix/ace-tun (mesh-sdk, mesh-catalog). Issue 1126 notes 68-69.
- modules/kernel: /etc/modules-load.d/mesh-kernel.conf loads tun at every boot; the package kernel-modules-hook (and its linux-modules-cleanup.service, at boot) keeps the running kernel's modules across a kernel upgrade, so a long-running node can still load a module after one (ace had lost 6.18.54's modules).
- modules/mesh-build-image: its check opens /dev/net/tun; any refusal of its check makes the node not eligible (capacity 0, the reason in health and in its capacity record), and a changed result wakes the puller; pins mesh-sdk 1618837.
Quick vs thorough: quick is a reboot of ace (one instance); thorough built: the kernel keeps modules across upgrades and every refusal routes asks elsewhere instead of failing them.
Needs the operator: ace takes no image build until it reboots (its tun module cannot load before).
Subtask kept: a check cancelled by a shutdown should not mark a node ineligible (note 69).
Tests: kernel manifest test; mesh-build-image TestHealthIsUnhealthyWithoutWhatABuildNeeds and TestAPulledImageAskCopiesThenBuilds rows, each failing first; the 22 catalog checks pass.
Reviewed-by: rev-ace-tun@shanks at 86d37a14e7ab8b6dc3393cd65bef08bad23024c9
An image build node up 24 days had lost its running kernel's modules to a linux-lts upgrade, so tun
could not load and every RUN line failed in pasta. mesh-build-image now proves the tun device and,
whatever its look refuses, judges its node not eligible (capacity 0 with the reason), so the asks go
to a node that can build them. The kernel module loads tun at boot and declares kernel-modules-hook,
which keeps the running kernel's modules across an upgrade. Needs mesh-sdk fix/ace-tun (Puller.Eligible).
Deliverynovox/mesh-catalog@86d37a14e7ab — merged since 2026-10-28T13:07:44Z
Source — source.main moved to novox/mesh-catalog@69056948bf. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: pass — the checker's verdict at the members' heads (a070dc3d0af3)
Transitions
2026-10-28 11:51 (new) → proposed (announced): novox/mesh-catalog#543's head announced
2026-10-28 11:51 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-10-28 13:07 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@86d37a14e7ab` — **merged** since 2026-10-28T13:07:44Z
**Source** — source.main moved to novox/mesh-catalog@69056948bfa8. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/ace-tun`: novox/mesh-catalog@86d37a14e7ab, novox/mesh-sdk@1618837ea9fe
- composed together: pass — the checker's verdict at the members' heads (a070dc3d0af3)
**Transitions**
- 2026-10-28 11:51 (new) → proposed (announced): novox/mesh-catalog#543's head announced
- 2026-10-28 11:51 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-10-28 13:07 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delivery group fix/ace-tun (mesh-sdk, mesh-catalog). Issue 1126 notes 68-69.
Quick vs thorough: quick is a reboot of ace (one instance); thorough built: the kernel keeps modules across upgrades and every refusal routes asks elsewhere instead of failing them.
Needs the operator: ace takes no image build until it reboots (its tun module cannot load before).
Subtask kept: a check cancelled by a shutdown should not mark a node ineligible (note 69).
Tests: kernel manifest test; mesh-build-image TestHealthIsUnhealthyWithoutWhatABuildNeeds and TestAPulledImageAskCopiesThenBuilds rows, each failing first; the 22 catalog checks pass.
Reviewed-by: rev-ace-tun@shanks at
86d37a14e7Delivery
novox/mesh-catalog@86d37a14e7ab— merged since 2026-10-28T13:07:44ZSource — source.main moved to novox/mesh-catalog@69056948bf. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/ace-tun: novox/mesh-catalog@86d37a14e7, novox/mesh-sdk@1618837ea9Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.