One-command development sandboxes on Firecracker microVMs.
https://git.thaloco.com/thaloco/banger/
| .gitignore | ||
| AGENTS.md | ||
| firecracker | ||
| firecracker-api.yaml | ||
| id_ed25519 | ||
| kill.sh | ||
| list.sh | ||
| logs.sh | ||
| namegen | ||
| ps.sh | ||
| README.md | ||
| rm.sh | ||
| run.sh | ||
| stop.sh | ||
| verify.sh | ||
| vmlinux | ||
banger
Minimal Firecracker launcher.
Requirements
- Linux host with KVM (
/dev/kvmaccess) sudo,ip,curl,ssh
Files
firecracker: Firecracker binaryvmlinux: guest kernelrootfs.ext4: guest root filesystemid_ed25519: SSH key forroot
Run
./run.sh
Run Options
./run.sh --name calm_otter --vcpu 4 --ram 2048 --disk-size 6G
--name: must be unique and match[a-z0-9][a-z0-9_-]{0,63}.--vcpu: defaults to 2, max 16.--ram: MiB, defaults to 1024, max 32768.--disk-size: M/G suffixes supported; must be >= baserootfs.ext4size. Requiresresize2fs.
SSH
ssh -i "./id_ed25519" root@<guest_ip>
Shutdown
reboot
VM Info File
Each VM writes a metadata file at state/vms/<id>/info with the following fields:
id: unique identifier for the VM instance.pid: Firecracker process ID.created_at: timestamp when the VM was launched.guest_ip: IP address assigned to the guest.tap: host TAP interface name attached to the bridge.api_sock: path to the Firecracker API socket (stored under$XDG_RUNTIME_DIR/banger/when available).log: path to the Firecracker log file.base_loop: loop device backing the base rootfs (if present).cow_file: copy-on-write image file (if present).cow_loop: loop device for the COW image (if present).dm_name: device-mapper name for the merged rootfs (if present).dm_dev: device-mapper device path for the merged rootfs (if present).
Log Notes
PCI: Fatal: No config space access function foundandMissingAddressRangelines are expected withpci=offinrun.sh.SELinux: Could not open policy file ...is expected in the minimal rootfs.