BdsDxe failed to start Boot0001 Error after running windows-virsh.sh
I have followed the guide for windows-virsh.sh as best I could, I think I've done everything right but it seems the VM cannot find the windows.iso, or any of the devices.
Here's the error in a picture - https://i.redd.it/znnubknur0941.jpg
Here's my config
## User
VM_USER=kieran
## IOMMU groups
IOMMU_GPU="09:00.0"
IOMMU_GPU_AUDIO="09:00.1"
## For extracting the VBIOS
VBIOS_EXTRACT_PATH=/root/VBIOS.rom
NVFLASH=/root/nvflash_linux
extract_videobusid="0000:09:00.0"
## Virsh devices
VIRSH_GPU=pci_0000_09_00_0
VIRSH_GPU_AUDIO=pci_0000_09_00_1
# PCI BUS ID
videoid="0de 1b81"
audioid="10de:10f0"
videobusid="0000:$IOMMU_GPU"
audiobusid="0000:$IOMMU_GPU_AUDIO"
## QEMU options
RAM=8G
CORES=8
MACOS_RAM=8G
MACOS_CORES=4
## Network
TAP_INTERFACE=tap0
TAP_IP="10.10.10.1/24"
DNSMASQ_CONF="${BASH_SOURCE%/*}/dnsmasq.conf"
SMB_CONF="${BASH_SOURCE%/*}/smb.conf"
## Log file
LOG=/home/$VM_USER/qemu_log.txt
## Local path for storage
IMAGES=/home/$VM_USER/VM
## VBIOS
VBIOS=$IMAGES/VBIOS.rom
## Windows
VIRTIO=$IMAGES/virtio.iso
#WINDOWS_ISO=$IMAGES/win10.iso
WINDOWS_ISO=/home/kieran/VM/win10.iso
WINDOWS_IMG=$IMAGES/windows.qcow2
OVMF=/usr/share/ovmf/x64/OVMF_CODE.fd
OVMF_VARS=/usr/share/ovmf/x64/OVMF_VARS.fd
## MacOS
MACOS_ISO=$IMAGES/mojave.iso
MACOS_IMG=$IMAGES/mojave.qcow2
MACOS_CLOVER=$IMAGES/clover.qcow2
MACOS_OVMF=$IMAGES/MACOS_OVMF_CODE.fd
MACOS_OVMF_VARS=$IMAGES/MACOS_OVMF_VARS.fd
MACOS_OPTIONS="+pcid,+ssse3,+sse4.2,+popcnt,+aes,+xsave,+avx,+xsaveopt,avx2,+smep,check"
## Ulimit
ULIMIT=$(ulimit -a | grep "max locked memory" | awk '{print $6}')
ULIMIT_TARGET=$(( $(echo $RAM | tr -d 'G')*1048576+100000 ))
Here's the script
#!/bin/bash
## Check if the script was executed as root
[[ "$EUID" -ne 0 ]] && echo "Please run as root" && exit 1
## Load the config file
source "${BASH_SOURCE%/*}/config"
## Check libvirtd
[[ $(systemctl status libvirtd | grep running) ]] || systemctl start libvirtd && sleep 1 && LIBVIRTD=STOPPED
## Memory lock limit
[[ $ULIMIT != $ULIMIT_TARGET ]] && ulimit -l $ULIMIT_TARGET
## Kill the Display Manager
systemctl stop sddm
sleep 1
## Kill the console
echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
## Detach the GPU
virsh nodedev-detach $VIRSH_GPU > /dev/null 2>&1
virsh nodedev-detach $VIRSH_GPU_AUDIO > /dev/null 2>&1
## Load vfio
modprobe vfio-pci
## QEMU (VM) command
qemu-system-x86_64 -runas $VM_USER -enable-kvm \
-nographic -vga none -parallel none -serial none \
-enable-kvm \
-m $RAM \
-cpu host,kvm=off,hv_relaxed,hv_spinlocks=0x1fff,hv_time,hv_vapic,hv_vendor_id=0xDEADBEEFFF \
-rtc clock=host,base=localtime \
-smp $CORES,sockets=1,cores=$(( $CORES / 2 )),threads=2 \
-device vfio-pci,host=$IOMMU_GPU,multifunction=on,x-vga=on,romfile=$VBIOS \
-device vfio-pci,host=$IOMMU_GPU_AUDIO \
-device virtio-net-pci,netdev=n1 \
-netdev user,id=n1 \
-drive if=pflash,format=raw,readonly,file=$OVMF \
-drive media=cdrom,file=$WINDOWS_ISO,id=cd1,if=none \
-device ide-cd,bus=ide.1,drive=cd1 \
-drive media=cdrom,file=$VIRTIO,id=cd2,if=none \
-device ide-cd,bus=ide.1,drive=cd2 \
-device virtio-scsi-pci,id=scsi0 \
-device scsi-hd,bus=scsi0.0,drive=rootfs \
-drive id=rootfs,file=$WINDOWS_IMG,media=disk,format=qcow2,if=none >> $LOG 2>&1 &
## Wait for QEMU
wait
## Unload vfio
modprobe -r vfio-pci
modprobe -r vfio_iommu_type1
modprobe -r vfio
## Reattach the GPU
virsh nodedev-reattach $VIRSH_GPU_AUDIO > /dev/null 2>&1
virsh nodedev-reattach $VIRSH_GPU > /dev/null 2>&1
## Reload the framebuffer and console
echo 1 > /sys/class/vtconsole/vtcon0/bind
nvidia-xconfig --query-gpu-info > /dev/null 2>&1
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
## Reload the Display Manager
systemctl start sddm
## If libvirtd was stopped then stop it
[[ $LIBVIRTD == "STOPPED" ]] && systemctl stop libvirtd
## Restore ulimit
ulimit -l $ULIMIT
What did I miss?
Edited by Yuri