summaryrefslogtreecommitdiff
path: root/README.md
blob: 67e17340d1545be9659e49de1add76f11855fd3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 the typed TOML image definition at `profiles/alt-controller.toml`.
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 finalizes the rootfs and invokes its native deterministic tar writer to archive it, excluding Hasher's internal `.host` and `.fakedata` directories. The archive records normalized numeric ownership and timestamps; ACLs and xattrs are not represented by the portable initial format.

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.