diff options
Diffstat (limited to '.local/bin')
-rwxr-xr-x | .local/bin/livevm | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/.local/bin/livevm b/.local/bin/livevm new file mode 100755 index 0000000..638386b --- /dev/null +++ b/.local/bin/livevm @@ -0,0 +1,61 @@ +#!/bin/sh + +data_dir="${XDG_DATA_HOME:-${HOME}/.local/share}/vm" +storage="${data_dir}/livevm.qcow2" + +# allocate half of available memory and cores to vm +mem="$(($(cat /proc/meminfo | grep MemAvailable | grep -o '[0-9]*')/2))" +cores="$(($(nproc)/2))" +cmd="qemu-system-x86_64 -boot menu=on -enable-kvm -device intel-hda -device hda-duplex -m ${mem}k -cpu host -smp $cores -drive file=$storage" + +[ ! -d "${data_dir}" ] && + mkdir -p "${data_dir}" +[ ! -f "$storage" ] && + qemu-img create -f qcow2 livevm.img 30G + +while getopts "wehc:d:" f +do + case "$f" in + w) + cmd="${cmd} -device qxl -display gtk" + ;; + e) + [ ! -f "/usr/share/edk2-ovmf/x64/OVMF_CODE.fd" ] && + die "ovmf not found, install it" + + [ ! -f "${data_dir}/OVMF_VARS.fd" ] && + cp "/usr/share/edk2-ovmf/x64/OVMF_CODE.fd" "${data_dir}/OVMF_VARS.fd" + + cmd="${cmd} -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd" + cmd="${cmd} -drive if=pflash,format=raw,file=${data_dir}/OVMF_VARS.fd" + ;; + c) + cmd="${cmd} -cdrom ${OPTARG}" + ;; + d) + cmd="${cmd} -drive file=${OPTARG}" + ;; + h) + cat <<- EOF + Usage: ${0##*/} command + a wrapper for qemu + Commands: + -e use efi + -w run wangblows + -c [cdrom] + -d [drive] + EOF + exit + ;; + ?) + echo "usage: ${0##*/} [ -weh ] [ -c cdrom ] [ -d drive ]" + exit 1 + ;; + esac +done + +# use virgl by default if wangblows is not set +[ -n "${cmd##*device qxl*}" ] && + cmd="${cmd} -device virtio-vga-gl -display gtk,gl=on" + +eval "$cmd" |