如何使用 macOS 主机上的 QEMU 7.0 直通 GPU/PCI-e 到 Windows 客户机

如何使用 macOS 主机上的 QEMU 7.0 直通 GPU/PCI-e 到 Windows 客户机

我有一台配备强大 Nvidia GPU 的 PC,仅通过简单的 Windows 应用程序即可进行挖矿。出于对 Hackintosh 的热爱,我安装了一个新的 SATA 驱动器并安装了 macOS Monterey 12.4,现在它可以通过集成 GPU(Intel UHD Graphics 630)顺利运行。由于 Nvidia 与 Monterey 不兼容,而且我仅使用 Windows 运行挖矿应用程序,所以我想使用 QEMU 创建一个带有原始硬盘和直通 Nvidia GPU 的 Windows VM。然而,这从未奏效,因为没有为 Nvidia 加载 kexts/驱动程序。我不知道直通 PCIe 设备的命令。

boot-windows.sh文件如下所示:

DISK="/dev/disk1"
OVMFDIR="usr/share/edk2/ovmf" #for enabling secure EFI boot
diskutil umountDisk "$DISK" #to make sure it's forcibly unmounted
MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"
ALLOCATED_RAM="8G" #GB

args=(
  -m "$ALLOCATED_RAM"
  -vga virtio
  -display cocoa
  -usb
  -device usb-tablet
  -smp 4,cores=4,sockets=2
  -drive if=ide,index=2,file="$DISK",format=raw
  -machine type=q35
  -accel hvf
  #-drive file=/Volumes/OSes/win/21H1.iso,media=cdrom,index=0
  #-drive file=virtio-win-0.1.208.iso,media=cdrom
  -nic user,model=virtio
  -rtc base=localtime,clock=host
  -cpu Nehalem,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time 
  -device intel-hda
  -drive if=pflash,format=raw,readonly=on,file="$OVMFDIR"/OVMF_CODE.fd
  -drive if=pflash,format=raw,readonly=on,file="$OVMFDIR"/OVMF_VARS.fd
  -boot c
)

qemu-system-x86_64 "${args[@]}"

从系统信息中,我可以使用VendorIDProductID直通任何 USB 设备,我将其与 WiFi 适配器一起使用。

在此处输入图片描述

在参数中使用以下命令

-device usb-host,vendorid=0x2357,productid=0x0109

由于 Nvidia GPU 是 PCIe(不是 USB),并且没有加载 kext,因此没有ProductID识别它,我无法使用相同的usb-host参数。

在此处输入图片描述

我的问题是如何将 PCIe GPU 直通至 Windows 客户机

这是在标准 vga 上运行的 Windows 11 客户机的最终设置的样子virtio

在此处输入图片描述

答案1

目前这是不可能的,macOS 没有与 Linux 的vfio内核驱动程序和用户空间 API 直接等效的 API,Qemu 使用这些 API 来实现 PCI(e) 直通在 Linux 上工作。

可以将此功能作为 kext 实现,但 Apple 在最近的 macOS 版本中正在逐步淘汰 kext。

相关内容