我有一台配備強大 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[@]}"
從系統資訊中,我可以使用VendorID
和ProductID
來傳遞任何與 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。