{
"meta": {
"title": "Aggiungi GPU a VM | Documentazione ProxMenux",
"description": "Assegna una GPU fisica a una VM Proxmox. ProxMenux verifica IOMMU, configura VFIO e dispositivi VM e rileva conflitti con altre VM o LXC."
},
"header": {
"title": "Aggiungi GPU a VM (Passthrough)",
"description": "Rileva GPU Intel, AMD o NVIDIA per l’accesso diretto da una VM. Verifica IOMMU e dispositivi associati, configura VFIO e VM e applica le regole di compatibilità. Controlla tutti i dispositivi interessati.",
"section": "Hardware: GPU e Coral-TPU"
},
"intro": {
"title": "Cosa fa",
"body": "Automatizza i passaggi host e hostpci della documentazione PCI passthrough Proxmox. Controlla assegnazioni ad altri guest e propone soluzioni ai conflitti. Non garantisce supporto per ogni GPU, metodo di reset o driver guest."
},
"who": {
"heading": "Per chi è questo?",
"body": "Per l’accesso diretto di una macchina virtuale alla GPU tramite VFIO. Finché è associata a VFIO, il driver host non può usarla, anche con VM ferma. Per condividerla con LXC, usa Aggiungi GPU a LXC."
},
"prereqs": {
"title": "Prima di iniziare",
"gpu": "GPU compatibile installata fisicamente. Lo script rileva Intel, AMD e NVIDIA con lspci.",
"gpuCheck": "lspci | grep -iE 'VGA|3D|Display'",
"iommu": "Supporto IOMMU hardware e attivazione firmware se richiesta (Intel VT-d o AMD-Vi). Verifica il sistema e può configurare Linux; non cambia BIOS/UEFI né prova che IOMMU inattivo sia disabilitato nel firmware.",
"q35": "L’assistente richiede q35 e rifiuta i440fx. Il tipo di macchina è distinto dal firmware BIOS/UEFI. Cambiare chipset a una VM esistente richiede pianificazione e non è automatico.",
"q35Check": "qm config VMID | grep machine",
"moreGpus": "Prepara un’altra GPU o accesso alternativo via SSH, IPMI o seriale. Riservare la GPU principale può togliere l’immagine locale. Per NVIDIA, una scheda fuori dal gruppo IOMMU interessato può restare sull’host.",
"nvidiaInstalled": "Dopo l’installazione NVIDIA sull’host, le funzioni scelte sono riservate a vfio-pci anziché nvidia. Il modulo nvidia può restare disponibile per altre schede fuori dal gruppo IOMMU interessato. Verifica con nvidia-smi."
},
"pickOne": {
"title": "Assegnazione esclusiva VM o condivisione LXC",
"body": "Un GPU legato a vfio-pci per il passaggio VM non può essere utilizzato simultaneamente dall'host o da un LXC. Se hai due GPU, puoi dedicarne uno ad ogni percorso. Se ne hai uno solo, scegli:",
"vmItem": "VM: accesso diretto ed esclusivo per quella VM.",
"lxcItem": "LXC (Aggiungi GPU a LXC): condivide il dispositivo con host e altri container tramite il driver nativo."
},
"running": {
"heading": "Eseguire l’installer",
"body": "Apri ProxMenux e scegli Hardware: GPU e Coral-TPU → Aggiungi GPU a VM.",
"imageAlt": "Voce del menu per aggiungere GPU a VM"
},
"howRuns": {
"heading": "Come funziona lo script",
"body": "Rilevamento e selezione precedono le modifiche principali, confermate da un riepilogo finale. Attivare IOMMU ha una conferma precedente e può già modificare l’avvio. La successiva pulizia audio può chiedere un’altra scelta."
},
"walkthrough": {
"heading": "Procedura passo per passo",
"detect": {
"title": "Rileva GPU e controlla IOMMU",
"body": "Considera IOMMU attivo solo quando il kernel in esecuzione ha intel_iommu=on o amd_iommu=on ed esistono gruppi IOMMU. Se il parametro è già salvato per il prossimo avvio, prosegue in modalità riavvio in sospeso; altrimenti un passaggio confermato separatamente può aggiungerlo con iommu=pt. La sua euristica per il file di avvio usa /etc/kernel/cmdline quando vi si trova un marcatore di root ZFS come root=ZFS=; altrimenti usa /etc/default/grub. Questa euristica non prova quale sia il bootloader effettivo. L’IOMMU appena configurato ha effetto dopo il riavvio; verifica poi i gruppi reali.",
"tipTitle": "Hai già configurato la post-installazione?",
"tipBody": "Se il supporto VFIO IOMMU è già configurato e attivo nel kernel, il controllo passa. Un’impostazione per il prossimo avvio non prova che sia attivo ora.",
"imageAlt": "Elenco delle GPU rilevate con indirizzo fornitore e PCI"
},
"preflight": {
"title": "Scegli GPU ed esegui i controlli preliminari",
"intro": "Una volta scelto il GPU, lo script esegue una serie di controlli che possono ogni blocco ulteriori progressi:",
"items": [
"Controllo SR-IOV. Rifiuta VF e PF con VF attive perché configura dispositivi interi, non SR-IOV. Configura SR-IOV separatamente su hardware supportato.",
"Una sola GPU. La console locale può perdere l’uscita quando VFIO la riserva. Verifica prima l’accesso SSH o web da un altro computer.",
"Politica di reset AMD. Legge /sys/bus/pci/devices/<pci>/reset_method. APU o scheda dedicata senza FLR viene bloccata dalla politica dell’assistente; un sottotipo sconosciuto senza FLR richiede conferma. Non prova un’impossibilità universale.",
"Stato D3cold. Blocca schede AMD che indicano D3cold per il rischio di mancata attivazione. Verifica alimentazione e firmware.",
"Analisi del gruppo IOMMU. Legge /sys/kernel/iommu_groups/ e include nel piano della VM tutti i membri non bridge, eventualmente controller di rete o di archiviazione. Se il gruppo contiene dispositivi di un altro slot, lo script li elenca prima del riepilogo; verifica che l’host non ne abbia bisogno. Se IOMMU attende un riavvio, i gruppi reali non sono disponibili e il piano contiene inizialmente solo la funzione GPU selezionata; verifica l’isolamento dopo il riavvio."
],
"audioIntro": "Audio associato. Due casi secondo la posizione del controller:",
"audioDgpu": "GPU dedicata: l’audio HDMI occupa spesso la funzione .1 dello stesso slot PCI ed è incluso se rilevato. Se l’host lo usava, perde l’accesso riservandolo alla VM.",
"audioIgpu": "Senza funzione audio .1: può trovarsi altrove, per esempio 00:1f.3. Elenca controller e driver come snd_hda_intel. Per impostazione predefinita nessuno è selezionato; scegli solo quelli necessari."
},
"pickVm": {
"title": "Scegli la VM di destinazione",
"body": "Scegli la VM. Richiede q35 e riutilizza le voci GPU esistenti dove possibile. BIOS/UEFI è un’impostazione separata, non un tipo di macchina. Non cambia automaticamente chipset o avvio del guest installato.",
"imageAlt": "Selezione VM per nome, ID e stato"
},
"switchMode": {
"title": "Gestire assegnazioni esistenti",
"intro": "Lo script scansiona ogni configurazione VM e ogni configurazione LXC sull'host alla ricerca del GPU selezionato. Tre possibili risultati:",
"items": [
"GPU disponibile. Prosegue senza rimuovere assegnazioni.",
"Assegnata a un’altra VM. Arresta prima la sorgente. Puoi mantenere le voci disattivando l’avvio automatico oppure rimuoverle mantenendo l’avvio automatico. Con vfio-pci già attivo e nessuna modifica host necessaria, il trasferimento VM→VM può evitare il riavvio host.",
"GPU usata da LXC. Nei container normali scegli mantenere la configurazione GPU e disattivare l’avvio automatico o rimuovere la configurazione del dispositivo GPU mantenendo l’avvio automatico. La rimozione elimina le voci devN e, per AMD/Intel, anche le vecchie regole /dev/dri lxc.mount.entry e lxc.cgroup2.devices.allow. I container OCI conservano la configurazione e vengono fermati con l’avvio automatico disattivato; rimuovi la loro GPU tramite OCI manager Apps. Il rilevamento dei conflitti avviene per famiglia di dispositivi GPU e può includere altre schede della stessa famiglia."
],
"imageAlt": "Offerta di dialogo per rimuovere il GPU da un LXC prima di assegnarlo al VM",
"smartTitle": "Verificare l’audio associato rimuovendo la GPU",
"smartBody": "Poi può proporre un elenco di dispositivi audio forse inutilizzati nella VM sorgente. Deseleziona quelli ancora necessari. Per esempio può mantenere 02:00.1 e proporre di rimuovere 00:1f.3. La scelta determina la rimozione; non garantisce ogni associazione audio/video."
},
"audioPick": {
"title": "Senza audio .1, scegli i controller necessari",
"body": "Succede solo per Intel iGPU e simili configurazioni split-audio. Una lista di controllo mostra ogni controller audio PCI sull'host (escluso qualsiasi già nel gruppo IOMMU di GPU), etichettato con il suo driver corrente. Selezionare quelli che si desidera - o nessuno, se il VM non ha bisogno di audio dall'hardware host.",
"imageAlt": "finestra di dialogo con ogni controller audio PCI host (BDF + driver) quando il GPU non ha un audio di sibling .1",
"warnTitle": "Non selezionare audio necessario all’host",
"warnBody": "Assegnare l’audio può togliere accesso all’host; il controller non può appartenere anche a un’altra VM attiva. Non selezionare audio superfluo e verifica le assegnazioni. Il segnale acustico della console non proviene necessariamente dall’audio PCI."
},
"summary": {
"title": "Riepilogo della conferma",
"body": "Verifica il piano finale dell’host e della VM e annulla se è errato. Mostra il gruppo IOMMU e il numero dei suoi dispositivi; i membri di un altro slot sono elencati nel passaggio precedente. L’annullamento ferma le modifiche principali, ma non annulla una modifica della configurazione di avvio IOMMU confermata separatamente in precedenza.",
"imageAlt": "Riepilogo delle modifiche previste a host e VM"
},
"hostApply": {
"title": "Le modifiche degli host sono applicate",
"intro": "La fase applicativa modifica host e VM. La pulizia audio può ancora richiedere una scelta. Possibili modifiche:",
"items": [
"/etc/modules — aggiunge vfio, vfio_iommu_type1, vfio_pci (più vfio_virqfd sui kernel < 6.2).",
"/etc/modprobe.d/vfio.conf — AMD/Intel: options vfio-pci ids=<vendor:device,...> disable_vga=1. NVIDIA: softdep nvidia pre: vfio-pci (_drm/_modeset/_uvm); l’associazione effettiva è per BDF. AMD aggiunge l’ordine di caricamento softdep: vfio-pci → radeon/amdgpu.",
"Scrive /etc/modprobe.d/iommu_unsafe_interrupts.conf e kvm.conf con allow_unsafe_interrupts=1 e ignore_msrs=1. Sono impostazioni dello script, non requisiti universali Windows/macOS; gli interrupt non sicuri riducono la protezione del remapping.",
"/etc/modprobe.d/blacklist.conf: NVIDIA — nouveau/lbm-nouveau; AMD — radeon + amdgpu; Intel — i915. Queste regole per produttore possono influire su altre schede con lo stesso driver. Il modulo nvidia è bloccato solo tramite /etc/modprobe.d/proxmenux-nvidia-vfio-blacklist.conf quando tutte le NVIDIA host sono riservate a VFIO.",
"/etc/udev/rules.d/10-proxmenux-vfio-bind.rules + /etc/proxmenux/vfio-bind.bdfs — Solo NVIDIA. Applica ATTR'{'driver_override'}'=\"vfio-pci\" al PCI ADD dei BDF registrati, incluse le funzioni del gruppo IOMMU interessato. Fuori da quei gruppi può restare nvidia. La politica BDF non divide gruppi IOMMU hardware.",
"Solo AMD. Tenta un dump della ROM da /sys/bus/pci/.../rom o ACPI VFCT in /usr/share/kvm/vbios_<vendor>_<device>.bin. Se riesce, la VM usa romfile=. Un dump valido non garantisce la corretta inizializzazione della GPU.",
"Solo NVIDIA. Ferma e disattiva nvidia-persistenced, nvidia-powerd, nvidia-fabricmanager solo se tutte le NVIDIA sono riservate a VFIO. In uso misto mantiene servizi e nvidia per le schede native.",
"update-initramfs -u -k all — funziona solo se uno dei suddetti effettivamente cambiato."
]
},
"vmApply": {
"title": "La configurazione della VM viene applicata tramite qm set",
"body": "La configurazione in /etc/pve/qemu-server/<vmid>.conf viene aggiornata tramite qm set, non modificata direttamente con sed.",
"after1": "Aggiunge x-vga=1 per AMD e NVIDIA, non Intel. È la politica dello script, non prova che ogni iGPU Intel sia priva di firmware o che il flag causi sempre blocchi.",
"after2": "Ulteriori linee hostpciN sono allegate se il gruppo IOMMU di GPU contiene altri dispositivi che è necessario passare insieme."
},
"reboot": {
"title": "Riavvia se richiesto dalle modifiche host",
"body": "Segui il riavvio richiesto se cambiano avvio o driver e verifica l’associazione attiva prima di avviare la VM. La configurazione salvata non prova che sia attiva. VM→VM con VFIO corretto può evitare il riavvio host.",
"imageAlt": "Riepilogo schermo che mostra ciò che è stato cambiato, seguito da un prompt di riavvio"
}
},
"vendors": {
"heading": "Note per produttore",
"nvidiaHeading": "NVIDIA",
"nvidiaBody": "Mantiene un vecchio accorgimento per Code 43: hidden=1, ID NV43FIX in args e kvm=off. Non è un requisito universale delle GeForce attuali: NVIDIA ha abilitato il passthrough Windows da R465. L’errore può avere altre cause; verifica GPU e driver.",
"nvidiaMultiHeading": "Supporto Multi-GPU NVIDIA",
"nvidiaMultiBody": "Uso misto NVIDIA per BDF. Registra funzioni vfio-pci per indirizzo, non solo ID vendor:device. Fuori dai gruppi interessati può mantenere nvidia; verifica con nvidia-smi. Non isola due schede dello stesso gruppo.",
"amdHeading": "AMD",
"amdBody": "Alcune GPU AMD non si resettano dopo l’arresto VM. L’assistente verifica capacità dichiarate, non tutti i cicli reali. vendor-reset supporta dispositivi limitati e richiede kernel compatibile e caricamento anticipato; non viene installato. Anche RadeonResetBugFix su Windows dipende dall’hardware, senza garanzia universale.",
"intelHeading": "Intel iGPU",
"intelBody": "Passthrough completo Intel iGPU e SR-IOV sono distinti. L’assistente riserva il dispositivo a una VM senza x-vga=1. i915-sriov-dkms richiede hardware/kernel supportati; «UHD 630+» non è una regola di compatibilità. Prevedi accesso alternativo all’host."
},
"verification": {
"heading": "Verifica"
},
"troubleshoot": {
"heading": "Risoluzione dei problemi",
"code43Title": "Codice 43 in Windows (NVIDIA)",
"code43Body": "Code 43 non prova un errore di mascheramento. Controlla qm config VMID | grep -E \"cpu|args\" con VMID reale, poi hidden=1 e hv_vendor_id=NV43FIX. Verifica anche driver guest, firmware e assegnazione. Ripetere può terminare se già assegnata.",
"amdResetTitle": "AMD GPU funziona una volta, fallisce sul riavvio di VM",
"amdResetBody": "Un reset fallito è una possibile causa. Riavvio o spegnimento completo possono aiutare temporaneamente. Verifica compatibilità e caricamento anticipato di vendor-reset; softdep amdgpu pre: vendor-reset da solo non garantisce caricamento prima di VFIO. Anche RadeonResetBugFix richiede una GPU compatibile.",
"stuckBootTitle": "Avvio bloccato VM / GPU non rilevato",
"stuckBootBody": "Controlla l’indirizzo reale con lspci -nnk -s PCI_ADDRESS; atteso Kernel driver in use: vfio-pci. Sostituisci PCI_ADDRESS. Se resta il driver nativo, verifica la politica di associazione, non solo /etc/modprobe.d/blacklist.conf; NVIDIA usa stato BDF. Leggi dmesg | grep vfio. Dopo correzioni, update-initramfs -u -k all e riavvio pianificato.",
"darkTitle": "Consolle Host va scuro dopo il riavvio e non posso SSH in",
"darkBody": "Lo schermo nero non prova che l’host sia spento. Se fallisce anche SSH, controlla rete e controller inclusi nel gruppo IOMMU. Recupera accesso via IPMI, seriale o ambiente di ripristino; verifica /etc/pve/qemu-server/<vmid>.conf e annulla solo assegnazioni/regole pertinenti. Non eliminare altra configurazione.",
"logTitle": "Controlla il registro di installazione",
"logBody": "Ogni esecuzione scrive /tmp/add_gpu_vm.log. Allegalo alle richieste di assistenza."
},
"revert": {
"heading": "Annullare le modifiche manualmente",
"intro": "Arresta la VM e rimuovi solo le assegnazioni PCI pertinenti da Hardware o con l’indice esplicito sotto. Non restituisce ancora la GPU al driver host. Usa Cambia modalità GPU per questa transizione e verifica i guest interessati."
},
"related": {
"heading": "Vedi anche",
"items": [
{
"label": "Installare driver NVIDIA (Host)",
"href": "/docs/hardware/nvidia-host",
"tail": " — prepara il driver per schede rimaste sull’host; una GPU in VFIO non può usarlo contemporaneamente."
},
{
"label": "Aggiungi GPU a LXC",
"href": "/docs/hardware/igpu-acceleration-lxc",
"tail": "— modello alternativo: condividere il GPU con più contenitori invece di dedicarlo a un VM."
},
{
"label": "Cambia modalità GPU (VM ↔ LXC)",
"href": "/docs/hardware/switch-gpu-mode",
"tail": " — passa la stessa GPU fra condivisione e assegnazione esclusiva."
},
{
"label": "Comandi di passaggio GPU",
"href": "/docs/help-info/gpu-commands",
"tail": "— lspci, IOMMU verifica, qm set hostpci riferimento."
}
]
}
}