Come configurare Proxmox VE 8 per PCI/PCIE e NVIDIA GPU Passthrough

Come Configurare Proxmox Ve 8 Per Pci Pcie E Nvidia Gpu Passthrough



Proxmox VE 8 è uno dei migliori hypervisor di tipo I open source e gratuiti disponibili per l'esecuzione di macchine virtuali (VM) QEMU/KVM e contenitori LXC. Ha una bella interfaccia di gestione web e molte funzionalità.

Una delle caratteristiche più sorprendenti di Proxmox VE è che può passare attraverso dispositivi PCI/PCIE (ovvero una GPU NVIDIA) dal tuo computer alle macchine virtuali (VM) Proxmox VE. Il passthrough PCI/PCIE sta migliorando sempre di più con le nuove versioni di Proxmox VE. Al momento in cui scrivo, l'ultima versione di Proxmox VE è Proxmox VE v8.1 e ha un ottimo supporto passthrough PCI/PCIE.







In questo articolo, ti mostrerò come configurare il tuo host/server Proxmox VE 8 per il passthrough PCI/PCIE e configurare la tua GPU NVIDIA per il passthrough PCIE sulle macchine virtuali (VM) Proxmox VE 8.





Sommario

  1. Abilitare la virtualizzazione dal firmware BIOS/UEFI della scheda madre
  2. Installazione di Proxmox VE8
  3. Abilitazione dei repository della comunità Proxmox VE 8
  4. Installazione degli aggiornamenti su Proxmox VE 8
  5. Abilitazione di IOMMU dal firmware BIOS/UEFI della scheda madre
  6. Abilitazione di IOMMU su Proxmox VE 8
  7. Verifica se IOMMU è abilitato su Proxmox VE 8
  8. Caricamento dei moduli kernel VFIO su Proxmox VE 8
  9. Elenco dei gruppi IOMMU su Proxmox VE 8
  10. Verifica se la tua GPU NVIDIA può essere passthrough su una macchina virtuale (VM) Proxmox VE 8
  11. Verifica dei moduli kernel da inserire nella lista nera per il passthrough PCI/PCIE su Proxmox VE 8
  12. Blacklist dei moduli kernel richiesti per PCI/PCIE Passthrough su Proxmox VE 8
  13. Configurazione della GPU NVIDIA per utilizzare il modulo kernel VFIO su Proxmox VE 8
  14. Passa attraverso la GPU NVIDIA a una macchina virtuale (VM) Proxmox VE 8
  15. Hai ancora problemi con il passthrough PCI/PCIE sulle macchine virtuali (VM) Proxmox VE 8?
  16. Conclusione
  17. Riferimenti





Abilitare la virtualizzazione dal firmware BIOS/UEFI della scheda madre

Prima di poter installare Proxmox VE 8 sul tuo computer/server, devi abilitare la funzionalità di virtualizzazione hardware del tuo processore dal firmware BIOS/UEFI della tua scheda madre. Il processo è diverso per le diverse schede madri. Quindi, se hai bisogno di assistenza per abilitare la virtualizzazione dell'hardware sulla tua scheda madre, leggi questo articolo .



Installazione di Proxmox VE8

Proxmox VE 8 può essere scaricato, installato e utilizzato gratuitamente. Prima di iniziare, assicurati di installare Proxmox VE 8 sul tuo computer. Se hai bisogno di assistenza in merito, leggi questo articolo .

Abilitazione dei repository della comunità Proxmox VE 8

Una volta installato Proxmox VE 8 sul tuo computer/server, assicurati di farlo abilitare i repository dei pacchetti della community Proxmox VE 8 .

Per impostazione predefinita, i repository dei pacchetti aziendali Proxmox VE 8 sono abilitati e non sarai in grado di ottenere/installare aggiornamenti e correzioni di bug dai repository aziendali a meno che tu non abbia acquistato le licenze aziendali Proxmox VE 8. Quindi, se desideri utilizzare Proxmox VE 8 gratuitamente, assicurati di farlo abilitare i repository dei pacchetti della community Proxmox VE 8 per ottenere gratuitamente gli ultimi aggiornamenti e correzioni di bug da Proxmox.

