Как пробросить GPU/PCI-e с QEMU 7.0 на хосте macOS в гостевую систему Windows

Как пробросить GPU/PCI-e с QEMU 7.0 на хосте macOS в гостевую систему Windows

У меня есть ПК с мощным графическим процессором Nvidia, который используется для майнинга только через простое приложение Windows. Для моей любви к Hackintosh я установил новый диск SATA и установил macOS Monterey 12.4, и теперь он работает гладко через интегрированный графический процессор (Intel UHD Graphics 630). Поскольку Nvidia несовместима с Monterey, и поскольку я использую Windows только для запуска приложения для майнинга, я подумал использовать QEMU для создания виртуальной машины Windows с оригинальным жестким диском и сквозным графическим процессором Nvidia. Однако это так и не сработало, так как для 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для подключения любого USB-устройства, которое я использовал с адаптером WiFi.

введите описание изображения здесь

используя команду ниже в аргументах

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

Поскольку графический процессор Nvidia представляет собой PCIe (не USB) и поскольку на нем не загружены kexts, то для него нет ProductIDидентификации, я не могу использовать тот же usb-hostаргумент.

введите описание изображения здесь

Мой вопрос:как пробросить PCIe GPU в гостевую систему Windows?

Вот как выглядит окончательная настройка гостевой ОС Windows 11, работающей на virtioстандартном VGA.

введите описание изображения здесь

решение1

В настоящее время это невозможно, поскольку в macOS нет прямого эквивалента vfioдрайвера ядра Linux и API пользовательского пространства, которые Qemu использует для обеспечения работы сквозной передачи PCI(e) в Linux.

Эту функциональность можно было бы реализовать как kext, но Apple постепенно отказывается от kext в последних версиях macOS.

Связанный контент