Kernel
bhatti uses a custom-built Linux kernel optimized for Firecracker microVMs. The kernel is minimal — only the features needed for sandbox workloads are enabled.
Building
Section titled “Building”# Clone the kernel sourcegit clone --depth 1 --branch v6.1 https://github.com/torvalds/linux.gitcd linux
# Apply the bhatti configcp /path/to/bhatti/kernel/.config .config
# Buildmake -j$(nproc) vmlinuxThe output vmlinux is an uncompressed kernel binary — Firecracker loads it directly.
Key config choices
Section titled “Key config choices”The kernel config enables:
- virtio — virtio-blk (rootfs, config drive, volumes), virtio-net (networking), vsock (host↔guest)
- ext4 — filesystem for rootfs and volumes
- devtmpfs — required for
/devdevice nodes - PTY — for interactive shell sessions
- process namespaces — for process isolation within the VM
- network — TCP/IP stack, bridge support
The kernel config disables everything unnecessary for a sandbox environment: USB, sound, most filesystems, most network drivers, hardware-specific drivers.
Architecture support
Section titled “Architecture support”Two kernel configs are maintained:
vmlinux-arm64— for Raspberry Pi 5, Graviton, and other ARM64 hostsvmlinux-amd64— for x86_64 bare metal and cloud instances
The correct kernel is selected automatically based on the host architecture.