"title":"Aggiungi GPU a LXC | Documentazione ProxMenux",
"description":"Condividi GPU Intel, AMD o NVIDIA con LXC. ProxMenux configura dispositivi, gruppi e librerie secondo la distribuzione; l’app deve supportare e configurare l’accelerazione."
},
"header":{
"title":"Aggiungi GPU a LXC",
"description":"Condivide l’accesso GPU con LXC tramite i dispositivi dell’host. Il driver resta sull’host; le app richiedono librerie compatibili e una configurazione propria.",
"body":"Aggiunge voci <code>dev<N></code> a <code>/etc/pve/lxc/<ctid>.conf</code> per i nodi <code>/dev/dri/*</code>, <code>/dev/kfd</code> o <code>/dev/nvidia*</code> pertinenti. Avvia il container, installa i pacchetti userspace della sua distribuzione e, per Intel/AMD, allinea i gruppi <code>video</code> e <code>render</code>. L’accelerazione delle applicazioni richiede comunque hardware e librerie compatibili e configurazione dell’app."
"heading":"Condivisione LXC e passthrough VM a confronto",
"intro":"LXC condivide il kernel e può <em>condividere</em> la GPU fra host e container. Con il <vmLink>passthrough completo a una VM</vmLink>, il dispositivo è riservato alla VM e non è disponibile al driver dell’host.",
"headerFeature":"Caratteristica",
"headerLxc":"LXC (questa pagina)",
"headerVm":"VM",
"rows":[
{
"feature":"L’host può continuare a usare la GPU?",
"lxc":"Sì",
"vm":"No — esclusiva della VM"
},
{
"feature":"Più container possono condividere una GPU?",
"lxc":"Sì",
"vm":"No"
},
{
"feature":"Richiede IOMMU / VFIO sull'host?",
"lxc":"No",
"vm":"Sì"
},
{
"feature":"Riavvio richiesto?",
"lxc":"Di solito no (solo riavviare il CT)",
"vm":"Se cambia la configurazione di driver o IOMMU sull’host; non a ogni assegnazione"
},
{
"feature":"Sistemi operativi guest",
"lxc":"Solo Linux (LXC è Linux-solo)",
"vm":"Sistema guest supportato con driver GPU compatibile"
}
]
},
"prereqs":{
"title":"Prima di iniziare",
"gpu":"<strong>GPU sull’host</strong> Intel, AMD o NVIDIA, rilevata tramite <code>lspci</code>.",
"gpuCheck":"lspci | grep -iE 'VGA|3D|Display'",
"vfio":"<strong>La GPU non deve essere associata a vfio-pci.</strong> Serve il driver nativo dell’host. Se assegnata a una VM, lo script propone <switchLink>Cambia modalità GPU</switchLink>.",
"nvidia":"<strong>Per NVIDIA:</strong> installa prima il driver sull’host. Le librerie del container devono corrispondere alla sua versione. Usa <nvidiaLink>Installa driver NVIDIA sull’host</nvidiaLink>.",
"nvidiaCheck":"nvidia-smi",
"container":"<strong>Un LXC esistente.</strong> Lo script non lo crea. Supporta entrambi i modi; un container <strong>privilegiato</strong> non è sempre necessario. Dispositivi e permessi numerici dell’app devono corrispondere."
},
"unpriv":{
"title":"Supporta container privilegiati e non privilegiati",
"body":"Lo script usa le voci <code>dev<N></code> e allinea i GID <code>video</code> e <code>render</code> fra host e container. Questo evita di modificare manualmente <code>lxc.idmap</code> per il normale accesso ai dispositivi; verifica comunque i permessi dell’utente dell’app."
},
"running":{
"heading":"Eseguire l’installer",
"body":"Apri ProxMenux e scegli <strong>Hardware: GPU e Coral-TPU → Aggiungi GPU a LXC</strong>.",
"imageAlt":"Voce del menu per aggiungere GPU a LXC"
},
"howRuns":{
"heading":"Come funziona lo script",
"body":"Scegli container e famiglie GPU e supera i controlli. Poi il processo arresta e modifica il container senza un’ulteriore conferma finale. La pulizia VFIO facoltativa ha conferma separata e può modificare prima l’host."
},
"walkthrough":{
"heading":"Procedura passo per passo",
"detect":{
"title":"Rilevamento GPU host",
"body":"Cerca controller GPU con <code>lspci</code>. Per NVIDIA verifica il modulo <code>nvidia</code> e <code>nvidia-smi</code>; la versione rilevata determina l’installer <code>.run</code> del container.",
"tipTitle":"NVIDIA non pronto?",
"tipBody":"Se manca il modulo o NVIDIA non funziona sull’host, usa prima <nvidiaLink>Installa driver NVIDIA sull’host</nvidiaLink> e verifica il driver."
"body":"Elenca i container LXC idonei per ID e nome; i container OCI sono esclusi e usano OCI manager Apps per i dispositivi. Il container viene arrestato se è in esecuzione, avviato per l’installazione dei driver e normalmente riportato allo stato iniziale (in esecuzione/arrestato).",
"imageAlt":"Selezione di un container LXC esistente"
},
"selectGpu":{
"title":"Scegli le famiglie GPU",
"body":"L’elenco seleziona famiglie di produttori, non un dispositivo PCI isolato. Intel/AMD aggiungono i nodi DRI previsti; NVIDIA i dispositivi disponibili, anche di più schede. Una sola famiglia viene selezionata automaticamente. Verifica l’elenco finale, soprattutto con più GPU.",
"imageAlt":"Elenco delle famiglie GPU rilevate con nome e indirizzo PCI"
},
"preflight":{
"title":"Controlli preliminari",
"imageAlt":"Proposta di cambio modalità per una GPU associata a vfio-pci",
"intro":"Tre controlli, uno dei quali può bloccare o reindirizzare:",
"items":[
"<strong>Controllo SR-IOV.</strong> L’assistente blocca VF o PF con VF attive. È un limite della selezione ampia dei dispositivi, non un divieto generale per LXC. Configurali separatamente.",
"<strong>Associata a vfio-pci.</strong> Il driver nativo non può creare <code>/dev/dri/*</code> o <code>/dev/nvidia*</code>. Propone <switchLink>Cambia modalità GPU</switchLink>; segui le indicazioni sul riavvio e poi torna.",
"<strong>Già configurata.</strong> Se tutti i dispositivi sono presenti, esce senza reinstallare le librerie. Prosegue solo con le famiglie selezionate mancanti."
]
},
"applyConfig":{
"title":"Applicare le modifiche di configurazione LXC",
"body1":"Arresta il container se è in esecuzione e modifica <code>/etc/pve/lxc/<ctid>.conf</code>. Le voci numerate <code>dev<N></code> includono il GID host di <code>video</code> o <code>render</code>. Le righe bind <code>lxc.mount.entry</code> esistenti per <code>/dev/dri</code> vengono sostituite da voci <code>dev:</code>; verifica la configurazione e i permessi risultanti.",
"body2":"Esempio dopo Intel + NVIDIA sullo stesso contenitore:"
},
"installDrivers":{
"title":"Avviare il contenitore e installare i driver all'interno",
"body":"Avvia il container e attende fino a circa 30 secondi la risposta di <code>pct exec</code>. Rileva la distribuzione da <code>/etc/os-release</code> e installa i pacchetti adatti.",
"whyTitle":"Perché usa l’installer NVIDIA .run su Debian",
"whyBody":"I pacchetti possono non corrispondere all’host. Le librerie <strong>devono corrispondere al modulo host caricato</strong> per NVML e <code>nvidia-smi</code>. Debian/glibc usa il <code>.run</code> della versione host in cache, lo estrae e archivia sull’host, trasferisce con <code>pct push</code> e installa con <code>--no-kernel-modules --no-dkms</code>. Alpine e Arch usano i repository: verifica le versioni."
"body1":"Per Intel/AMD legge i GID host di <code>video</code> e <code>render</code>, usando 44/104 solo come ripiego, poi modifica <code>/etc/group</code> nel container perché corrispondano; le esecuzioni solo NVIDIA saltano questo passaggio. Voci come <code>video:44</code> e <code>render:104</code> sono esempi, non ID universali. Verifica l’appartenenza dell’app ai gruppi e i permessi effettivi sui dispositivi.",
"body2":"Al termine normale, arresta di nuovo il container se inizialmente era fermo; se era attivo lo lascia attivo. In caso di errore di avvio o installazione, verifica stato finale e log."
"intelBody":"L’accelerazione multimediale Intel, incluso <em>Quick Sync</em>, dipende da generazione del GPU, codec e configurazione dell’app. Lo script condivide quelli tra <code>/dev/dri/card0</code>, <code>card1</code>, <code>renderD128</code> e <code>renderD129</code> che esistono; altri numeri di nodo non vengono aggiunti. L’host deve già fornirli tramite il proprio driver nativo, per esempio <code>i915</code>.",
"amdBody":"AMD usa DRI per Mesa/VA-API. Se l’host espone <code>/dev/kfd</code>, lo condivide. ROCm/OpenCL richiede hardware e librerie compatibili; condividere il dispositivo non installa l’intero stack ROCm.",
"nvidiaHeading":"NVIDIA",
"nvidiaBody":"Condivide i dispositivi <code>/dev/nvidia*</code>. <strong>Le versioni del driver devono corrispondere</strong> per <code>nvidia-smi</code>. Debian/glibc usa il <code>.run</code> della versione host; Alpine/Arch i repository. Sotto 2048 MiB di RAM configurata propone un aumento temporaneo poi ripristinato; richiede anche 1500 MiB liberi su disco.",
"updateTitle":"Dopo un aggiornamento NVIDIA host, controlla le librerie LXC",
"updateBody":"Vecchie librerie possono causare errori in <code>nvidia-smi</code>. L’<nvidiaLink>installer NVIDIA dell’host</nvidiaLink> propone aggiornamenti dei container. Ripetere l’aggiunta può terminare se i dispositivi esistono già: non garantisce l’aggiornamento delle librerie. Verifica versioni e aggiorna i pacchetti o l’installazione utente adatta."
},
"verification":{
"heading":"Verifica",
"body":"Nel container verifica che la GPU sia visibile e utilizzabile."
},
"troubleshoot":{
"heading":"Risoluzione dei problemi",
"mismatchTitle":"nvidia-smi: Failed to initialize NVML: Driver/library version mismatch",
"mismatchBody":"Le librerie non corrispondono al modulo caricato. Verifica le versioni e aggiorna lo spazio utente LXC. Il <code>.run</code> in cache serve per Debian/glibc, ma l’aggiunta può terminare se tutti i dispositivi esistono già.",
"denyTitle":"Permesso negato su /dev/dri/renderD128 all'interno del contenitore",
"denyBody":"Verifica dispositivo e permessi numerici di <code>render</code>, poi che l’utente appartenga a <code>render</code>. Se disponibile, aggiungilo a <code>render</code> con <code>usermod -aG render <user></code>, sostituendo il segnaposto con l’account reale. Riavvia la sessione. Cambiare privilegi non è una soluzione generale.",
"vainfoTitle":"vainfo dice: VA-API versione 1.xx; non inizializzare",
"vainfoBody":"Verifica accesso e driver VA-API. I nomi variano per distribuzione: per esempio <code>intel-media-driver</code> per Intel recenti supportate, <code>i965-va-driver</code> per quelle vecchie compatibili e <code>mesa-va-drivers</code> per AMD. Il messaggio da solo non prova che manchi un pacchetto.",
"logTitle":"Registro d’installazione",
"logBody":"Ogni esecuzione scrive <code>/tmp/add_gpu_lxc.log</code> sull’host. Allegalo alle richieste di assistenza."
},
"related":{
"heading":"Vedi anche",
"items":[
{
"label":"Installare driver NVIDIA (Host)",
"href":"/docs/hardware/nvidia-host",
"tail":" — installa il driver host prima di condividere NVIDIA."
},
{
"label":"Aggiungi GPU a VM (Passthrough)",
"href":"/docs/hardware/gpu-vm-passthrough",
"tail":" — alternativa per dedicare una GPU a una VM."
},
{
"label":"Cambia modalità GPU (VM ↔ LXC)",
"href":"/docs/hardware/switch-gpu-mode",
"tail":" — passa la GPU fra condivisione LXC e assegnazione VM."
},
{
"label":"Comandi di passaggio GPU",
"href":"/docs/help-info/gpu-commands",
"tail":"— rapido riferimento per i relativi comandi shell."