{ "meta": { "title": "Cambia modalità GPU (VM ↔ LXC) | Documentazione ProxMenux", "description": "Passa un GPU da VFIO per VM al driver nativo per LXC o viceversa. ProxMenux rileva il driver, propone come gestire gli ospiti coinvolti, rimuove l’audio associato e rigenera initramfs se cambia la configurazione dell’host." }, "header": { "title": "Cambia modalità GPU (VM ↔ LXC)", "description": "Passa un GPU assegnato tra passthrough VM e condivisione LXC. ProxMenux gestisce driver, VFIO, moduli e initramfs e chiede come trattare gli ospiti coinvolti. Controlla le scelte e verifica il risultato dopo il riavvio.", "section": "Hardware: GPU e Coral-TPU" }, "intro": { "title": "Cosa fa", "body": "Con vfio-pci il GPU è riservato a una VM. Con il driver nativo (i915 / amdgpu / nvidia), host e LXC possono condividerlo. Cambia modalità GPU gestisce vfio.conf, blocchi dei moduli e riferimenti negli ospiti, segnalando le assegnazioni residue." }, "graphics": { "lxcTitle": "Pronto per container LXC", "lxcDesc": "Driver nativo attivo", "vmTitle": "Pronto per passthrough VM", "vmDesc": "Driver VFIO-PCI attivo" }, "when": { "heading": "Quando dovrei usarlo?", "intro": "Usalo se il GPU è già assegnato e vuoi cambiarne l’utilizzo:", "headerSituation": "Situazione", "headerUse": "Usa questa pagina?", "rows": [ { "situation": "GPU libero, mai assegnato: usarlo in una VM.", "useRich": "No — usa Aggiungi GPU a VM" }, { "situation": "GPU libero, mai assegnato: usarlo in un LXC.", "useRich": "No — usa Aggiungi GPU a LXC" }, { "situationRich": "Il GPU è assegnato a una VM tramite vfio-pci, ma voglio usarlo in un LXC.", "useRich": "Sì — questa pagina." }, { "situation": "Il GPU è condiviso con un LXC; voglio dedicarlo a una VM.", "useRich": "Sì — questa pagina." }, { "situation": "Voglio rimuovere tutte le assegnazioni di questo GPU.", "use": "La modalità LXC restituisce il GPU al driver host; la politica di conflitto VM può rimuovere le voci hostpci, ma le voci dei dispositivi LXC vanno rimosse separatamente. Il GPU resta associato a un driver." } ] }, "prereqs": { "title": "Prima di iniziare", "assigned": "Un GPU già assegnato a una VM tramite VFIO o a un LXC. Per la prima assegnazione usa Aggiungi GPU a VM / LXC.", "iommu": "IOMMU deve essere attivo sull’host passando alla modalità VM. Contano sia le impostazioni del firmware sia il supporto del kernel. Se intel_iommu=on o amd_iommu=on manca nel kernel in esecuzione, lo script lo aggiunge con iommu=pt a /etc/kernel/cmdline (marcatore di root ZFS) o a /etc/default/grub, poi esegue proxmox-boot-tool refresh o update-grub. Controlla eventuali avvisi e riavvia quando richiesto.", "iommuCheck": "dmesg | grep -i 'IOMMU enabled' | head -1", "reboot": "Prevedi un riavvio. Le modifiche persistenti a driver e avvio possono richiedere la rigenerazione di initramfs e un riavvio. Lo script lo propone al termine.", "knowList": "Identifica VM e LXC che usano il GPU. Lo script rileva i riferimenti e chiede come trattare ogni ospite; conoscere l’elenco facilita la verifica." }, "blocklist": { "title": "Non tutte le GPU sono sicure per passare a un VM", "body": "Lo script blocca la modalità VM per gli ID dispositivo 8086:5a84 e 8086:5a85 secondo la propria politica di compatibilità. Se un GPU selezionato corrisponde, interrompe il passaggio alla modalità VM e torna alla selezione del GPU, oppure esce se è l’unico GPU. Questa blocklist non impedisce il passaggio alla modalità LXC; altri controlli possono comunque applicarsi." }, "running": { "heading": "Eseguire lo script", "body": "Apri Hardware: GPU e Coral-TPU → Cambia modalità GPU (VM ↔ LXC) in ProxMenux.", "imageAlt": "Voce Cambia modalità GPU (VM ↔ LXC) nel menu hardware" }, "howRuns": { "heading": "Come funziona lo script", "body": "La scelta del GPU e della direzione precede il cambio principale. Una pulizia VFIO separata può chiedere conferma prima; gli ospiti coinvolti hanno dialoghi propri. Leggi ogni conferma: non esiste un’unica conferma finale per tutte le modifiche." }, "walkthrough": { "heading": "Procedura passo per passo", "detect": { "title": "Rilevare GPU e driver attuale", "body": "Esamina i controller VGA, 3D e Display dell’host e consulta /sys/bus/pci/devices/*/driver. Mostra nome, indirizzo PCI e driver attuale di ogni GPU per identificarne la modalità.", "imageAlt": "Elenco di controllo GPU che mostra ogni GPU rilevato con il suo driver corrente (vfio-pci / nvidia / amdgpu / i915) e slot PCI" }, "pickGpu": { "title": "Scegli i GPU da cambiare", "body": "Un solo GPU viene selezionato automaticamente. Con più GPU puoi selezionarne diversi, purché siano nella stessa modalità. Se le modalità sono miste, devi restringere la selezione.", "tipTitle": "Cambiare più GPU insieme", "tipBody": "Esempio: passare tre NVIDIA alla modalità VM, poi riportare l’iGPU a LXC. Due esecuzioni, ciascuna con destinazione comune, anziché cambiare ogni scheda separatamente." }, "direction": { "title": "Rivedere la direzione proposta", "intro": "Sulla base della modalità corrente, lo script propone il contrario come obiettivo:", "items": [ "VM → LXC: rimuove l’associazione a vfio-pci affinché il driver nativo (nvidia, amdgpu, i915) possa usare il GPU. Per NVIDIA elimina le voci BDF corrispondenti da /etc/udev/rules.d/10-proxmenux-vfio-bind.rules per il prossimo avvio.", "LXC → VM: prepara l’associazione a vfio-pci. AMD / Intel bloccano il driver nativo e usano options vfio-pci ids=…. Per NVIDIA, nvidia viene bloccato globalmente solo quando ogni GPU NVIDIA dell’host è in VFIO; altrimenti regole per BDF applicano driver_override=vfio-pci ai dispositivi dei gruppi IOMMU coinvolti, e i GPU NVIDIA esterni a questi gruppi conservano nvidia. Controlla ogni membro del gruppo prima del passaggio." ], "outro": "Confermare la direzione o annullare." }, "conflict": { "title": "Scelte per ogni VM o LXC coinvolto", "body": "Controlla /etc/pve/lxc/*.conf per riferimenti alla famiglia del driver GPU e /etc/pve/qemu-server/*.conf per assegnazioni PCI. Il rilevamento LXC non identifica ogni scheda tramite BDF esatto. Verifica gli ospiti rilevati e scegli come trattarli:", "headerPolicy": "Politica", "headerEffect": "Effetto", "headerWhen": "Quando scegliere", "keepPolicy": "Mantieni la configurazione, disattiva l’avvio automatico", "keepEffect": "pct set CTID -onboot 0 o qm set VMID -onboot 0. Conserva le voci GPU.", "keepWhen": "Se vuoi riutilizzare l’ospite quando il GPU tornerà alla modalità iniziale. Scelta predefinita prudente.", "removePolicy": "Rimuovere GPU da config", "removeEffect": "Rimuove le voci hostpci / dev identificate e i riferimenti precedenti supportati.", "removeWhen": "Se l’ospite deve funzionare senza GPU. Controlla prima l’app: il ripiego sulla CPU dipende dall’applicazione e rimuovere il dispositivo non la riconfigura automaticamente.", "imageAlt": "Dialogo per scegliere come gestire ogni VM o LXC coinvolto" }, "audio": { "title": "Rimuovere l’audio associato uscendo dalla modalità VM", "body1": "Molti GPU NVIDIA / AMD espongono audio HDMI nella funzione .1 dello stesso slot; possono esserci altri dispositivi audio assegnati. Rimuovendo il GPU possono restare voci audio hostpci obsolete. Verifica le assegnazioni da mantenere.", "body2": "Identifica gli indirizzi BDF audio e mostra un elenco delle assegnazioni da rimuovere. Elimina anche gli ID vendor:device da /etc/modprobe.d/vfio.conf, solo se nessun’altra VM li usa." }, "apply": { "title": "Applicare modifiche a host e ospiti", "body": "Una volta confermato, lo script scrive i cambiamenti di lato host — vfio.conf, blacklist, moduli e (per NVIDIA) la regola per-BDF udev a /etc/udev/rules.d/10-proxmenux-vfio-bind.rules più lo stato BDF a /etc/proxmenux/vfio-bind.bdfs. Esso applica anche la politica di conflitto scelta per ogni VM/LXC interessato. Se l'host config è effettivamente cambiato, viene eseguito update-initramfs -u -k all seguito da proxmox-boot-tool refresh; altrimenti entrambi sono saltati." }, "reboot": { "title": "Riavvia", "body": "Riavvia l’host per applicare la nuova associazione persistente. Puoi rimandare, ma verifica il driver attivo prima di avviare l’ospite di destinazione: fino al riavvio può restare quello precedente.", "imageAlt": "Riepilogo finestra di dialogo che cosa è cambiato, seguito dal prompt di riavvio" } }, "manual": { "heading": "Verifica manuale", "intro": "Prima di VM → LXC, controlla driver e regole BDF. L’esempio NVIDIA usa 10de:2204: adattalo alla tua scheda. I comandi leggono lo stato; lo script gestisce anche ospiti e membri del gruppo IOMMU.", "lxcToVm": "Prima di LXC → VM, controlla indirizzo PCI e gruppo IOMMU. Sostituisci l’indirizzo di esempio e verifica tutti i membri prima dell’assegnazione.", "oneVmTitle": "Un GPU fisico assegnato con VFIO può essere usato da una sola VM alla volta", "oneVmBody": "Mettere più voci hostpci con lo stesso slot PCI in due VM è valida configurazione ma solo una delle VM può iniziare con la GPU — la seconda fallirà. Il passo della politica di conflitto ProxMenux è esattamente quello di evitare questa trappola." }, "verification": { "heading": "Verifica dopo il riavvio" }, "troubleshoot": { "heading": "Risoluzione dei problemi", "stillVfioTitle": "GPU mostra ancora vfio-pci dopo il passaggio alla modalità LXC", "stillVfioBody": "Un modulo VFIO caricato non dimostra quale driver usi il GPU. Verifica associazione, completamento di update-initramfs e riavvio. lsmod | grep vfio elenca solo moduli. Per AMD / Intel controlla vfio.conf; per NVIDIA, /etc/proxmenux/vfio-bind.bdfs e /etc/udev/rules.d/10-proxmenux-vfio-bind.rules. Correggi le regole obsolete prima di update-initramfs -u -k all e del riavvio.", "vmFailTitle": "Una VM non si avvia dopo il passaggio del GPU a LXC", "vmFailBody": "Verifica i riferimenti hostpci obsoleti. L’opzione Rimuovi GPU dalla configurazione può eliminarli durante il cambio previsto. Prima di rieseguire lo script controlla la direzione per non invertire la modalità per errore. In alternativa rimuovi l’assegnazione in Proxmox con la VM ferma.", "smiFailTitle": "nvidia-smi mostra «Driver/library version mismatch» tornando a LXC", "smiFailBody": "Confronta il modulo NVIDIA caricato con le librerie installate, anche nei LXC. Allinea le versioni: riavviare carica il modulo installato ma non corregge pacchetti incompatibili. Ricaricare con modprobe -r nvidia e modprobe nvidia richiede di fermare i client GPU e può fallire se sono usati moduli dipendenti.", "logTitle": "Registro di esecuzione", "logBody": "Ogni esecuzione scrive in /tmp/proxmenux_gpu_switch_mode.log sull’host. Allega il registro quando chiedi aiuto su GitHub." }, "related": { "heading": "Vedi anche", "items": [ { "label": "Aggiungi GPU a VM (Passthrough)", "href": "/docs/hardware/gpu-vm-passthrough", "tail": " — configurazione iniziale della modalità VM." }, { "label": "Aggiungi GPU a LXC", "href": "/docs/hardware/igpu-acceleration-lxc", "tail": " — configurazione iniziale della modalità LXC." }, { "label": "Installare driver NVIDIA (Host)", "href": "/docs/hardware/nvidia-host", "tail": "— necessario per la modalità LXC su GPU NVIDIA." }, { "label": "ProxMenux Monitor — Scheda hardware", "href": "/docs/monitor/dashboard/hardware", "tail": " — sezione Schede grafiche, con modalità attuale e comando per cambiarla." }, { "label": "Comandi per passthrough GPU", "href": "/docs/help-info/gpu-commands", "tail": " — riferimento rapido ai comandi." } ] } }