Build Ubuntu 26.04 images with the Xubuntu minimal desktop for Linux 101.
Requires Linux, Python 3 and rootless Podman with subordinate UID/GID ranges configured. Builds run as your ordinary user, without sudo. Docker with Buildx is also supported via CONTAINER_ENGINE=docker; see DESIGN.md for its requirements.
./build.sh # amd64: qcow2, VMDK, VDI and VMware/VirtualBox OVA
FORMAT=qcow2 ./build.sh # amd64: qcow2 only
ARCH=arm64 ./build.sh # arm64: qcow2Outputs are in dist/<arch>/. Move previous builds aside before rebuilding; verify downloads with sha256sum -c SHA256SUMS in the output directory.
Use a native host for each architecture, or build arm64 on x86_64 with Linux 6.7 or newer.
Start CI builds through Actions → qcow2 images → Run workflow. Successful builds publish the qcow2 image, build metadata and SHA256SUMS to Releases, tagged build-<run-id>-<attempt>. CI currently builds amd64 only.
On an x86_64 Linux host, place an amd64 image built by this project at dist/amd64/root.qcow2 (rename the Release download 101strap-amd64.qcow2, or extract the amd64 CI artifact there). Run from the repository root:
# Build the export tools (cached on subsequent runs).
ARCH=amd64 python3 rootfs/build.py --engine podman --target exporter \
--tag local/101strap:exporter
podman run --init --rm \
-v "$(pwd):/srv:ro" -v "$(pwd)/dist/amd64:/target" \
-e ARCH=amd64 local/101strap:exporter bash /srv/image/export.shThis produces root.vmdk, root.vdi, VMware and VirtualBox OVA files, and updates SHA256SUMS in the same directory. Move existing exports aside first; the script refuses to overwrite them. The source qcow2 is preserved. Preparing the exporter builds only the export tools; no guest rootfs is needed. To use Docker, replace podman in both commands with docker.
Import the OVA into VMware or VirtualBox. For QEMU, install the system emulator and matching UEFI firmware, then run:
python3 tools/run-vm.py --arch amd64
python3 tools/run-vm.py --arch arm64The QEMU launcher discards changes when it exits. Images use a 16 GiB disk and UEFI with Secure Boot disabled. The username and password are both ustc.