Contents

x0ne OS / Handbook / Project

Building x0ne OS from source

Works today (measured 2026-10-09). Every target below exists today. The source repository is not published yet.

Build the packages, the repository and the images yourself. Every step runs in a throwaway container.

Prerequisites

  • podman (rootless is fine), make, git.
  • KVM for the boot tests, optional.
  • Nothing is installed on the host.

Build and test everything

build
$ make all
$ make test
$ make status

make all builds packages, the signed repository, the OCI image, the qcow2 and the microVM, then runs every test suite.

Targets

TargetDoes
make buildThe metapackages (.deb).
make repoThe signed apt repository.
make ociThe OCI image x0ne-os:base.
make qcow2The bootable amd64 qcow2.
make microvmThe microVM image: root filesystem, kernel, initrd.
make vmmThe image with QEMU, Firecracker and Cloud Hypervisor.
make isoThe live ISO and the installer ISO, hybrid BIOS and UEFI, with SBOM and SHA256SUMS signed by the test key.
make test-acceptanceLanding spec, lightness, images, agent user.
make test-securityPackages, repository, images, supply chain.
make test-publicSecrets, internal names, licence, commits.
make test-isoThe live ISO: layout, Secure Boot chain, security, signatures, boots.
make bench-bootBoot time, 20 boots each: QEMU microvm, Firecracker, UEFI qcow2.
make run, make run-microvmBoot the qcow2 or the microVM on the serial console. The first boot asks for your account.
make byol, make byoiThe OVHcloud images: Bring Your Own Linux, and the encrypted one.
make installer-autoAn unattended installer ISO for one host, with its SSH key.
make test-byoi, make test-installer-autoThe OVHcloud encrypted image, and the unattended installer.
make debug-qcow2Test only: boot the qcow2 to a shell, nothing saved.
make cleanRemove out/, keep the test key.
make helpEvery target.

Expected output

Results land in out/results/SUITE.json. Last runs:

SuiteDatePassExpected failuresSkipped
acceptance2026-10-129173
security2026-10-116110
public2026-10-111620
iso2026-10-114410
byoi2026-10-113600
auto2026-10-113200
autoi2026-10-10700

Seven suites: 287 pass, 11 expected failures, 3 skipped.

Expected failures name what is missing, for example llama.cpp not in Debian 13. Skipped tests wait for a released image.

Signing key

The first build makes a throwaway test key in .test-key/. It is git-ignored and never released.

How to verify

Build twice with the same SOURCE_DATE_EPOCH: the .deb files are byte-identical.

How to undo

clean up
$ make clean

Containers and images are named x0ne-os-*. Remove them by name, never with a prune.

See also