ArcBox boot assets are built and released from the dedicated
repository arcboxlabs/boot-assets.
Each release contains per-architecture artifacts plus a unified multi-target manifest:
kernel— pre-built Linux kernel (all drivers built-in,CONFIG_MODULES=n)rootfs.erofs— minimal read-only EROFS rootfs (busybox + mkfs.btrfs + iptables-legacy + ebtables + ethtool + socat + CA certs)manifest.json— manifest with SHA256 checksums and kernel cmdline (schema_version= major ofasset_version)- Runtime binaries — dockerd, containerd-shim-runc-v2, runc, docker-init (from the Docker 29.7.2 static package, shipping runc 1.4.3) plus k3s, firecracker/jailer, and the microVM vmlinux
containerd— the one runtime binary not taken from Docker's package. boot-assets builds it from the same upstream tag Docker bundles (v2.3.3) plus containerd#13805, which stops the overlay snapshotter appendingindex=offover a configuredindex=on— without it theindex=on,nfs_export=onmount options the~/ArcBoxlive-container view needs are silently overridden and every overlay mount fails withEINVAL. It is versioned29.7.2-arcbox.<patch>-<release>and reportsv2.3.3-arcbox.<patch>-<release>for itself, so a guest log names both the patch set and the build. It goes back to the stock package once the fix reaches a containerd release Docker ships
No initramfs. The kernel boots directly into the EROFS rootfs (root=/dev/vda ro rootfstype=erofs).
Agent and runtime binaries reach the guest through VirtioFS. Runtime binaries
are checksum-verified against the pinned manifest, copied into a
version-keyed generation on the guest Btrfs data disk, and executed only from
that local generation.
abctl boot status requires the effective kernel, rootfs, and every manifest
runtime binary selected for the current architecture. A configured
vm.kernel_path replaces the managed release kernel; the custom path must be a
non-empty regular file, while only the managed kernel is checked against the
release checksum. Runtime binaries are checked at their manifest-defined paths
for checksum, regular-file type, and executable permissions.
Manifests published before this guest-cache design may still contain a legacy
runtime entry. Current arcbox-boot consumers preserve that metadata for
compatibility but do not use or cache runtime.erofs; abctl boot status
lists it as a non-required legacy artifact.
- Download, verify, and cache boot assets at runtime:
engine/arcbox-image/src/boot_assets/(thin wrapper aroundarcbox-bootcrate) - Wire boot assets into VM lifecycle:
engine/arcbox-engine/src/vm_lifecycle/ - Provide CLI operations (
prefetch/status/list/clear):app/arcbox-cli/src/commands/boot/
- Build EROFS rootfs from Alpine static binaries
- Download pre-built kernels from
arcboxlabs/kernel - Sync upstream runtime binaries (Docker 29.7.2 static package)
- Package tarball + checksum + manifest
- Publish to GitHub Releases and the Backblaze B2-backed CDN
https://boot.arcboxcdn.com/
├── latest.json # {"version":"x.y.z"}
├── asset/
│ └── v0.2.3/
│ ├── manifest.json # unified manifest
│ ├── arm64/kernel
│ ├── arm64/rootfs.erofs
│ ├── x86_64/kernel
│ └── x86_64/rootfs.erofs
└── bin/
└── {name}/{version}/{arch}/{name}
The daemon pins the boot asset version in the root assets.lock, loaded by
engine/arcbox-image/src/boot_assets/lockfile.rs. This can be overridden at
runtime with the ARCBOX_BOOT_ASSET_VERSION environment variable.
abctl boot list sorts cached versions by SemVer precedence, including
prereleases; invalid version directory names appear afterward in lexical order.