OPS works well with Firecracker from AWS. OPS doesn't currently interact with the firecracker api but can produce disk images for you to use with firecracker.
You should have a dhcp listener. You can create a bridge and a dhcp server by running:
If you are running via ops we'll create and attach the tap device for you but or firecracker you'll need to Create a tap device:
and you should see the unikernel snag an ip:
If you would like diagnostic logs you can try this before turning on the vm:
boot.sh:
drives.sh:
machine.sh:
start.sh:
Logs
logs.sh:
Finally read your logs:
read_fifo.sh:
Ballooning
For the most current documentation please see https://github.com/firecracker-microvm/firecracker/blob/main/docs/ballooning.md .
Nanos now has ballooning support for firecracker which utilizes mmio transport vs pci with qemu.
To use it with firecracker you'll need to add an appropriate section in your config:
Then you may poll using something like this:
You may inflate or deflate the balloon by sending a PATCH request:
Configuration
You can now dynamically re-configure your unikernel via the firecracker kernel boot_args line such as adding tracing support:
or you could set a static ipv4:
or set an env var:
or set arbitrary arguments:
Known Limitations
Note the following limitations when running workloads under Firecracker. These are not Nanos limitations but limitations imposed via Firecracker because of its unique setup:
(A lot of this has to do with the lack of PCI but that is one of the reasons why it boots much faster.)