Take a look at start_vm.sh
. For the bare minimum, you need to specify the kernel
image and a rootfs. Common additional configs include logger, machine specs, and
network.
For a complete list of config options,
see Firecracker API server's yaml file
TAP devices are created and configured ahead of time. See sys_setup.sh
and network_tap_setup.sh
for examples.
I've included the following rootfs as examples since making the right rootfs has proven to be tricky for me:
- hello-rootfs.ext4: provided by AWS team as a toy example. Actually not a minimum rootfs. init process does quite a bit
- iperf.rootfs.ext4: similar to hello-rootfs but added a network job (iperf) to the init process.
- lt-rootfs.ext4: used for cold launch latency tests. Has a C program and a Python program at the end of init process writing to a magic port for time measurement.
TODO