summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorHermes Agent <hermes@localhost>2026-08-11 20:53:53 +0000
committerHermes Agent <hermes@localhost>2026-08-11 20:53:53 +0000
commitde352f683f104c68106d488863f338afdb836e94 (patch)
tree47812ded4b6a042c4a86e55f16bc661c4c657d57 /README.md
Add independent Rust Hasher rootfs builder
Diffstat (limited to 'README.md')
-rw-r--r--README.md31
1 files changed, 31 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4cd3b96
--- /dev/null
+++ b/README.md
@@ -0,0 +1,31 @@
+# alt-controller-image
+
+An independent Rust proof of concept that produces an ALT Controller rootfs tarball without invoking `mkimage-profiles`, `mkimage`, or GNU Make.
+
+## Pipeline
+
+1. Rust parses `profiles/alt-controller.profile`.
+2. The profile uses vendored package lists under `profiles/package-lists/`.
+3. Rust initializes an isolated Hasher work root with `hsh --initroot-only`.
+4. Rust installs the resolved package set with `hsh-install`.
+5. Rust archives `work/alt-controller/chroot` to `out/alt-controller-rootfs.tar` using `tar`, excluding Hasher's `.host` helper directory.
+
+Hasher is intentionally the only external build dependency in this slice. It supplies ALT package resolution and isolation; the image/profile orchestration belongs to this project.
+
+## Build
+
+```bash
+cargo test
+cargo build --release
+sudo -u hermes ./target/release/alt-controller-image
+```
+
+The output is:
+
+```text
+out/alt-controller-rootfs.tar
+```
+
+## Scope
+
+The goal is a working, independent `alt-controller` rootfs tarball. This first slice packages the target’s vendored controller, systemd, and OpenSSH lists plus the explicit target packages and real-time kernel selection. It does not yet reproduce every post-install script or VM-image conversion behavior from the legacy meta-profile; those become separately testable Rust pipeline stages rather than Make fragments.