fix(nb): share the card's image store instead of copying it locally #250
No reviewers
Labels
No labels
bug
enhancement
in-progress
needs-info
needs-triage
p0
ready-for-agent
ready-for-human
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/nixos!250
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/nb-wow-shared-image-store"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Reverses the per-machine image store from #246. One store on the card serves
both machines, which is what the card was designed for.
The version gap was not real
nb's podman 5.8.2 reads a store the handheld's 6.0.1 wrote — all five images,
no complaint. What actually broke was narrower: podman refuses a store whose
recorded paths differ from the current ones, and the card mounts under a
different user per machine (
/run/media/deckvs/run/media/dominik). Thosepaths belong to libpod's database, not to the images.
bin/common.shnowpoints that database at host-local state via
CONTAINERS_CONF_OVERRIDE(
[engine] static_dir), which merges over the host config rather than replacingit, so distro helper-binary paths survive.
The part that was genuinely NixOS-specific
The store carries
overlay/.has-mount-program, but nothing named the mountprogram. Arch has
fuse-overlayfson PATH so podman finds it; NixOS does not,so podman falls back to native kernel overlay, and creating a container off the
ext4 card then fails:
common.shnow namesfuse-overlayfsexplicitly and dies with a clear messagewhen it is missing.
On the two false starts
I twice reported the shared store as unworkable. Both were wrong, and worth
recording because the failure mode is deceptive:
diffdirs being mode0555. They are — but the local copythat works fine on nb has 202 such dirs against the card's 200, so
that was never the difference.
stale directories in
overlay/tempdirs, whosediffdirs podman cannotchmodbefore unlinking. Every subsequent load tripped on those, reported theimages as corrupt, and fell back to pulling from a
localhostregistry thatdoes not exist. Clearing
tempdirsonce, with the mount program named, and itall works.
Testing
Full
server-up.sh/server-down.shagainst the card's store: worldserverready in 14s (10s for the local copy), database synced back, tokens matching,
and zero temp dirs left in
overlay/tempdirsafter the cycle. Also verifiedeach of the three images runs directly off the card with
--pull=never.scripts/test-configuration nbpasses.After deploy
The 44GB copy at
~/.local/share/wow-portable/containersbecomes dead weightand can be removed.