Installazione degli aggiornamenti su Proxmox VE 8

Una volta che hai abilitato i repository dei pacchetti della community Proxmox VE 8 , assicurati che installa tutti gli aggiornamenti disponibili sul tuo server Proxmox VE 8 .

Abilitazione di IOMMU dal firmware BIOS/UEFI della scheda madre

La configurazione IOMMU si trova in posizioni diverse in diverse schede madri. Per abilitare IOMMU sulla scheda madre, leggi questo articolo .

Abilitazione di IOMMU su Proxmox VE 8

Una volta abilitato IOMMU lato hardware, è necessario abilitare IOMMU anche lato software (da Proxmox VE 8).

Per abilitare IOMMU da Proxmox VE 8, è necessario aggiungere i seguenti parametri di avvio del kernel:

Fornitore del processore Parametri di avvio del kernel da aggiungere
Intel intel_iommu=on, iommu=pt
AMD iommu=pt

Per modificare i parametri di avvio del kernel di Proxmox VE 8, aprire il file /etc/default/grub file con l'editor di testo nano come segue:

$ nano /etc/default/grub

Alla fine di GRUB_CMDLINE_LINUX_DEFAULT , aggiungi i parametri di avvio del kernel richiesti per abilitare IOMMU a seconda del processore che stai utilizzando.

Poiché utilizzo un processore AMD, ho aggiunto solo il parametro di avvio del kernel iommu=pt alla fine di GRUB_CMDLINE_LINUX_DEFAULT linea nel /etc/default/grub file.

Una volta finito, premi + X seguito da E E per salvare il /etc/default/grub file.

Ora aggiorna le configurazioni di avvio di GRUB con il seguente comando:

$ aggiornamento-grub2

Una volta aggiornate le configurazioni di avvio di GRUB, fare clic su Riavviare per riavviare il server Proxmox VE 8 affinché le modifiche abbiano effetto.

Verifica se IOMMU è abilitato su Proxmox VE 8

Per verificare se IOMMU è abilitato su Proxmox VE 8, eseguire il comando seguente:

$dmesg | grep -e DMAR -e IOMMU

Se IOMMU è abilitato, vedrai alcuni output che confermano che IOMMU è abilitato.

Se IOMMU non è abilitato, potresti non vedere alcun output.

È inoltre necessario disporre di Rimappatura interruzioni IOMMU abilitato per il funzionamento del passthrough PCI/PCIE.

Per verificare se la rimappatura degli interrupt IOMMU è abilitata sul server Proxmox VE 8, eseguire il comando seguente:

$dmesg | grep 'rimappatura'

Come puoi vedere, la rimappatura degli interrupt IOMMU è abilitata sul mio server Proxmox VE 8.

La maggior parte dei moderni processori AMD e Intel avranno la rimappatura degli interrupt IOMMU abilitata. Se per qualsiasi motivo non hai abilitato la rimappatura degli interrupt IOMMU, esiste una soluzione alternativa. È necessario abilitare gli interrupt non sicuri per VFIO. Leggi questo articolo per ulteriori informazioni sull'abilitazione degli interrupt non sicuri sul server Proxmox VE 8.

Caricamento dei moduli kernel VFIO su Proxmox VE 8

Il passthrough PCI/PCIE viene eseguito principalmente dai moduli kernel VFIO (Virtual Function I/O) su Proxmox VE 8. I moduli kernel VFIO non vengono caricati all'avvio per impostazione predefinita su Proxmox VE 8. Ma è facile caricare il VFIO moduli del kernel all'avvio su Proxmox VE 8.

Innanzitutto, apri il file /etc/modules-load.d/vfio.conf file con il nano editor di testo come segue:

$ nano /etc/modules-load.d/vfio.conf

Digitare le seguenti righe nel file /etc/modules-load.d/vfio.conf file.

vfio

vfio_iommu_type1

vfio_pci

Una volta finito, premi + X seguito da E E per salvare le modifiche.

