blob: 638386b2e2767f6c78329a317c71d5a5bb4fd91a (
plain) (
tree)
|
|
#!/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"
|