Saphira Linux · an AKADATA project

Controlled build guide

The supported aggregate, package, validation, image, and Stage4 workflows exposed by the current build controller.

Saphira, the Version 0 mascot
Technical preview

Saphira Linux

Saphira Linux has a home of its own

Saphira Linux is AKADATA’s source-built, musl/OpenRC server distribution for self-hosted infrastructure. Development, downloads, documentation, packages and the Dragon feature sets now live on the dedicated Saphira Linux website.

Visit Saphira Linux saphira.vm2.uk


Saphira Linux

Build it yourself is coming soon

This AKADATA archive keeps the build-guide material available. The self-build path, releases, and current Saphira Linux development now have their own home.

Why Saphira? saphira.vm2.uk


Top-level controller

Build through build.sh

The supported entry point is ./build.sh [--dry-run] COMMAND [PACKAGE...]. Aggregate targets belong after the build command; they are not standalone shell commands.

./build.sh build sdk
./build.sh build stage0
./build.sh build stage1
./build.sh build stage2
./build.sh build stage3
./build.sh build stage4
./build.sh build base
./build.sh build all

Aggregate targets

Choose the boundary you intend to complete

Aggregate build targets
TargetController effectCommand
sdkConstruct the cross-development SDK../build.sh build sdk
stage0Run the Stage0 SDK acceptance boundary and manifest../build.sh build stage0
stage1Build the complete bootstrap rootfs package set../build.sh build stage1
stage2Build the complete native final-system package set../build.sh build stage2
stage3Build and validate the Stage3 image unit../build.sh build stage3
stage4Build every Stage4 unit, install packages, create the repository and image, then validate../build.sh build stage4
baseRun SDK through Stage3 in dependency order../build.sh build base
allRun SDK through Stage4 in dependency order../build.sh build all

sdk constructs the cross-development SDK. stage0 is the separate acceptance and manifest boundary. base ends at the accepted Stage3 image; all continues through Stage4.


Controlled full run

Inspect, dry-run, then build

Status and settings are read-only. The dry run prints the planned trajectory without compiling, cleaning, imaging, or booting.

./build.sh status
./build.sh settings show
./build.sh --dry-run build all
./build.sh build all

The default policy is two jobs, load limit two, x86-64-v3, O3, and pipe=on. Use ./build.sh settings set profile performance when the host should use its calculated performance parallelism.


Resume and repair

Operate on the smallest meaningful unit

Package identifiers carry a stage prefix. Completion markers and fingerprints allow the controller to skip accepted work and identify the next ready unit.

./build.sh status stage2
./build.sh next stage2
./build.sh rebuild stage2
./build.sh validate stage2:manifest

rebuild performs clean, rebuild, and validation for the requested unit or aggregate, while invalidating dependent evidence. Use it only when that destructive scope is intended.


Stage4 lower-level workflow

Use explicit actions when developing the package layer

./build.sh build stage4 is the aggregate route. The following lower-level commands are useful when developing, diagnosing, or deliberately separating Stage4’s package, repository, install, image, and validation operations.

./stage4/fetch-sources.sh --missing
./stage4/fetch-sources.sh --fetch
./stage4/fetch-sources.sh --verify
./build.sh stage4-create-keys
./build.sh stage4-validate-keys
./build.sh stage4-select akadata-stage4-server
./build.sh stage4-preflight
./build.sh stage4-build
./build.sh stage4-install
./build.sh stage4-repository
./build.sh stage4-image
./build.sh stage4-validate

Source fetching is the only network-acquisition step and remains outside build.sh. Stage4 build, install, repository, image, validation, and boot actions remain independently callable.


Images and boot

Creation and execution remain separate

./build.sh image
./build.sh image-grub-akadata
./build.sh boot
./build.sh rescue
./build.sh stage4-image
./build.sh stage4-boot

image builds or validates the Stage3 qcow2. boot uses its installed GRUB. rescue uses the external kernel and bypasses normal OpenRC/password startup. Stage4 has its own derived image and explicit boot command.