Ora aggiorna l'initramfs della tua installazione Proxmox VE 8 con il seguente comando:

$ update-initramfs -u -k all

Una volta aggiornato initramfs, fare clic su Riavviare per riavviare il server Proxmox VE 8 affinché le modifiche abbiano effetto.

Una volta avviato il server Proxmox VE 8, dovresti vedere che tutti i moduli del kernel VFIO richiesti sono caricati.

$ lsmod | afferrare vfio

Elenco dei gruppi IOMMU su Proxmox VE 8

Per passare attraverso i dispositivi PCI/PCIE sulle macchine virtuali (VM) Proxmox VE 8, sarà necessario controllare i gruppi IOMMU dei dispositivi PCI/PCIE con una certa frequenza. Per facilitare il controllo dei gruppi IOMMU, ho deciso di scrivere uno script di shell (l'ho preso da GitHub, ma non ricordo il nome del poster originale) nel percorso /usr/local/bin/print-iommu-groups così posso semplicemente scappare print-iommu-groups comando e stamperà i gruppi IOMMU sulla shell Proxmox VE 8.

Innanzitutto, crea un nuovo file print-iommu-groups nel percorso /usr/locale/bin e aprirlo con l'editor di testo nano come segue:

$ nano /usr/local/bin/print-iommu-groups

Digitare le seguenti righe nel file print-iommu-groups file:

#!/bin/bash

negozi -S nullglob

per G In ` Trovare / sistema / nocciolo / iommu_groups /* -profondità massima 0 -tipo D | ordinare -IN ` ; Fare

eco 'Gruppo IOMMU ${g##*/} :'

per D In $g / dispositivi /* ; Fare

eco ' \T $(lspci -nns ${d##*/}) '

Fatto ;

Fatto ;

Una volta finito, premi + X seguito da E E per salvare le modifiche al print-iommu-groups file.

Fare il print-iommu-groups file di script eseguibile con il seguente comando:

$ chmod +x /usr/local/bin/print-iommu-groups

Ora puoi eseguire il file print-iommu-groups comando come segue per stampare i gruppi IOMMU dei dispositivi PCI/PCIE installati sul server Proxmox VE 8:

$ print-iommu-groups

Come puoi vedere, vengono stampati i gruppi IOMMU dei dispositivi PCI/PCIE installati sul mio server Proxmox VE 8.

Verifica se la tua GPU NVIDIA può essere passthrough su una macchina virtuale (VM) Proxmox VE 8

Per passare attraverso un dispositivo PCI/PCIE a una macchina virtuale (VM) Proxmox VE 8, è necessario che si trovi nel proprio gruppo IOMMU. Se 2 o più dispositivi PCI/PCIE condividono un gruppo IOMMU, non è possibile trasferire nessuno dei dispositivi PCI/PCIE di quel gruppo IOMMU a nessuna macchina virtuale (VM) Proxmox VE 8.

Pertanto, se la tua GPU NVIDIA e il suo dispositivo audio si trovano nel proprio gruppo IOMMU, puoi passare la GPU NVIDIA a qualsiasi macchina virtuale (VM) Proxmox VE 8.

Sul mio server Proxmox VE 8, utilizzo una scheda madre MSI X570 ACE abbinata a un processore Ryzen 3900X e GPU NVIDIA Gigabyte RTX 4070. Secondo i gruppi IOMMU del mio sistema, posso passare attraverso la GPU NVIDIA RTX 4070 (Gruppo IOMMU 21), il controller Ethernet RTL8125 2.5Gbe (Gruppo IOMMU 20), il controller Intel I211 Gigabit Ethernet (Gruppo IOMMU 19), un controller USB 3.0 ( Gruppo IOMMU 24) e il controller audio HD integrato (Gruppo IOMMU 25).

$ print-iommu-groups

Poiché l'obiettivo principale di questo articolo è la configurazione di Proxmox VE 8 per il passaggio attraverso la GPU NVIDIA alle macchine virtuali Proxmox VE 8, la GPU NVIDIA e il relativo dispositivo audio devono trovarsi nel proprio gruppo IOMMU.

