Skip to content

feat: read-only root and /data partition - #3

Merged
madeofpendletonwool merged 1 commit into
mainfrom
agent/lead-software-engineer-server/01a13ba2
Oct 14, 2026
Merged

madeofpendletonwool merged 1 commit into
mainfrom
agent/lead-software-engineer-server/01a13ba2

Conversation

@madeofpendletonwool

Copy link
Copy Markdown
Owner

Implements MAD-805 — makes the box safe to pull the plug on.

  • Overlay root via the raspi-config initramfs mechanism, enabled at build time; root and /boot/firmware read-only at runtime (boxd remounts the FAT only around its syncphony.txt/cmdline.txt writes)
  • Third partition (label syncphony-data) appended post-export; first boot grows the last partition instead of root
  • Everything that must persist lives on /data (profile, config.env, 50MB-capped logs, machine-id, Imager user, SSH keys, Wi-Fi) — the one list is docs/persistent-paths.md
  • Damaged /data boots to a storage-lost screen instead of hanging; sudo syncphony-box chroot writes the real root for maintenance
  • CI smoke test extended (3 partitions, overlay wired, persistent paths); 50-pull procedure written in docs/testing.md

Full suite passes locally (make lint, make test: 58 bats + go). Image build + smoke run in CI.

- Overlay root via the raspi-config initramfs mechanism, enabled at build time; /boot/firmware ro except boxd's remount dance
- Third partition (syncphony-data) appended post-export; first boot grows it, not root
- Chromium profile, config.env, logs, identity, SSH keys, Wi-Fi persist on /data (docs/persistent-paths.md)
- Storage-lost screen when /data can't mount; sudo syncphony-box chroot for maintenance
- Smoke test: 3 partitions, overlay wired, persistent paths on /data; power-pull procedure in docs/testing.md
@madeofpendletonwool
madeofpendletonwool merged commit 4ea8ab1 into main Oct 14, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant