![macOS 호스트에서 QEMU 7.0을 사용하여 GPU/PCI-e를 Windows 게스트로 통과시키는 방법](https://rvso.com/image/1671489/macOS%20%ED%98%B8%EC%8A%A4%ED%8A%B8%EC%97%90%EC%84%9C%20QEMU%207.0%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20GPU%2FPCI-e%EB%A5%BC%20Windows%20%EA%B2%8C%EC%8A%A4%ED%8A%B8%EB%A1%9C%20%ED%86%B5%EA%B3%BC%EC%8B%9C%ED%82%A4%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
저는 간단한 Windows 애플리케이션을 통해서만 채굴에 사용되는 강력한 Nvidia GPU가 탑재된 PC를 가지고 있습니다. Hackintosh를 사랑하는 마음으로 새 SATA 드라이브를 설치하고 macOS Monterey 12.4를 설치했는데 이제 통합 GPU(Intel UHD Graphics 630)를 통해 원활하게 실행되고 있습니다. Nvidia는 Monterey와 호환되지 않고, 채굴 앱 실행에만 Windows를 사용하기 때문에 QEMU를 사용하여 원래 하드 드라이브와 Passthrough 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 장치를 통과시킬 수 있습니다.
args에서 아래 명령을 사용하여
-device usb-host,vendorid=0x2357,productid=0x0109
Nvidia GPU는 USB가 아닌 PCIe이고 로드된 kext가 없으므로 ProductID
식별할 수 없으므로 동일한 인수를 사용할 수 없습니다 usb-host
.
내 질문은PCIe GPU를 Windows 게스트로 패스스루하는 방법?
표준 vga 에서 실행되는 Windows 11 게스트의 최종 설정은 다음과 같습니다 virtio
.
답변1
vfio
이는 현재 불가능합니다. macOS에는 Qemu가 Linux에서 PCI(e) 패스스루 작업을 수행하기 위해 사용하는 Linux 커널 드라이버 및 사용자 공간 API와 직접적으로 동등한 기능이 없습니다 .
이 기능을 kext로 구현하는 것이 가능할 것입니다., 그러나 Apple은 최근 macOS 버전에서 kext를 단계적으로 폐지하고 있습니다.