Firm up the iso boot variant.
[rrq/tiniest.git] / vm.sh
diff --git a/vm.sh b/vm.sh
index 74274e606fbc6839c9a64d08fae61fbc332e806d..5d8b79c98fdb1b7b762fe6317971dd1b22fcf8e3 100755 (executable)
--- a/vm.sh
+++ b/vm.sh
@@ -1,19 +1,73 @@
 #!/bin/bash
 #
-# QEMU setup for trial3 VM
+# QEMU setup for trial VM
 
-if [ -n "$EFI" ] ; then
-   BOOT="-bios /usr/share/OVMF/OVMF_CODE.fd"
+N="12345678"
+if [ ${#1} = 1 ] && [ "${N#*$1}" != "$N" ] ; then
+    REPLY=$1
 else
-    BOOT="-boot menu=on"
+    VARIANT=(
+       "use bootimage.raw as harddisk with legacy boot (and boot menu)"
+       "use bootimage.raw as harddisk with UEFI boot"
+       "use tiniest.iso as harddisk with legacy boot (and boot menu)"
+       "use tiniest.iso as harddisk with UEFI boot"
+       "use tiniest.iso as cdrom with legacy boot (and boot menu)"
+       "use tiniest.iso as cdrom with UEFI boot"
+       "use tiniest.iso as USB disk with legacy boot (and boot menu)"
+       "use tiniest.iso as USB disk with UEFI boot"
+    )
+
+    select V in "${VARIANT[@]}" ; do
+       [ -z "$V" ] || break
+    done
 fi
+[ -z "$REPLY" ] && exit 0
+
+FILE=bootimage.raw
+[ $REPLY -ge 3 ] && FILE=tiniest.iso
+MEDIA=disk
+[ $REPLY -ge 5 ] && MEDIA=cdrom
+[ $REPLY -ge 7 ] && MEDIA=usb
+
+case "$MEDIA" in
+    disk)
+       DISK2="-drive index=1,format=raw,media=$MEDIA,file=$FILE"
+       ;;
+    usb)
+       USB="
+        -device qemu-xhci,id=xhci
+        -drive if=none,id=stick,format=raw,media=disk,file=${FILE}
+        -device usb-storage,bus=xhci.0,port=1,drive=stick
+       "
+       ;;
+    cdrom*)
+       DISK2="-drive index=1,format=raw,media=$MEDIA,file=$FILE"
+       ;;
+esac
+
+BOOT="-boot menu=on,splash=boot.jpg,splash-time=60000"
+[ $(( $REPLY % 2 )) -eq 0 ] &&  BOOT="-bios /usr/share/OVMF/OVMF_CODE.fd"
+
+case "$NET" in
+    vde)
+       NET="-net nic,model=e1000 -net vde,sock=/run/vde.ctl"
+       ;;
+    *)
+       NET=
+       ;;
+esac
+
+[ -e disk.raw ] || dd if=/dev/zero of=disk.raw bs=1G count=0 seek=8
+
 ARGS=(
-    -m 2G -M pc,accel=kvm -cpu host
-    -serial mon:stdio -echr 0x1c
-    -vga qxl
+    -m 2G -M pc,accel=kvm -cpu host -vga qxl
+    -serial mon:stdio -echr 0x1c # Using ^\ as meta character
     $BOOT
     -drive index=0,id=disk,media=disk,format=raw,file=disk.raw
-    -drive index=1,id=boot,media=disk,format=raw,file=bootimage.raw
+    $DISK2
+    $USB
+    $NET
 )
+echo "${ARGS[*]}" | sed "s/ -/\n -/g"
 
-qemu-system-x86_64 ${ARGS[@]}
+exec qemu-system-x86_64 ${ARGS[@]}