From dee050f39c72d07edbc34bc4c13e8dbb6c3c89b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sp=C3=B6hel?= Date: Mon, 19 Apr 2021 10:50:05 +0200 Subject: Reading VM related variables from config file. --- libexec/container/start-qemu | 52 +++++++++++++++++++++++++++++-------- share/doc/examples/eos-vm.conf | 59 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 11 deletions(-) create mode 100644 share/doc/examples/eos-vm.conf diff --git a/libexec/container/start-qemu b/libexec/container/start-qemu index 491278c..e27df60 100755 --- a/libexec/container/start-qemu +++ b/libexec/container/start-qemu @@ -125,12 +125,6 @@ case "${NAME}" in ;; esac -if [ ! -e "${MACHINES}/${NAME}.img" ] -then - echo "'${NAME}': no such vm" >&2 - exit 1 -fi - case "${START}" in false) STATE="$(machinectl show ${NAME} 2>&1 | awk -FState= '/^State=/ { print $2 }')" @@ -228,8 +222,41 @@ then esac DIRECTORY="$(awk -Fdirectory= '/^directory=/ { print $2 }' ${CONFIG}/${NAME}.conf || echo ${MACHINES}/${NAMES})" - DIRECTORY="-drive file=${DIRECTORY}.img,format=raw,if=virtio" + DRIVE="" + DRIVES="$(awk -Fdrive= '/^drive=/ { print $2 }' ${CONFIG}/${NAME}.conf)" + + case "${DRIVES}" in + "") + ;; + + *) + for DRIVE_ITEM in ${DRIVES} + do + DRIVE="${DRIVE} -drive ${DRIVE_ITEM}" + done + ;; + esac + + MEMORY="-m $(awk -Fmemory= '/^memory=/ { print $2 }' ${CONFIG}/${NAME}.conf)" + + SERIAL="-serial $(awk -Fserial= '/^serial=/ { print $2 }' ${CONFIG}/${NAME}.conf)" + # FIXME empty + + RAW_OPTIONS="$(awk -Fraw-options= '/^raw-options=/ { print $2 }' ${CONFIG}/${NAME}.conf)" + # FIXME empty + + BIOS_FILE="$(awk -Fbios= '/^bios=/ { print $2 }' ${CONFIG}/${NAME}.conf)" + + case "${BIOS_FILE}" in + "") + BIOS="" + ;; + + *) + BIOS="-bios ${BIOS_FILE}" + ;; + esac DROP_CAPABILITY="$(awk -Fdrop-capability= '/^drop-capability=/ { print $2 }' ${CONFIG}/${NAME}.conf)" case "${DROP_CAPABILITY}" in @@ -268,8 +295,9 @@ then for VETH in ${VETHS} do INTERFACE="$(echo ${VETH} | awk -F: '{ print $1 }')" + INTERFACE_ID="$(echo ${VETH} | awk -F: '{ print $2 }')" - NETWORK_VETH_EXTRA="${NETWORK_VETH_EXTRA} -netdev tap,id=${INTERFACE},ifname=${INTERFACE},script=no,downscript=no -device virtio-net-pci,netdev=${INTERFACE}" + NETWORK_VETH_EXTRA="${NETWORK_VETH_EXTRA} -netdev tap,id=${INTERFACE_ID},ifname=${INTERFACE},script=no,downscript=no -device virtio-net-pci,netdev=${INTERFACE_ID}" if [ "$(echo ${INTERFACE} | wc -c)" -gt 15 ] then @@ -400,11 +428,13 @@ case "${START}" in qemu-system-x86_64 \ -machine accel=kvm:tcg \ - ${DIRECTORY} \ - -m 4G \ + ${DRIVE} \ + ${MEMORY} \ -name ${NAME} \ ${NETWORK_VETH_EXTRA} \ - -bios /usr/share/qemu/OVMF.fd + ${BIOS} \ + ${SERIAL} \ + ${RAW_OPTIONS} case "${VERBOSE}" in true) diff --git a/share/doc/examples/eos-vm.conf b/share/doc/examples/eos-vm.conf new file mode 100644 index 0000000..71d2913 --- /dev/null +++ b/share/doc/examples/eos-vm.conf @@ -0,0 +1,59 @@ +# compute-tools: eos1 + +[start] +cnt.auto=false +cnt.container-server=fuchur +cnt.overlay= +cnt.overlay-options= +bind= +bind-ro= +boot=yes +capability= +directory=/var/lib/machines/eos1 +drop-capability= +link-journal=no +machine=test +private-users=no +register=yes +memory=2G +bios= +serial=telnet::3355,server,nowait +raw-options=-usb -boot d +drive=file=/home/simon/downloads/Aboot-veos-serial-8.0.0.iso,index=2,media=cdrom +drive=file=/home/simon/downloads/vEOS-lab-4.25.3M.vmdk,index=0,media=disk,if=ide +network-veth-extra=tap-ma1:ma1 +cnt.network-bridge=tap-ma1:bridge-oob +network-veth-extra=tap-et1:et1 +network-veth-extra=tap-et2:et2 +network-veth-extra=tap-et3:et3 +network-veth-extra=tap-et4:et4 +network-veth-extra=tap-et5:et5 +network-veth-extra=tap-et6:et6 +network-veth-extra=tap-et7:et7 +network-veth-extra=tap-et8:et8 +network-veth-extra=tap-et9:et9 +network-veth-extra=tap-et10:et10 +network-veth-extra=tap-et11:et11 +network-veth-extra=tap-et12:et12 +network-veth-extra=tap-et13:et13 +network-veth-extra=tap-et14:et14 +network-veth-extra=tap-et15:et15 +network-veth-extra=tap-et16:et16 +network-veth-extra=tap-et17:et17 +network-veth-extra=tap-et18:et18 +network-veth-extra=tap-et19:et19 +network-veth-extra=tap-et20:et20 +network-veth-extra=tap-et21:et21 +network-veth-extra=tap-et22:et22 +network-veth-extra=tap-et23:et23 +network-veth-extra=tap-et24:et24 + +[limit] +BlockIODeviceWeight= +BlockIOReadBandwidth= +BlockIOWeight= +BlockIOWriteBandwidth= +CPUQuota= +CPUShares= +MemoryLimit= +TasksMax= -- cgit v1.2.3