Axis / axisd

axisd

axisd is a Linux PID 1 process and system manager. It accepts an already established read-only root, initializes the required runtime filesystems and remains alive for the running system’s lifetime.

Go entry point: main.go. Construction declaration: axis.lua.

axisd shares the github.com/anpep/axis module and builds with go build -o /tmp/axisd ./axisd. The shipped construction uses a static Linux/arm64 executable with cgo disabled.

The construction declaration requests CONFIG_FUTEX=y for Go runtime thread synchronization, including before initialization begins, and CONFIG_EPOLL=y and CONFIG_EVENTFD=y for the runtime’s file polling during initialization. These requirements belong to axisd alongside its runtime filesystem requirements; a kernel built from allnoconfig must enable them explicitly.

Entry contract

The process begins with PID 1, executable /sbin/axisd, an immutable root mounted read-only at /, and the kernel facilities required by initialization. Establishing that root and arranging the process handoff are caller responsibilities. axisd does not select an image or perform machine-specific early startup.

Compatible mounts may be inherited. Their origin does not alter the runtime semantics required by this process.

Lifecycle

The Initialization contract owns the transition from entry to a usable minimal runtime. axisd delegates filesystem setup to that operation, checks its outcome, then continues runtime management only on success.

flowchart LR
    Entry["PID 1 entry"] --> Initialization
    Initialization -->|success| Runtime["Runtime management"]
    Initialization -->|failure| Diagnostic["Failure diagnostic"]

Initialization does not itself imply that users, networking, persistent state or services are ready. Those facilities require explicit future contracts. Until then, they are not advertised as implemented system-management APIs.

Ownership

axisd owns its process lifecycle and the initialization work below it. It does not embed assumptions about a particular board identity. Machine-specific support must arrive through explicit runtime facilities rather than private board logic.

flowchart TD
    Axisd["axisd"] --> Initialization["Initialization"]
    Initialization --> Preconditions["Verify entry conditions"]
    Initialization --> Filesystems["Establish runtime filesystems"]
    Initialization --> Completion["Report success or failure"]
    class Axisd program

Implemented limits

The current implementation establishes the minimal runtime filesystems and remains running as PID 1. Service supervision, persistent-state transactions and management protocols are not implemented by this specification. A conforming implementation must never report completed initialization while a mandatory condition remains unsatisfied.