Trouble booting windows vm from nvme drive.


Recommended Posts

Hello, 

 

Hoping ya'll can point me in the right direction, I seem to be missing something... I'll preface by saying at some point I had this working correctly but must have misconfigured something in my VM settings when I attempted to pass through a pcie GPU, and have been trying to create a new VM from scratch within unraid to get this to work again. 

 

So I originally followed one of Space Invader One's tutorials re: booting a windows vm from an nvme drive. It sounds like it was originally suggested to use a modified clover bootloader to get this working. Followed that and got everything running. Then I wanted to add a GPU and somehow things got out of whack - couldn't get any video output from the gpu. In troubleshooting that, I eventually got to the point where the GPU output a grey clover bootloader screen and nothing else. Then I read (or thought i read) somewhere that the clover bootloader is no longer necessary and to just have the vDisk set to none in the vm settings if you have the pci nvme drive passed through; So I did that in order to get rid of the bootloader screen but in doing so, I can start the vm but it wont boot into windows... I just get the screen in the attached picture. I am able to boot to windows bare-metal if I boot directly from the nvme drive on power-up, so I think the OS install seems to be okay. 

 

Was having that clover bootloader file necessary or am I missing something else? My vm settings xml is attached. Any guidance you could provide would be much appreciated. 

 

<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm'>
  <name>Windows 10</name>
  <uuid>4ac24777-d62c-393e-cd0a-27f204672118</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>1</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0'/>
  </cputune>
  <os>
    <type arch='x86_64' machine='pc-i440fx-4.2'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/4ac24777-d62c-393e-cd0a-27f204672118_VARS-pure-efi.fd</nvram>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough' check='none'>
    <topology sockets='1' cores='1' threads='1'/>
    <cache mode='passthrough'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='hypervclock' present='yes'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/virtio-win-0.1.173-2.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </controller>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:ff:71:8a'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='unix'>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0' keymap='en-us'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </hostdev>
    <memballoon model='none'/>
  </devices>
</domain>

 

Screenshot 2020-10-07 at 5.35.58 PM.png

Screenshot 2020-10-07 at 3.27.24 PM.png

Link to comment

Same issue, also with similar hardware (samsung NVME).

 

I previously had it working on different hardware, replaced mobo & processor, had to split up my IOMMU groups with ACS patch and now my NVME does the same as yours.

 

Works baremetal boot from BIOS, but windows seems to think theres no install there and tries to boot from ethernet, I eventually end up on the screen you're at.

Did you resolve it?

Link to comment
  • 1 year later...
On 10/15/2020 at 9:39 PM, Chamzamzoo said:

Works baremetal boot from BIOS, but windows seems to think theres no install there and tries to boot from ethernet, I eventually end up on the screen you're at.

 

So I was experimenting also with unraid and NVME - I'm sorry for resurrecting this old thread. I'm on latest 6.10.3 version (as of mid 2022)

After reading and watching tons of solutions I also tried modified clover EFI img file from Spaceinvader One.... aaaaaand it didn't work.

On boot it just shows empty screen with bios white and orange logo (what ever it's called there I forgot the word) 

So in XML view I've added  <boot order='1'/> in the corresponding NVME boot drive, for clover img I changed it to 2 and it worked like a charm, hope it helps other people.

Just for the record, I left clover img as primary manual image drive either, because why not? haven't even tried without it. 

with this VM (I will change later to proper virtual drive, just a quick hack to get it running while I'm experimenting) I have 2 NVMes and 2 HDDs passed-through (screens attached) 

 

Regards,

MarvinFS

 

winvm.png

2022-06-23_15-49-20.png

boot_order_xml.png

Edited by MarvinFS
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.