Firecracker by design only supports emulating 4 devices:
virtio-block
virtio-net
- a serial console
- a 1-button keyboard used only to stop the microVM (invoked with
reboot
)
Everything apart from above, is not supported, and out of scope.
- A host running Linux 4.14 or newer
sysctl net.ipv4.ip_forward=1
- loaded kernel loop module:
- If your kernel loads the loop module -
modprobe -v loop
- If the loop module is built in -
grep 'loop' /lib/modules/$(uname -r)/modules.builtin
- If your kernel loads the loop module -
- Optional:
sysctl net.bridge.bridge-nf-call-iptables=0
- set to 0 to ignore Host iptables rules for bridges
- set to 1 to apply Host iptables rules to bridges (common with container network policies)
- requires kernel module
br_netfilter
- libvirt reference
- One of the following CPUs:
CPU | Architecture | Support level | Notes |
---|---|---|---|
Intel | x86_64 | Complete | Requires VT-x, most non-Atom 64-bit Intel CPUs since Pentium 4 should be supported |
AMD | x86_64 | Alpha | Requires AMD-V, most AMD CPUs since the Athlon 64 "Orleans" should be supported |
ARM | AArch64 (64-bit) | Alpha | Requires GICv3, see here |
- A Linux kernel 4.14 or newer
- Kernel config:
CONFIG_VIRTIO_BLK=y
(mandatory)CONFIG_VIRTIO_NET=y
(mandatory)CONFIG_KEYBOARD_ATKBD=y
(optional but recommended)CONFIG_SERIO_I8042=y
(optional but recommended)
Ignite shells out to a few dependencies on the host. With time, we aim to eliminate as many of these as possible.
containerd
for managing the containers Ignite uses (default, preferred)- Ubuntu package:
containerd
- CentOS package:
containerd.io
- From docker's repositories:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- From docker's repositories:
- Ubuntu package:
docker
for managing the containers Ignite uses (also installscontainerd
automatically)- Ubuntu package:
docker.io
- CentOS package:
docker
- Ubuntu package:
export CNI_VERSION=v0.9.1
export ARCH=$([ $(uname -m) = "x86_64" ] && echo amd64 || echo arm64)
curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | tar -xz -C /opt/cni/bin
mount
&umount
for mounting and unmounting block devices- Ubuntu package:
mount
(installed by default) - CentOS package:
util-linux
(installed by default)
- Ubuntu package:
tar
for extracting files from the docker image onto the filesystem- Ubuntu package:
tar
(installed by default) - CentOS package:
tar
(installed by default)
- Ubuntu package:
mkfs.ext4
for formatting a block device with a ext4 filesystem- Ubuntu package:
e2fsprogs
(installed by default) - CentOS package:
e2fsprogs
- Ubuntu package:
e2fsck
&resize2fs
for cleaning and resizing the ext4 filesystems- Ubuntu package:
e2fsprogs
(installed by default) - CentOS package:
e2fsprogs
- Ubuntu package:
strings
for detecting the kernel version- Ubuntu package:
binutils
- CentOS package:
binutils
(installed by default)
- Ubuntu package:
dmsetup
for managing device mapper snapshots and overlays- Ubuntu package:
dmsetup
- CentOS package:
device-mapper
(installed by default)
- Ubuntu package:
ssh
for SSH-ing into the VM (optional, forignite ssh
only)- Ubuntu package:
openssh-client
- CentOS package:
openssh-clients
- Ubuntu package:
git
for the GitOps mode of Ignite (optional, forignite gitops
only)- Ubuntu package:
git
- CentOS package:
git
- Ubuntu package: