macOS 호스트에서 QEMU 7.0을 사용하여 GPU/PCI-e를 Windows 게스트로 통과시키는 방법

macOS 호스트에서 QEMU 7.0을 사용하여 GPU/PCI-e를 Windows 게스트로 통과시키는 방법

저는 간단한 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[@]}"

시스템 정보에서 VendorIDProductIDWiFi 어댑터와 함께 사용한 모든 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를 단계적으로 폐지하고 있습니다.

관련 정보