#!/bin/bash -eu ISO="$1"; shift DISK="$HOME/${ISO%.*}.qcow2" RAM="$(free -g | awk '/^Mem:/{t=$2 / 2; print(t < 2 ? 2 : t)"G"}')" if ! [ -f "$ISO" ]; then echo "$ISO does not exist" >&2 exit 1 fi if ! [ -f "$DISK" ]; then (set -x qemu-img create -f qcow2 "$DISK" 64G ) fi (set -x qemu-system-x86_64 \ -accel kvm \ -M q35 \ -bios /usr/share/edk2/x64/OVMF.4m.fd \ -monitor stdio \ -smp "$(nproc --ignore 4)" \ -m "$RAM" \ -vga virtio \ -audio pipewire,model=hda \ -nic model=virtio-net-pci,type=user \ -device qemu-xhci \ -object "memory-backend-ram,id=mem,size=$RAM,share=on" \ -numa node,memdev=mem \ -drive "if=virtio,file=$DISK" \ -drive "file=$ISO,media=cdrom,readonly=on" \ "$@" )