#!/bin/sh set -e cd /tmp # extract. BSD tar auto recognises compression, unlike GNU tar # only if stdin is a tty, if so need files volume mounted... [ -t 0 ] || bsdtar xzf - TGZ="$(find . -name '*.tgz' -or -name '*.tar.gz')" [ -n "$TGZ" ] && bsdtar xzf "$TGZ" EFI_ISO="$(find . -name '*efi.iso')" ISO="$(find . -name '*.iso')" RAW="$(find . -name '*.raw')" INITRD="$(find . -name '*.img')" KERNEL="$(find . -name vmlinuz64 -or -name '*bzImage')" CMDLINE="$(find . -name '*-cmdline')" if [ -n "$EFI_ISO" ] then ARGS="-pflash /usr/share/ovmf/bios.bin -usbdevice tablet -cdrom $EFI_ISO -boot d -drive file=systemdisk.img,format=raw" elif [ -n "$ISO" ] then ARGS="-cdrom $ISO -drive file=systemdisk.img,format=raw" elif [ -n "$RAW" ] then # should test with more drives ARGS="-drive file=$RAW,format=raw" elif [ -n "$KERNEL" ] then ARGS="-kernel $KERNEL" if [ -n "$INITRD" ] then ARGS="$ARGS -initrd $INITRD" fi ARGS="$ARGS -drive file=systemdisk.img,format=raw" else echo "no recognised boot media" >2 exit 1 fi echo "$ARGS" | grep -q systemdisk && qemu-img create -f raw systemdisk.img 256M if [ -n "${CMDLINE}" ] then APPEND="$(cat $CMDLINE)" else APPEND="$*" fi if [ -z "${APPEND}" ] then APPEND="console=ttyS0" fi if [ -z "$EFI_ISO" ] && [ -z "$ISO" ] then ARGS="-append \"${APPEND}\" ${ARGS}" fi eval qemu-system-x86_64 -machine q35,accel=kvm:tcg -device virtio-rng-pci -nographic -vnc none -m 1024 $ARGS