#!/usr/bin/env bash

if [[ "${XK_MAC}" == "random" ]]; then
	XK_MAC=$(echo -n "52:54:00" && hexdump -n3 -e '/1 ":%02x"' /dev/urandom)
fi

XK_VECTORS=$((XK_CPU * 2 + 2))

ROOTFS=/run/xk/${1}/rootfs

CID=${$}
echo ${CID} >/run/xk/${1}/meta/cid
echo ${1} container ID is ${CID}

exec qemu-system-x86_64 \
	-name ${1} \
	-display none \
	-serial stdio \
	-nodefaults \
	-machine q35,accel=kvm -cpu max \
	-smp cores=${XK_CPU},threads=1,sockets=1 \
	-m ${XK_MEM} \
	-device pvpanic \
	-device virtio-rng \
	-device vhost-vsock-pci,guest-cid=${CID},disable-legacy=on \
	-netdev user,id=net0,hostname=${1},hostfwd=${XK_PORT} -device virtio-net,mac=${XK_MAC},netdev=net0,mq=on,vectors=${XK_VECTORS} \
	-fsdev local,id=fs0,path=${ROOTFS},security_model=none,writeout=immediate \
	-device virtio-9p-pci,fsdev=fs0,mount_tag=/dev/root \
	-kernel /usr/libexec/xk-project/runtime/xk-kernel/bzImage \
	-append "init=/bin/init threadirqs console=ttyS0,115200 loglevel=6 root=/dev/root rw rootfstype=9p rootflags=trans=virtio,version=9p2000.L ip=dhcp"
