| 10 |
10 |
|
- `BUILD-TOOLS.md` — orientation map for the upstream toolchain (apk, mkimage, mkinitfs, apkovl, lbu, ZFS, zfsbootmenu, etc.) plus Mountaineer-authored components and open toolchain decisions
|
| 11 |
11 |
|
- `INSTALL.md` — defended spec for install mechanics: two ISOs from one source, disk layout, ZFS pool/datasets, ARC sizing, zfsbootmenu, apkovl shape and source tree, installer flow, v0.1 dogfood gate
|
| 12 |
12 |
|
- `references/` — third-party material we want to keep alongside the spec
|
| 13 |
|
- |
- `../mountaineer-build/` — implementation repo (apkovl-src, mkimg profile, installer, QEMU iteration loop)
|
|
13 |
+ |
- `../build/` — build pipeline (apkovl-src, mkimg profile, installer, QEMU iteration loop)
|
|
14 |
+ |
- `../sysop/` — Cargo workspace: CLI binary + sysop-tui primitives crate
|
| 14 |
15 |
|
- `/Users/max/Code/CONTRIBUTING.md` — cross-cutting rules (no Docker, no PRs, latest deps, file size, todo format)
|
| 15 |
16 |
|
- `/Users/max/Code/CLAUDE.md` — repo-wide LLM instructions
|
| 16 |
17 |
|
|
| 55 |
56 |
|
|
| 56 |
57 |
|
## Install / overlay mechanics — IMPLEMENTATION
|
| 57 |
58 |
|
|
| 58 |
|
- |
Repo at `../mountaineer-build/`. **Full installer runs end-to-end in QEMU as of build 16**; testable ISO at `out/mountaineer-server-v3.23-x86_64.iso`. Next: Framework 13 hardware verification. See `mountaineer-build/build_notes.md` for traps and gotchas.
|
|
59 |
+ |
Lives in `../build/`. **Full installer runs end-to-end in QEMU as of build 16**; testable ISO at `../build/out/mountaineer-server-v3.23-x86_64.iso`. Next: Framework 13 hardware verification. See `../build/build_notes.md` for traps and gotchas.
|
| 59 |
60 |
|
|
| 60 |
61 |
|
### Done
|
| 61 |
62 |
|
|
| 104 |
105 |
|
- [x] **#9** Live env had no ssh access → `apkovl-src/live/root/.ssh/authorized_keys`, `sshd_config.d/10-live.conf` (PermitRootLogin prohibit-password), `etc/runlevels/default/sshd` symlink
|
| 105 |
106 |
|
- [x] **#10** sshd doesn't start despite runlevel symlink → apkovl applies after default runlevel reached; `/etc/local.d/sshd.start` retroactively starts it
|
| 106 |
107 |
|
|
| 107 |
|
- |
Builds 11–16 (ISO-boots-and-installs era — full session details in `mountaineer-build/build_notes.md`):
|
|
108 |
+ |
Builds 11–16 (ISO-boots-and-installs era — full session details in `../build/build_notes.md`):
|
| 108 |
109 |
|
- [x] **#11** `tools/build-apkovl.sh`: `find ... -exec touch -d '@0'` followed symlinks into root-owned `/etc/init.d/*` and silently broke the live apkovl. Fix: `find ! -type l`.
|
| 109 |
110 |
|
- [x] **#12** `apkovl-src/common/etc/ssh/sshd_config`: removed `PrintLastLog yes` — unsupported by Alpine's OpenSSH.
|
| 110 |
111 |
|
- [x] **#13** `apkovl-src/live/etc/network/interfaces` missing → networking failed in live env. Added lo + eth0 DHCP.
|
| 124 |
125 |
|
- `vm-build.sh` does rsync + build.sh + pull. `build.sh` now auto-nukes `.work/apkovl_*` and `.work/image-*` so apkovl-src edits propagate without manual cache stomping.
|
| 125 |
126 |
|
- Full nuke (rare; restores ~30 min of TCG kernel/modloop build): `ssh -p 2222 ... 'rm -rf /home/build/mountaineer-build/.work'`.
|
| 126 |
127 |
|
- VM install test cycle: `./tools/qemu/vm-test-install.sh --daemonize` → `ssh-keygen -R [127.0.0.1]:2223 -f .vms/known_hosts` → wait for port → `ssh ... 'cat > /usr/local/sbin/mountaineer-install' < installer/install.sh` (live ISO has no scp/sftp) → `ssh ... mountaineer-install --config /tmp/install.yaml`.
|
| 127 |
|
- |
- After install: standalone boot of installed disk uses same OVMF setup, `-drive file=.vms/disks/target.qcow2,if=virtio,format=qcow2`, no `-cdrom`, port-forward 2224. See `mountaineer-build/build_notes.md` for the full incantation.
|
|
128 |
+ |
- After install: standalone boot of installed disk uses same OVMF setup, `-drive file=.vms/disks/target.qcow2,if=virtio,format=qcow2`, no `-cdrom`, port-forward 2224. See `../build/build_notes.md` for the full incantation.
|
| 128 |
129 |
|
|
| 129 |
130 |
|
### Package availability — v3.23 main+community (verified, don't re-test)
|
| 130 |
131 |
|
|
| 215 |
216 |
|
|
| 216 |
217 |
|
### Implementation follow-ups
|
| 217 |
218 |
|
|
| 218 |
|
- |
- [x] `sysop-tui` crate: frame, footer keybind renderer, flatwhite color constants, selection widget, reserved globals — lives in `mountaineer-sysop/crates/sysop-tui/`
|
| 219 |
|
- |
- [x] `sysop info <role>` — first subcommand, role→tool registry shipped (33 roles in `mountaineer-sysop/crates/sysop/data/roles.toml`)
|
|
219 |
+ |
- [x] `sysop-tui` crate: frame, footer keybind renderer, flatwhite color constants, selection widget, reserved globals — lives in `../sysop/crates/sysop-tui/`
|
|
220 |
+ |
- [x] `sysop info <role>` — first subcommand, role→tool registry shipped (33 roles in `../sysop/crates/sysop/data/roles.toml`)
|
| 220 |
221 |
|
- [x] `sysop motd on/off/print` — opt-out tip rotation, time-bucketed; config at `/etc/mountaineer/sysop.toml` (`$SYSOP_CONFIG` override for host dev)
|
| 221 |
222 |
|
- [x] `sysop services` (read-only) — s6-rc backend with mock fallback for host dev; `--summary` emits `ok`/`N down` for the yambar `svc` segment to consume. Enable/disable verbs deferred to live-system phase
|
| 222 |
223 |
|
- [x] `sysop storage` (read-only) — zfs backend (zpool list) with mock fallback; `--summary` emits `ok`/`degraded` for the yambar `zfs` segment. Detail view, scrub trigger, snapshot ops deferred
|