Verifica dei moduli kernel da inserire nella lista nera per il passthrough PCI/PCIE su Proxmox VE 8

Per passare attraverso un dispositivo PCI/PCIE su una macchina virtuale (VM) Proxmox VE 8, è necessario assicurarsi che Proxmox VE lo obblighi a utilizzare il modulo kernel VFIO invece del modulo kernel originale.

Per scoprire il modulo kernel utilizzato dai tuoi dispositivi PCI/PCIE, dovrai conoscere l'ID del fornitore e l'ID del dispositivo di questi dispositivi PCI/PCIE. È possibile trovare l'ID del fornitore e l'ID del dispositivo dei dispositivi PCI/PCIE utilizzando il file print-iommu-groups comando.

$ print-iommu-groups

Ad esempio, l'ID del fornitore e l'ID del dispositivo della mia GPU NVIDIA RTX 4070 sono 10de:2786 e il suo dispositivo audio lo è 10de:22bc .

Per trovare il modulo del kernel, un dispositivo PCI/PCIE 10de:2786 (la mia GPU NVIDIA RTX 4070) sta utilizzando, esegui il file lspci comandare come segue:

$ lspci -v -d 10de:2786

Come puoi vedere, la mia GPU NVIDIA RTX 4070 utilizza il nvidiafb E nuovo moduli del kernel per impostazione predefinita. Pertanto, a questo punto non possono essere passati a una macchina virtuale (VM) Proxmox VE 8.

Il dispositivo audio della mia GPU NVIDIA RTX 4070 utilizza il file snd_hda_intel modulo del kernel. Pertanto, a questo punto non può essere trasmesso nemmeno su una macchina virtuale Proxmox VE 8.

$ lspci -v -d 10de:22bc

Quindi, per far passare la mia GPU NVIDIA RTX 4070 e il suo dispositivo audio su una macchina virtuale (VM) Proxmox VE 8, devo inserire nella lista nera i nvidiafb , nuovo , E snd_hda_intel moduli del kernel e configura la mia GPU NVIDIA RTX 4070 e il suo dispositivo audio per utilizzare il file vfio-pci modulo del kernel.

Blacklist dei moduli kernel richiesti per PCI/PCIE Passthrough su Proxmox VE 8

Per inserire nella lista nera i moduli del kernel su Proxmox VE 8, aprire il file /etc/modprobe.d/blacklist.conf file con l'editor di testo nano come segue:

$ nano /etc/modprobe.d/blacklist.conf

Per inserire nella lista nera i moduli del kernel nuovo , nvidiafb , E snd_hda_intel moduli del kernel (per passare attraverso la GPU NVIDIA), aggiungere le seguenti righe nel file /etc/modprobe.d/blacklist.conf file:

nuova lista nera

lista nera nvidiafb

lista nera snd_hda_intel

Una volta finito, premi + X seguito da E E per salvare il /etc/modprobe.d/blacklist.conf file.

Configurazione della GPU NVIDIA per utilizzare il modulo kernel VFIO su Proxmox VE 8

Per configurare il dispositivo PCI/PCIE (ovvero la tua GPU NVIDIA) per utilizzare il modulo kernel VFIO, devi conoscere l'ID del fornitore e l'ID del dispositivo.

In questo caso, l'ID del fornitore e l'ID del dispositivo della mia GPU NVIDIA RTX 4070 e del relativo dispositivo audio sono 10de:2786 E 10de:22bc .

Per configurare la tua GPU NVIDIA per utilizzare il modulo kernel VFIO, apri il file /etc/modprobe.d/vfio.conf file con l'editor di testo nano come segue:

$ nano /etc/modprobe.d/vfio.conf

Per configurare la tua GPU NVIDIA e il suo dispositivo audio con : 10de:2786 E 10de:22bc (diciamo) rispettivamente per utilizzare il modulo del kernel VFIO, aggiungere la seguente riga al file /etc/modprobe.d/vfio.conf file.

opzioni vfio-pci ids=10de:2786,10de:22bc

Una volta finito, premi + X seguito da E E per salvare il /etc/modprobe.d/vfio.conf file.

