Tutorials#
Three end-to-end walk-throughs, one per hypervisor target.
-
The fastest path to a working boot. Build a UKI, point QEMU at it, watch it
kexecstraight into Debian Trixie. Both x86_64 and aarch64 in five minutes. -
The Path C production flow on Apple Silicon.
boot.iso(read-only) +menu-cache.raw(writable ESP) + virtio-net plan fetch +efivarfswrite +reboot(2). The full menu-then-reboot dance. -
Push a
boot.isointo Glance once, then push different plans viacloudboot.metadata.urlper instance. Keystone application credentials give per-instance scoped tokens for both metadata and OCI registry pulls.
What you'll need#
- Go 1.25+ to cross-compile
cloud-boot-init. - TinyGo 0.39+ to build the UEFI stub and the loader (Path B only).
- mtools / xorriso / dosfstools to assemble the hybrid
GPT/El-Torito ISO. The
uki/cloud-boot buildcommand shells out to these. - For Path A on KVM: a recent QEMU (>= 8.0) with OVMF firmware for your guest arch.
- For Path C on Apple VZ: vfkit from
Crc-org/vfkit —
brew install vfkiton macOS. - For OpenStack: a project + an application credential (id + secret) with permission to read the per-instance metadata and pull from your OCI registry.
Where things live#
cloud-boot/
├── init/ # Go PID-1 binary
├── uki/ # host-side build tool ("cloud-boot")
├── loader/ # pure-UEFI bootloader (Path B)
├── kernel/ # bootstrap kernel Dockerfiles
└── docs/ # this site
All Go modules use replace directives during local development so
the four core repos plus the go-coff / go-filesystems /
go-crypto / go-fde siblings coexist in one workspace. Once
published to the cloud-boot org on GitHub the modules resolve
via Go's normal go.mod flow.