Ich habe einen PC mit einer leistungsstarken Nvidia-GPU, die nur über eine einfache Windows-Anwendung zum Mining verwendet wird. Aus Liebe zu Hackintosh habe ich ein neues SATA-Laufwerk eingebaut und macOS Monterey 12.4 installiert. Jetzt läuft es problemlos über die integrierte GPU (Intel UHD Graphics 630). Da Nvidia nicht mit Monterey kompatibel ist und ich Windows nur zum Ausführen der Mining-App verwende, dachte ich daran, mit QEMU eine Windows-VM mit der Originalfestplatte und der Passthrough-Nvidia-GPU zu erstellen. Das hat jedoch nie funktioniert, da keine Kexts/Treiber für Nvidia geladen sind. Ich kenne den Befehl für das Passthrough-PCIe-Gerät nicht.
So boot-windows.sh
sieht die Datei aus:
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[@]}"
In den Systeminformationen kann ich VendorID
und ProductID
zum Weiterleiten an jedes USB-Gerät verwenden, das ich mit dem WLAN-Adapter verwendet habe.
Verwenden Sie den folgenden Befehl in den Argumenten
-device usb-host,vendorid=0x2357,productid=0x0109
Da es sich bei der Nvidia-GPU um eine PCIe-GPU (keine USB-GPU) handelt und keine Kexts geladen sind und es daher keine ProductID
Identifizierung dafür gibt, kann ich nicht dasselbe usb-host
Argument verwenden.
Meine Frage istSo leiten Sie die PCIe-GPU an den Windows-Gast weiter?
So sieht das endgültige Setup mit dem Windows 11-Gast aus, der auf dem virtio
Standard-VGA läuft.
Antwort1
Dies ist derzeit nicht möglich, da macOS kein direktes Äquivalent zum Kernel-Treiber und zur User Space-API von Linux hat vfio
, die Qemu nutzt, damit PCI(e)-Passthrough unter Linux funktioniert.
Es wäre möglich, diese Funktionalität als Kext zu implementieren, aber Apple schafft Kexts in neueren macOS-Versionen nach und nach ab.