Ora aggiorna l'initramfs di Proxmove VE 8 con il seguente comando:

$ update-initramfs -u -k all

Una volta aggiornato initramfs, fare clic su Riavviare per riavviare il server Proxmox VE 8 affinché le modifiche abbiano effetto.

Una volta avviato il server Proxmox VE 8, dovresti vedere che la tua GPU NVIDIA e il suo dispositivo audio ( 10de:2786 E 10de:22bc nel mio caso) stanno usando il file vfio-pci modulo del kernel. Ora la tua GPU NVIDIA è pronta per essere trasferita a una macchina virtuale Proxmox VE 8.

$ lspci -v -d 10de:2786

$ lspci -v -d 10de:22bc

Passa attraverso la GPU NVIDIA a una macchina virtuale (VM) Proxmox VE 8

Ora che la tua GPU NVIDIA è pronta per il passthrough sulle macchine virtuali (VM) Proxmox VE 8, puoi passare la tua GPU NVIDIA sulla macchina virtuale Proxmox VE 8 desiderata e installare i driver della GPU NVIDIA a seconda del sistema operativo che stai utilizzando quella macchina virtuale come al solito.

Per informazioni dettagliate su come passare attraverso la tua GPU NVIDIA su una macchina virtuale (VM) Proxmox VE 8 con diversi sistemi operativi installati, leggi uno dei seguenti articoli:

  • Come passare una GPU NVIDIA a una macchina virtuale (VM) Proxmox VE 8 Windows 11
  • Come passare una GPU NVIDIA a una macchina virtuale (VM) Ubuntu 24.04 LTS Proxmox VE 8
  • Come passare una GPU NVIDIA a una macchina virtuale (VM) LinuxMint 21 Proxmox VE 8
  • Come passare una GPU NVIDIA a una macchina virtuale (VM) Debian 12 Proxmox VE 8
  • Come passare una GPU NVIDIA a una macchina virtuale (VM) Proxmox VE 8 con sistema operativo elementare
  • Come passare da una GPU NVIDIA a una macchina virtuale (VM) Fedora 39+ Proxmox VE 8
  • Come passare attraverso una GPU NVIDIA su una macchina virtuale (VM) Arch Linux Proxmox VE 8
  • Come passare attraverso una GPU NVIDIA su una macchina virtuale (VM) Proxmox VE 8 Red Hat Enterprise Linux 9 (RHEL 9)

Hai ancora problemi con il passthrough PCI/PCIE sulle macchine virtuali (VM) Proxmox VE 8?

Anche dopo aver provato correttamente tutto quanto elencato in questo articolo, se il passthrough PCI/PCIE continua a non funzionare, assicurati di farlo provare alcuni dei trucchi passthrough e/o soluzioni alternative di Proxmox VE PCI/PCIE che puoi utilizzare per far funzionare il passthrough PCI/PCIE sul tuo hardware.

Conclusione

In questo articolo, ti ho mostrato come configurare il tuo server Proxmox VE 8 per il passthrough PCI/PCIE in modo da poter passare i dispositivi PCI/PCIE (ovvero la tua GPU NVIDIA) alle tue macchine virtuali (VM) Proxmox VE 8. Ti ho anche mostrato come trovare i moduli del kernel che devi inserire nella lista nera e come inserirli nella lista nera per un passaggio riuscito dei dispositivi PCI/PCIE desiderati (ad esempio la tua GPU NVIDIA) a una macchina virtuale Proxmox VE 8. Infine, ti ho mostrato come configurare i dispositivi PCI/PCIE desiderati (ovvero la tua GPU NVIDIA) per utilizzare i moduli del kernel VFIO, che è anche un passaggio essenziale per un passthrough riuscito dei dispositivi PCI/PCIE desiderati (ovvero la tua GPU NVIDIA ) a una macchina virtuale (VM) Proxmox VE 8.

Riferimenti

  1. Passthrough PCI(e) – Proxmox VE
  2. Passthrough PCI – Proxmox VE
  3. La macchina virtuale da gioco definitiva su proxmox: YouTube