In questa guida vi voglio mostrare come aggiungere una GPU in Passthrough per poter usare una GPU esterna su una VM Windows 10/server sia AMD che Intel.
Bisogna avere una CPU che supporti la virtualizzazione sia AMD che Intel (io consiglio Intel), bisogna entrare nel BIOS e attivare tutte le funzioni di virtualizzazione, sopratutto VT-d (per Intel) o AMD-Vi (per AMD) e attivare il BIOS UEFI.
Come prima cosa bisogna creare una VM per Windows e consiglio di dare minimo 8GB RAM e 128GB Disco, avviate la VM senza aggiungere la GPU e dandogli un disco di installazione, installate Windows 10/Server 2019, bisogna attivare Desktop Remoto nella VM perché dopo aver configurato la GPU non saremo più in grado di vedere la VM tramite interfaccia web di proxmox e poi spegnetela.
Attenzione ogni volta che aprite nano e a fate modifiche se volete salvarle dovete dare il comando Ctrl + x e poi y.
Apriamo il terminale tramite interfaccia da browser o collegando Proxmox a un monitor o tramite SSH.
Adesso configuriamo Proxmox per poter gestire la cosa, prima cosa bisogna attivare IOMMU, aprire il file /etc/default/grub cona nano, così: nano /etc/default/grub e inserendo uno o l’atro tra le virgolette della stringa GRUB_CMDLINE_LINUX_DEFAULT questo uno o l’altro comando:
Intel:
intel_iommu=on
AMD:
amd_iommu=on
Date il comando update-grub per aggiornare il grub visto che abbiamo aggiunto delle configurazioni
Adesso bisogna inserire dei moduli nel file /etc/modules sempre aprendolo con l’editor nano così: nano /etc/modules, inseriamo queste stringhe:
vfio vfio_iommu_type1 vfio_pci vfio_virqfd
Adesso diamo dei comandi che servono a far si che Proxmox ignori l’uso della GPU:
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf echo "blacklist amd" >> /etc/modprobe.d/blacklist.conf
Adesso diamo il comando update-initramfs -u -k all per salvare i cambiamenti.
1. Da il comando
lspci -v
e cerca la tua GPU. Il mio era 01: 00.0 e 01: 00.1. Puoi omettere la parte dopo il decimale per includerli entrambi in una volta sola, quindi in tal caso sarebbe 01:00
2. Eseguire lspci -n -s per ottenere gli ID del fornitore. Esempio :
lspci -n -s 01:00
01: 00.0 0300: 10de: 1b81 (rev a1)
01: 00.1 0403: 10de: 10f0 (rev a1)
3. Assegna la tua GPU al driver vfio utilizzando gli ID ottenuti sopra. Esempio:
echo "opzioni vfio-pci ids = 10de: 1b81,10de: 10f0"> /etc/modprobe.d/vfio.conf
con il comando reboot riavviamo Proxmox.
Appena avviato Proxmox se si è avviata la VM spegnetela, impostiamo il tipo di macchina su q35 e aggiungete come da foto la GPU:
Adesso avviamo la VM e accediamo tramite il suo indirizzo ip al desktop remoto e andiamo in gestione dei dispositivi per vedere lo stato della GPU, se vedete cha i driver predefiniti di Windows installate i loro del produttore.
Se avete una scheda video Nvidia consumer che vi da sempre errore code 43 tra le sue informazioni aggiungete questa stringa alla configurazione della VM nel file di configurazione aprendolo con l’editor nano, così: nano /etc/pve/qemu-server/idvm.conf, aggiungi questa stringa all’inizio:
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
Adesso riavviamo la VM e adesso non dovrebbe dare più l’errore.
Il codice errore 43 deriva dal fatto che le GPU commerciali non da server NVidia non hanno la VGPU abilitata (non si può abilitare) e dovreste usare una GPU da server che costa da 2500€ in su e l’unico trucco è quello di usare quella stringa per disabilitare l’hypervisor (KVM)
Buon utilizzo della vostra GPU e della vostra VM.passthrough gpu