Axis / Application examples / Minimal system project
Minimal system project
This project defines system, a minimal userspace image including its local system-agent program. axis.lua is the project entry and axis.lock records selected source and prepared-image identities.
Use
From the repository root, inspect the declared graph with:
go run . -C examples/system plan system --target axis:aarch64-qemu --frozen
Replace plan with build to request construction using the selected execution service. Frozen construction requires the exact pinned sources and prepared image to remain available. Generated files live in this directory’s build/ subtree.
To build or reuse the image and kernel and start the host’s QEMU installation:
go run . -C examples/system run --target aarch64-qemu
This uses the sole declared userspace image automatically. It requires the construction service on cache misses and qemu-system-aarch64 on the host. The console exits with Ctrl-a x.
The declaration is an integration example. The name of a virtual-machine configuration is not evidence that the resulting image has booted; runtime acceptance requires a separate execution check.
Boot acceptance
The separate OS boot acceptance workflow builds the CLI and runs this project through axis run on a Linux/arm64 host. To run the same check locally with Docker and QEMU available:
go build -o /tmp/axis .
python3 tools/check-boot.py /tmp/axis --log /tmp/axis-boot.log
The check requires axisd’s successful initialization message, which follows validation of PID 1, the read-only EROFS root and the mandatory runtime mounts. It then observes ten seconds without a kernel panic or process exit, exits QEMU through its console escape, and requires successful CLI termination and release of the project lock. It fails after thirty minutes including construction, and keeps the complete combined output in the log. CI also uploads the boot and construction logs.
Fresh hosts prepare the Docker environment again rather than requiring the example lock’s local snapshot to exist. The declared Linux archive checksum still applies. This check covers minimal initialization and process lifetime; it does not establish service supervision or networking readiness.