This repo builds guest kernels for Depot's two VMMs. They are separate,
incompatible artifacts: Firecracker boots an uncompressed vmlinux ELF,
Cloud Hypervisor boots a raw bzImage/Image produced from its own linux
fork. FLAVOR selects which one to build.
microvm-kernel-ci-x86_64-6.1.configmicrovm-kernel-ci-aarch64-6.1.config
The build script uses the selected config file directly; no remote preset merge.
./build.sh --print-config-only
ARCH=x86_64 ./build.sh
ARCH=aarch64 ./build.sh
# Optional: use a custom config file in this repo
ARCH=x86_64 KERNEL_CONFIG_PATH=$PWD/my.config ./build.shOutput: vmlinux-<arch>-<version>-<sha256>{,.config,.tar.gz}
Builds cloud-hypervisor/linux at a pinned commit with upstream's
ch_defconfig, plus one deviation: CONFIG_IPV6 is force-enabled, because
Depot private networks require an in-guest fdaa::/16 address and a
link-local IPv6 gateway that upstream's minimal config disables. Keep the
pinned commit in sync with
depot/scripts/build_cloud_hypervisor_kernel.sh.
FLAVOR=cloud-hypervisor ARCH=x86_64 ./build.sh
FLAVOR=cloud-hypervisor ARCH=aarch64 ./build.sh
# Optional overrides
FLAVOR=cloud-hypervisor CLOUD_HYPERVISOR_LINUX_COMMIT=<sha> ./build.shOutput: cloud-hypervisor-kernel-<arch>-<commit>-<sha256>{,.config,.tar.gz}
There is no local config file for this flavor — --list-configs and
KERNEL_CONFIG_PATH only apply to the Firecracker flavor.
Docker is the default and recommended mode for both flavors, including on arm Macs.
Artifacts are written to dist/.
GitHub Actions builds x86_64 and aarch64 for both flavors and uploads
tar.gz artifacts.
Workflow: .github/workflows/build.yaml
.github/workflows/release.yaml publishes both flavors to the same GitHub
release, plus stable alias assets that always point at the latest build:
kernel-x86_64.tar.gz,kernel-aarch64.tar.gz(Firecracker)cloud-hypervisor-kernel-x86_64.tar.gz,cloud-hypervisor-kernel-aarch64.tar.gz(Cloud Hypervisor)