Proxmox attivare passthrough

Proxmox versione 9.1.4

GPU nvidia GTX1650

come attivare passthrough

Prima fase INSTALLAZIONE DRIVER NVIDIA

Seconda fase ATTIVARE passthrough

una precisazione. Se intendiamo usare il passthrough su una VM non dobbiamo effettuare il secondo passaggio, in quanto è già tutto attivo. Se vogliamo invece utilizzare il passthrough su un container LXC dobbiamo effettuare il secondo passaggio ma dopo di questo il passthrough funzionerà solo sui container

1️⃣ Verifica IOMMU support nel kernel

Controlla se il tuo host supporta IOMMU (fondamentale per il passthrough):

dmesg | grep -e DMAR -e IOMMU

Se vedi qualcosa tipo:

DMAR: IOMMU enabled

✅ OK

Se NON appare → devi abilitare IOMMU nel GRUB:

Modifica /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_iommu=on iommu=pt”
# o se AMD:
# GRUB_CMDLINE_LINUX_DEFAULT=”quiet amd_iommu=on iommu=pt”

Aggiorna GRUB:

update-grub

Reboot


2️⃣ Identifica la tua GPU
lspci -nn | grep -i nvidia

Output tipico:

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation RTX 3060 [10de:2504] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:228b] (rev a1)

01:00.0 → GPU

01:00.1 → Audio GPU (HDMI/Display)


🔹 Prossimo passo: configurare VFIO

Crea il file /etc/modprobe.d/vfio.conf:

options vfio-pci ids=10de:1f0a,10de:10f9 disable_vga=1

10de:1f0a → GPU

10de:10f9 → Audio HDMI

disable_vga=1 → evita conflitti VGA con host

Aggiorna initramfs:

update-initramfs -u -k all

Riavvia host:

reboot


1️⃣ Creare il file di configurazione VFIO

Apri il terminale sul tuo host Proxmox e crea il file /etc/modprobe.d/vfio.conf:

nano /etc/modprobe.d/vfio.conf

All’interno del file, scrivi esattamente:

options vfio-pci ids=10de:1f0a,10de:10f9 disable_vga=1

10de:1f0a → GPU (VGA)

10de:10f9 → Audio HDMI della GPU

disable_vga=1 → evita conflitti VGA con l’host

Salva e chiudi:

In nano → premi CTRL+O → invio → CTRL+X

2️⃣ Aggiornare l’initramfs

Affinché il modulo VFIO prenda la GPU all’avvio, esegui:

update-initramfs -u -k all

3️⃣ Riavviare il nodo

Ora riavvia il server:

reboot

Questo permetterà al kernel di caricare VFIO e legare la GPU al driver passthrough

La GPU non sarà più disponibile all’host, pronta per le VM

4️⃣ Verifica VFIO dopo reboot

Dopo il reboot, esegui:

lspci -nnk -s 09:00.0
lspci -nnk -s 09:00.1

Dovresti vedere qualcosa tipo:

Kernel driver in use: vfio-pci

Se sì → ✅ la GPU è pronta per il passthrough.


se non appare

🔹 Passi correttivi per far sì che VFIO prenda la GPU

Modifica il file VFIO per escludere il driver NVIDIA dall’host (già fatto con vfio.conf), ma dobbiamo anche dire al kernel di caricare VFIO prima dei driver NVIDIA.

Aggiungi VFIO all’initramfs:

Apri /etc/initramfs-tools/modules:

nano /etc/initramfs-tools/modules

Aggiungi in fondo:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Salva (CTRL+O, invio, CTRL+X).

Aggiorna initramfs:

update-initramfs -u -k all

Riavvia l’host:

reboot

Verifica VFIO dopo reboot:

lspci -nnk -s 09:00.0
lspci -nnk -s 09:00.1

Dovresti vedere:

Kernel driver in use: vfio-pci

✅ Se appare così, la GPU è pronta per il passthrough alla VM.


🔹 Cosa fare ad ogni aggiornamento kernel

Dopo ogni update kernel:

update-initramfs -u -k all

Riavvio host con il nuovo kernel

Verifica VFIO:

lspci -nnk -s 09:00.0
lspci -nnk -s 09:00.1

Deve comparire ancora Kernel driver in use: vfio-pci


COME RILASCIARE LA GPU PER USO SU VM

 Passi per rilasciare la GPU
a) Rimuovi la configurazione VFIO

Apri il file /etc/modprobe.d/vfio.conf:

nano /etc/modprobe.d/vfio.conf

Commenta o cancella la riga:

# options vfio-pci ids=10de:1f0a,10de:10f9 disable_vga=1

Salva (CTRL+O, invio, CTRL+X).

b) Rigenera initramfs
update-initramfs -u -k all

Serve per far sì che al prossimo avvio il kernel non carichi più VFIO sulla GPU

c) Riavvia host
reboot

d) Verifica driver NVIDIA host

Dopo reboot, esegui:

lspci -nnk -s 09:00.0

Dovresti vedere:

Kernel driver in use: nvidia

Se sì → la GPU è di nuovo disponibile per l’host e quindi anche per LXC.

e) Passare la GPU ai container LXC

Controlla i device NVIDIA:

ls -l /dev/nvidia*

Tipicamente:

/dev/nvidia0
/dev/nvidiactl
/dev/nvidia-uvm

In Proxmox GUI → Container → Resources → Add → Device Passthrough

Device path: /dev/nvidia0

Poi aggiungi /dev/nvidiactl e /dev/nvidia-uvm uno per uno

Avvia il container → dentro puoi usare nvidia-smi

💡 Nota importante:

Se vuoi LXC con accesso GPU, non devi mai legarla a VFIO

Se vuoi passthrough completo con prestazioni massime (CUDA, Ollama), usa una VM

Tags:

Comments

Lascia un commento