Skip to content

Instantly share code, notes, and snippets.

@jvns
Created January 23, 2021 13:44
Show Gist options
  • Star 18 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save jvns/e13e6f498d26b584d8ab66651cdb04e0 to your computer and use it in GitHub Desktop.
Save jvns/e13e6f498d26b584d8ab66651cdb04e0 to your computer and use it in GitHub Desktop.
set -eu
[ -e hello-vmlinux.bin ] || wget https://s3.amazonaws.com/spec.ccfc.min/img/hello/kernel/hello-vmlinux.bin
[ -e hello-rootfs.ext4 ] || wget -O hello-rootfs.ext4 https://github.com/firecracker-microvm/firecracker-demo/raw/master/xenial.rootfs.ext4
[ -e hello-id_rsa ] || wget -O hello-id_rsa https://raw.githubusercontent.com/firecracker-microvm/firecracker-demo/ec271b1e5ffc55bd0bf0632d5260e96ed54b5c0c/xenial.rootfs.id_rsa
TAP_DEV="fc-88-tap0"
# set up the kernel boot args
MASK_LONG="255.255.255.0"
FC_IP="172.17.0.21"
GATEWAY_IP="172.17.0.1"
FC_MAC="02:FC:00:00:00:05"
KERNEL_BOOT_ARGS="ro console=ttyS0 noapic reboot=k panic=1 pci=off nomodules random.trust_cpu=on"
KERNEL_BOOT_ARGS="${KERNEL_BOOT_ARGS} ip=${FC_IP}::${GATEWAY_IP}:${MASK_LONG}::eth0:off"
ip link del "$TAP_DEV" 2> /dev/null || true
ip tuntap add dev "$TAP_DEV" mode tap
sysctl -w net.ipv4.conf.${TAP_DEV}.proxy_arp=1 > /dev/null
sysctl -w net.ipv6.conf.${TAP_DEV}.disable_ipv6=1 > /dev/null
sudo brctl addif docker0 $TAP_DEV
ip link set dev "$TAP_DEV" u
cat <<EOF > vmconfig.json
{
"boot-source": {
"kernel_image_path": "hello-vmlinux.bin",
"boot_args": "$KERNEL_BOOT_ARGS"
},
"drives": [
{
"drive_id": "rootfs",
"path_on_host": "hello-rootfs.ext4",
"is_root_device": true,
"is_read_only": false
}
],
"network-interfaces": [
{
"iface_id": "eth0",
"guest_mac": "$FC_MAC",
"host_dev_name": "$TAP_DEV"
}
],
"machine-config": {
"vcpu_count": 2,
"mem_size_mib": 1024,
"ht_enabled": false
}
}
EOF
firecracker --no-api --config-file vmconfig.json
@dps
Copy link

dps commented Feb 6, 2022

Hey Julia - I hope you are well. Your firecracker guide is great! In this script, I think line 24 should end in "up" instead of "u" - missing char there. The script works OK with "up", without it you get:

Error: either "dev" is duplicate, or "u" is a garbage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment