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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment