Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SSD IOMMU Passthrough can't see drive on boot (but can during Windows 11 install)

Featured Replies

Hi everyone,

 

I'm making some update to the way my Windows 11 VM works and it seems like I can't get it to work properly. 

 

Previously, I was using a 1 TB NVME drive where I was binding the corresponding VFIO at boot of the corresponding IOMMU group. This worked really well and I was able to select "None" as my Primary vDisk Location.

 

Now, I decided to change my setup and little bit and want to use a SATA SSD as my main drive. I don't really care about my VM config so just decided to create a new one. I followed the same step, where I bind the corresponding VFIO at boot of the corresponding IOMMU group containing my SSD Drive. I have an MSI PRO B660-A DDR4 where all SATA ports are bound to 1 IOMMU group, which is fine, because I'm running my unraid array out of a separate LSI HBA card, so no issues there. In fact, it's even better because I'd love to pass not only a SATA SSD but some other SATA drives to my VM, so that would work.

 

IOMMU Group

 

I start the VM, jump right into the Windows 11 installer, I can see my drive just fine, go along with the Windows 11 installation until it succeeds.
Windows Installer can see the drive

Then, the VM restarts into the UEFI Interactive Shell, but I just can't see my drive. There is a few options, unfortunately, none seems to be corresponding to my SSD. At first, I thought maybe the binding was wrong, but then, the more I think about it, the more I was able to install Windows 11 on it, so the VM "should" be able to see it too right? 
UEFI Interactive Shell

 

From the UEFI Interactive Shell, I can type exit and then go to the BIOS Boot Manager, where I can see a few options.

 

  • Windows Boot Manager : Flickers briefly and brings me back to the same BIOS Boot Manager Menu.
  • EFI Internal Shell : Brings me back to the UEFI Interactive Shell.
  • UEFI QEMU DVD-ROM QM00001 : Boots the Windows 11 installation.
  • UEFI QEMU DVD-ROM QM00003 : Flickers briefly and brings me back to the same BIOS Boot Manager Menu.
  • UEFI PXEv4 : Tries to boot from a network attached devices.

 

Boot options available

 

I've tried playing around with the Logical CPUs, the Memory and a few other things. Here's what I currently have :

 

  • CPU Mode : Host Passthrough
  • Machine : Q35-7.1
  • BIOS : OVMF TPM
  • Enable USB Boot : No
  • Hyper-V : Yes
  • USB Controller : 3.0 (qemu XHCI)
  • Other PCI Devices : Intel Alder Lake-S PCH SATA Controller [AHCI Mode] | SATA controller (00:17.0)

 

VM Config 1

VM Config 2

 

Is there anything else in my IOMMU group that I should pass to the VM for it to be able to boot from my drive?

 

What am I missing?

 

Please see the attached screenshots for more detail.

 

Thank you!

 

Solved by SpaceInvaderOne

  • Solution

Don’t bind the SATA controller; simply pass the SSD directly.

Run this command in the terminal:

ls /dev/disk/by-id/

 

This will display a list of all the disks on the server by their ID number. For example, here's what it shows on my server (though I've only included one SSD disk for clarity)

 

root@BaseStar:~# ls /dev/disk/by-id/
ata-CT2000MX500SSD1_2117E5992883@
ata-CT2000MX500SSD1_2117E5992883-part1@


 

If you want to pass this SSD to the VM in the vdisk location in the vm template, instead of selecting "none", you should specify manual and put

 

/dev/disk/by-id/ata-CT2000MX500SSD1_2117E5992883
 

(Note that I removed the '@'). Here, I am passing the entire disk, not just a partition (the second listing of my disk you see ends with -part1).

I hope this helps!

  • Author

Thank you so much for replying. 

 

I’ve tried and it does indeed work. I was able to retrieve the ID using the unsigned device plugin too. 

 

Is using a vdisk slower than binding the IOMMU group? If I want to get the optimal performance, is this how I would achieve it? 

 

Thank you.

Hi, glad it's working. You won't see any difference in performance. You are not actually using a vdisk this way, you're directly passing the physical disk to the VM by its ID

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...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.