如何使用 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來傳遞任何與 WiFi 適配器一起使用的 USB 裝置。

在此輸入影像描述

在參數中使用以下命令

-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,Qemu 使用這些 API 來使 PCI(e) 直通在 Linux 上運作。

可以將這個功能當作 kext 來實現,但 Apple 正在逐漸在最近的 macOS 版本中淘汰 kext。

相關內容