Skip to content

GPU passthrough funziona con il firmware UEFI ma non con la iso di Windows

Dopo aver consultato esperti in questo campo, programmatori di diverse aree e professori, abbiamo trovato la risposta alla domanda e la lasciamo riflessa in questo post.

Soluzione:

Sei già sulla strada giusta. Il GPU Passthrough non è perfetto, specialmente se si tratta di una scheda NVidia (di cui non si parla di NVidia o AMD). Terminare la configurazione nella finestra Qemu. Assicurarsi che la macchina Windows sia connessa a Internet e lasciare che Windows Update installi i driver grafici. Quando si torna indietro si dovrebbe essere accolti da un secondo monitor; in caso contrario, riavviare. Di solito rimuovo la console spice/vnc e collego solo il monitor della GPU. Per far funzionare il GPU Passthrough è necessario procedere per tentativi.

Altre cose da provare:

  • Installare Windows senza GPU Passthrough, quindi provare a passare la GPU.
  • Installare i driver tramite NVidia_drivers.exe
  • Installare i driver tramite Windows Update
  • Bios vs UEFI
  • Q35 vs i440fx

Nota: il codice 43 è un errore noto di NVidia relativo ai driver NVidia che verificano se sono in esecuzione in una macchina virtuale. NVidia vende schede specifiche per l'esecuzione in un ambiente VM e tenta di bloccare l'installazione dei driver per le schede consumer in una VM. È necessario assicurarsi di utilizzare quanto segue nel proprio domain.xml


 

Vedere https://passthroughpo.st/apply-error-43-workaround/ e altre risorse per gli esempi.

Ecco una schermata della mia configurazione:

QEMU GPU Passtrough Settings

Ecco la parte "rilevante" del mio domain.xml, posso condividerlo interamente se volete, ma contiene un mucchio di cose inutili.

  
    hvm
    /usr/share/edk2/ovmf/OVMF_CODE.fd
    /var/lib/libvirt/qemu/nvram/Windows10_VARS.fd
    
  
  
    
    
    
      
    
    
  
  
    
    
    
  

L'ho fatto con questo:

sudo qemu-system-x86_64 --enable-kvm 
-name TESTVM,process=TESTVM 
-drive id=disk0,if=virtio,cache=none,format=raw,file=/dev/nvme-tank/ntfs-zvol,index=2 
-smp 4 
-cpu core2duo,kvm=off 
-m 4096 
-device vfio-pci,host=43:00.0,multifunction=on 
-device vfio-pci,host=43:00.1 
-drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd 
-drive if=pflash,format=raw,file=/usr/share/OVMF/OVMF_VARS.fd 

e poi andando alla voce GTX 1070 in Gestione dispositivi e aggiornando i driver. L'ultima volta (usando virt-install) ho installato gli aggiornamenti dal sito web di NVIDIA. Ora per far funzionare questo con virt-install in modo da avere un dominio XML modificabile.

Edit: Finora, usando virt-install, ho ottenuto (di nuovo) la schermata di Tiano, ma questa volta l'installazione dei driver come descritto sopra non è stata sufficiente, né ha funzionato importare l'installazione di cui sopra usando virt-install (come nota a margine, mi ci è voluto un po' per capire che tutto quello che dovevo fare per far funzionare virt-install con la mia installazione esistente era includere l'iso di avvio, permettendogli di avviarsi dall'installazione senza errori).

Edit: Quindi, credo di averlo fatto funzionare ora.

  1. Eseguire l'installazione iniziale usando il precedente qemu-system-x86_64
  2. Aggiornare i driver usando Gestione dispositivi
  3. Poi fare virt-install (ma ottenere di nuovo l'errore 43):

    virt-install
    --nome myWINVM1
    --boot uefi
    --ram 4096
    --features kvm_hidden=on
    --hostdev 43:00.0,address.type=pci,address.multifunction=on
    --hostdev 43:00.1,address.type=pci ´
    --disco path=/dev/nvme-tank/ntfs-zvol-part2
    --cpu core2duo
    --vcpus 4
    --os-type windows
    --os-variante win10
    --network bridge=virbr0
    --console pty,target_type=serial
    --disco /media/big-tank-8TB/OSISOS/Windows/WindowsOct2018.iso,device=cdrom
    --disco /media/big-tank-8TB/OSISOS/Windows/virtio-win-0.1.160.iso,dispositivo=cdrom

  4. Ho eliminato il dispositivo grafico spice dall'XML myWINVM1. Non sono ancora riuscito a superare TianoCore.

  5. aggiunto la riga dell'ID venditore falso al mio XML

  6. Aggiunti i miei dispositivi USB

il mio xml finale:


  myWINVM1
  43e052b3-b3da-4025-92d8-ec7c8ff96ae9
  4194304
  4194304
  4
  
    /machine
  
  
    hvm
    /usr/share/OVMF/OVMF_CODE.fd
    /var/lib/libvirt/qemu/nvram/myWINVM1_VARS.fd
    
  
  
    
    
    
      
      
      
      
    
    
      
    
    
  
  
    core2duo
    
    
    
    
    
    
  
  
    
    
    
    
  
  destroy
  restart
  destroy
  
    
    
  
  
    /usr/bin/kvm-spice
    
      
      
      
      
      
      

Se ritieni che questo post ti sia stato utile, sarebbe molto utile se lo condividessi con più appassionati di programmazione e ci aiutassi a diffondere queste informazioni.



Utilizzate il nostro motore di ricerca

Ricerca
Generic filters

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.