![Cómo pasar GPU/PCI-e con QEMU 7.0 en un host macOS a un invitado de Windows](https://rvso.com/image/1671489/C%C3%B3mo%20pasar%20GPU%2FPCI-e%20con%20QEMU%207.0%20en%20un%20host%20macOS%20a%20un%20invitado%20de%20Windows.png)
Tengo una PC con una potente GPU Nvidia que se utiliza para minar únicamente a través de una sencilla aplicación de Windows. Por mi amor por Hackintosh, instalé una nueva unidad SATA e instalé macOS Monterey 12.4 y ahora funciona sin problemas a través de la GPU integrada (Intel UHD Graphics 630). Dado que Nvidia no es compatible con Monterey y que uso Windows solo para ejecutar la aplicación de minería, pensé en usar QEMU para crear una máquina virtual de Windows con el disco duro original y la GPU Nvidia de paso. Sin embargo, eso nunca funcionó, ya que no hay kexts/controladores cargados para Nvidia. No conozco el comando para el dispositivo PCIe de paso.
Así es como boot-windows.sh
se ve el archivo:
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[@]}"
Desde Información del sistema puedo usar VendorID
y ProductID
para pasar a través de cualquier dispositivo USB, que usé con el adaptador WiFi.
usando el siguiente comando en los argumentos
-device usb-host,vendorid=0x2357,productid=0x0109
Dado que la GPU Nvidia es PCIe (no USB), y dado que no tiene kexts cargados, por lo que no hay ProductID
ningún identificador, no puedo usar el mismo usb-host
argumento.
Mi pregunta escómo pasar la GPU PCIe al invitado de Windows?
Así es como se ve la configuración final con el invitado de Windows 11 ejecutándose en el virtio
vga estándar.
Respuesta1
Actualmente, esto no es posible, macOS no tiene un equivalente directo al vfio
controlador del kernel de Linux y a la API de espacio de usuario, que Qemu consume para que el paso PCI(e) funcione en Linux.
Sería posible implementar esta funcionalidad como un kext., pero Apple está eliminando gradualmente los kexts en versiones recientes de macOS.