marvin e7fa17f8dc
CI / build (pull_request) Successful in 14s
Add Containerfile: build boco (musl) + slim kernel; runnable runner image
- 3-stage build: musl boco+boco-init (rust>=1.88, alpine:edge), linux-7.2
  bzImage from kernel/config (pinned tarball, sha256-verified), slim runtime
  with qemu/virtiofsd/podman.
- .containerignore: deny-all context (Cargo files, src/, init/, kernel/config)
  so the linux submodule no longer ships into every build.
- Verified end-to-end: kernel boots under KVM, ext4 rootfs, userspace init.
- NOTE: nested rootless podman cannot 'podman unshare -> container mount'
  (build path); boot path works as-is.
2026-10-20 17:26:54 +02:00
2026-09-26 13:23:21 +02:00
2026-10-20 14:48:27 +02:00
2026-09-26 13:23:21 +02:00
2026-10-20 14:45:14 +02:00
2026-08-26 19:25:20 +02:00
2026-09-11 17:56:38 +02:00
2026-09-11 17:56:38 +02:00
2026-09-11 18:08:37 +02:00

boco

Turn container images into bootable VMs

Example

# ./example/alpine/Containerfile
FROM alpine:latest
CMD ["/bin/sh"]
# Build the container
podman build ./example/alpine -t boco-alpine

# Make the container bootable. boco injects a custom init program,
# then packs the rootfs as a qcow2 disk.
boco build qcow2 boco-alpine

# Boot the image using QEMU, and drop into /bin/sh.
boco boot boco-alpine

# Cleanup
boco image rm boco-alpine
podman image rm boco-alpine

Can also be used to boot a more traditional systemd-based VM:

FROM archlinux:latest

# This works! Although you should probably add a user or some services.
CMD ["/sbin/init"]

Kernel

boco boots VMs using a shared kernel at $XDG_DATA_HOME/boco/registry/vmlinuz. Place a suitable x86 bzImage there before running boco boot.

S
Description
Turn container images into bootable VMs
Readme
340 KiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 78.6%
Shell 21.3%
Dockerfile 0.1%