From ba3e8345ad335120af6de680766436640f9c3bd3 Mon Sep 17 00:00:00 2001
From: nl6720 <nl6720@gmail.com>
Date: Mon, 17 Aug 2020 20:33:50 +0300
Subject: [PATCH] scripts/run_archiso.sh: support booting the image as a hard
 disk or an optical disc

Use virtio-scsi to attach the image. virtio-blk (if=virtio) is inconsistent about the used media type.
---
 scripts/run_archiso.sh | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/scripts/run_archiso.sh b/scripts/run_archiso.sh
index 5405ded8..1ce00cf7 100755
--- a/scripts/run_archiso.sh
+++ b/scripts/run_archiso.sh
@@ -22,6 +22,7 @@ Usage:
 
 Options:
     -b              set boot type to 'BIOS' (default)
+    -d              set image type to hard disk instead of optical disc
     -h              print help
     -i [image]      image to boot into
     -s              use Secure Boot (only relevant when using UEFI)
@@ -80,7 +81,9 @@ run_image() {
         -m "size=3072,slots=0,maxmem=$((3072*1024*1024))" \
         -k en \
         -name archiso,process=archiso_0 \
-        -drive file="${image}",media=cdrom,readonly=on,if=virtio \
+        -device virtio-scsi-pci,id=scsi0 \
+        -device "scsi-${mediatype%rom},bus=scsi0.0,drive=${mediatype}0" \
+        -drive "id=${mediatype}0,if=none,format=raw,media=${mediatype/hd/disk},readonly=on,file=${image}" \
         -display sdl \
         -vga virtio \
         -device virtio-net-pci,romfile=,netdev=net0 -netdev user,id=net0 \
@@ -105,17 +108,21 @@ set_image() {
 
 image=''
 boot_type='bios'
+mediatype='cdrom'
 secure_boot='off'
 qemu_options=()
 working_dir="$(mktemp -dt run_archiso.XXXXXXXXXX)"
 trap cleanup_working_dir EXIT
 
 if (( ${#@} > 0 )); then
-    while getopts 'bhi:su' flag; do
+    while getopts 'bdhi:su' flag; do
         case "$flag" in
             b)
                 boot_type='bios'
                 ;;
+            d)
+                mediatype='hd'
+                ;;
             h)
                 print_help
                 exit 0
-- 
GitLab