mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-02 10:52:22 +00:00
Describe the GPU and Coral assistants as the scripts run them
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
},
|
||||
"prereqs": {
|
||||
"title": "Prima di iniziare",
|
||||
"drivers": "<strong>Prepara Coral sull’host</strong>. M.2 / PCIe richiede il driver host caricato; USB richiede accesso al dispositivo e permessi adeguati. Vedi <hostLink>Installa Coral TPU sull’host</hostLink>. Il runtime dell’applicazione deve essere disponibile nel container.",
|
||||
"drivers": "<strong>Prepara il dispositivo Coral sull’host</strong>. M.2 / PCIe richiede il driver host caricato; USB richiede accesso al dispositivo e permessi adeguati. Vedi <hostLink>Installa Coral TPU sull’host</hostLink>. Lo script installa il runtime dell’applicazione nei container Debian/Ubuntu; le altre distribuzioni devono fornirlo separatamente.",
|
||||
"driversCheck": "ls /dev/apex_* 2>/dev/null ; lsusb | grep -E '1a6e:089a|18d1:9302'",
|
||||
"container": "<strong>Un LXC esistente</strong>, preferibilmente basato su <strong>Debian / Ubuntu</strong>: l’installazione usa <code>apt-get</code>. I <strong>container di altre distribuzioni</strong> possono usare la <strong>modalità solo passthrough</strong>, che salta l’installazione APT di <code>libedgetpu</code>. Utile se l’applicazione include già il runtime, come l’immagine Docker Frigate.",
|
||||
"downtime": "<strong>Prevedi una breve interruzione</strong> del container. Lo script lo ferma per configurarlo e lo avvia per installare il runtime. Queste modifiche non richiedono il riavvio dell’host."
|
||||
@@ -44,7 +44,7 @@
|
||||
},
|
||||
"gpuHint": {
|
||||
"title": "Suggerimento facoltativo per l’accesso GPU",
|
||||
"body": "Se rileva un GPU non configurato per il container, un dialogo consiglia <lxcGpuLink>Aggiungi GPU a LXC</lxcGpuLink> per decodifica video, come Quick Sync, VA-API o NVDEC. Alla domanda se proseguire solo con Coral, Sì continua e No esce per configurare prima il GPU."
|
||||
"body": "Se viene rilevato un GPU non configurato per questo container, un dialogo consiglia <lxcGpuLink>Aggiungi GPU a LXC</lxcGpuLink> per la decodifica video hardware, come Quick Sync, VA-API o NVENC. Chiede se proseguire solo con Coral: Sì continua la configurazione del TPU; No esce per permetterti di configurare prima il GPU."
|
||||
},
|
||||
"usb": {
|
||||
"title": "Configurare l’accesso USB del LXC",
|
||||
@@ -55,7 +55,7 @@
|
||||
"pcie": {
|
||||
"title": "Configurare l’accesso M.2 / PCIe del LXC",
|
||||
"body1": "Se rileva Coral M.2 / PCIe ed esiste <code>/dev/apex_0</code>, usa l’API Proxmox <code>dev</code> per gestire cgroup2 nei LXC privilegiati e non privilegiati:",
|
||||
"body2": "Se <code>/dev/apex_0</code> non esiste ancora dopo <hostLink>Installa Coral sull’host</hostLink>, usa cgroup2 e un bind mount facoltativo con <code>create=file</code>. Questo non crea da solo un dispositivo funzionante:",
|
||||
"body2": "Se <code>/dev/apex_0</code> è assente dopo <hostLink>Installa Coral sull’host</hostLink>, lo script scrive un bind mount con <code>create=file</code> e, solo quando il numero major di apex è elencato in <code>/proc/devices</code>, una regola cgroup2 classica. Nessuno dei due crea un dispositivo funzionante:",
|
||||
"rebootTitle": "Riavviare l'host prima se hai appena installato i driver Coral",
|
||||
"rebootBody": "Il montaggio alternativo non carica <code>apex</code> sull’host. Carica il driver o riavvia dopo l’installazione e verifica il dispositivo. Poi riesegui lo script per applicare la voce moderna e riavvia il container."
|
||||
},
|
||||
@@ -92,7 +92,7 @@
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"apexTitle": "LXC avviato, ma manca /dev/apex_0",
|
||||
"apexBody": "Verifica il driver host: <code>lsmod | grep apex</code>. Se manca, prova <code>modprobe apex</code> o riavvia dopo l’installazione. Quando <code>/dev/apex_0</code> esiste sull’host, verifica la voce LXC e riavvia con <code>pct stop <ctid> && pct start <ctid></code>.",
|
||||
"apexBody": "Verifica prima il driver host: <code>lsmod | grep apex</code>. Se manca, prova <code>modprobe apex</code> o riavvia dopo l’installazione del driver. Quando <code>/dev/apex_0</code> esiste sull’host, verifica la voce del dispositivo LXC (riesegui lo script se sono state scritte solo le voci di ripiego) e riavvia il container con <code>pct stop <ctid> && pct start <ctid></code>.",
|
||||
"replugTitle": "Coral USB scompare dopo la riconnessione a un’altra porta",
|
||||
"replugBody": "Verifica che il LXC monti <code>/dev/bus/usb</code> anziché il link <code>/dev/coral</code>. La configurazione deve contenere <code>lxc.mount.entry: /dev/bus/usb dev/bus/usb ...</code> senza dipendere direttamente da <code>/dev/coral</code>. Riesegui lo script se la configurazione è vecchia.",
|
||||
"alpineTitle": "Alpine / Arch / RHEL / SUSE: runtime non installato",
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"heading": "Procedura passo per passo",
|
||||
"detect": {
|
||||
"title": "Rileva GPU e controlla IOMMU",
|
||||
"body": "Verifica IOMMU attivo, non solo i parametri. Con conferma separata può aggiungere <code>intel_iommu=on</code> o <code>amd_iommu=on</code> con <code>iommu=pt</code>. Usa <code>/etc/kernel/cmdline</code> con un marcatore ZFS come <code>root=ZFS=</code>, altrimenti <code>/etc/default/grub</code>. È un’euristica, non prova del bootloader. Riavvia per attivare e verifica i gruppi reali.",
|
||||
"body": "Considera IOMMU attivo solo quando il kernel in esecuzione ha <code>intel_iommu=on</code> o <code>amd_iommu=on</code> 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 <code>iommu=pt</code>. La sua euristica per il file di avvio usa <code>/etc/kernel/cmdline</code> quando vi si trova un marcatore di root ZFS come <code>root=ZFS=</code>; altrimenti usa <code>/etc/default/grub</code>. 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 <postLink>supporto VFIO IOMMU</postLink> è 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"
|
||||
@@ -58,7 +58,7 @@
|
||||
"<strong>Una sola GPU.</strong> La console locale può perdere l’uscita quando VFIO la riserva. Verifica prima l’accesso SSH o web da un altro computer.",
|
||||
"<strong>Politica di reset AMD.</strong> Legge <code>/sys/bus/pci/devices/<pci>/reset_method</code>. APU o scheda dedicata senza FLR viene <em>bloccata dalla politica dell’assistente</em>; un sottotipo sconosciuto senza FLR richiede conferma. Non prova un’impossibilità universale.",
|
||||
"<strong>Stato D3cold.</strong> Blocca schede AMD che indicano <code>D3cold</code> per il rischio di mancata attivazione. Verifica alimentazione e firmware.",
|
||||
"<strong>Gruppo IOMMU.</strong> Legge <code>/sys/kernel/iommu_groups/</code> e include <em>tutti i membri non bridge</em>, anche controller di rete o dischi. Verifica prima di confermare. Se IOMMU attende un riavvio, pianifica inizialmente solo la funzione GPU; verifica poi l’isolamento."
|
||||
"<strong>Analisi del gruppo IOMMU.</strong> Legge <code>/sys/kernel/iommu_groups/</code> e include nel piano della VM <em>tutti i membri non bridge</em>, eventualmente controller di rete o di archiviazione. Lo script non li elenca, quindi verifica tu stesso il gruppo prima di confermare. 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": "<strong>Audio associato.</strong> Due casi secondo la posizione del controller:",
|
||||
"audioDgpu": "<strong>GPU dedicata:</strong> l’audio HDMI occupa spesso la funzione <code>.1</code> dello stesso slot PCI ed è incluso se rilevato. Se l’host lo usava, perde l’accesso riservandolo alla VM.",
|
||||
@@ -75,7 +75,7 @@
|
||||
"items": [
|
||||
"<strong>GPU disponibile.</strong> Prosegue senza rimuovere assegnazioni.",
|
||||
"<strong>Assegnata a un’altra VM.</strong> Arresta prima la sorgente. Puoi <em>mantenere le voci disattivando l’avvio automatico</em> oppure <em>rimuoverle mantenendo l’avvio automatico</em>. Con <code>vfio-pci</code> già attivo e nessuna modifica host necessaria, il trasferimento VM→VM può evitare il riavvio host.",
|
||||
"<strong>Usata da LXC.</strong> Nei container normali scegli <em>mantenere la configurazione e disattivare l’avvio automatico</em> o <em>rimuovere dispositivi e vecchie regole <code>lxc.cgroup2.devices.allow</code>/<code>lxc.mount.entry</code>, mantenendo l’avvio automatico</em>. OCI conserva la configurazione e viene fermato senza avvio automatico; rimuovi la GPU da Apps. Il rilevamento per famiglia può includere altre schede."
|
||||
"<strong>GPU usata da LXC.</strong> Nei container normali scegli <em>mantenere la configurazione GPU e disattivare l’avvio automatico</em> o <em>rimuovere la configurazione del dispositivo GPU mantenendo l’avvio automatico</em>. La rimozione elimina le voci <code>devN</code> e, per AMD/Intel, anche le vecchie regole <code>/dev/dri</code> <code>lxc.mount.entry</code> e <code>lxc.cgroup2.devices.allow</code>. 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",
|
||||
@@ -90,7 +90,7 @@
|
||||
},
|
||||
"summary": {
|
||||
"title": "Riepilogo della conferma",
|
||||
"body": "Verifica il piano finale, soprattutto ogni membro IOMMU, e annulla se errato. Ferma le modifiche principali, ma non annulla un’attivazione IOMMU confermata in precedenza.",
|
||||
"body": "Verifica il piano finale dell’host e della VM e annulla se è errato. Mostra il gruppo IOMMU e il numero dei suoi dispositivi, non ogni membro, quindi controlla prima il gruppo. 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": {
|
||||
@@ -102,7 +102,7 @@
|
||||
"Scrive <code>/etc/modprobe.d/iommu_unsafe_interrupts.conf</code> e <code>kvm.conf</code> con <code>allow_unsafe_interrupts=1</code> e <code>ignore_msrs=1</code>. Sono impostazioni dello script, non requisiti universali Windows/macOS; gli interrupt non sicuri riducono la protezione del remapping.",
|
||||
"<code>/etc/modprobe.d/blacklist.conf</code>: NVIDIA — <code>nouveau</code>/<code>lbm-nouveau</code>; AMD — <code>radeon</code> + <code>amdgpu</code>; Intel — <code>i915</code>. Queste regole per produttore possono influire su altre schede con lo stesso driver. Il modulo <code>nvidia</code> è bloccato <strong>solo</strong> tramite <code>/etc/modprobe.d/proxmenux-nvidia-vfio-blacklist.conf</code> quando <em>tutte</em> le NVIDIA host sono riservate a VFIO.",
|
||||
"<code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> + <code>/etc/proxmenux/vfio-bind.bdfs</code> — <strong>Solo NVIDIA.</strong> Applica <code>ATTR'{'driver_override'}'=\"vfio-pci\"</code> al PCI ADD dei BDF registrati, incluse le funzioni del gruppo IOMMU interessato. Fuori da quei gruppi può restare <code>nvidia</code>. La politica BDF non divide gruppi IOMMU hardware.",
|
||||
"<strong>Solo AMD.</strong> Tenta di estrarre la ROM da <code>/sys/bus/pci/.../rom</code> o ACPI VFCT in <code>/usr/share/kvm/vbios_<card>.bin</code>. Se riesce, usa <code>romfile=</code>. Una ROM valida non garantisce l’inizializzazione GPU.",
|
||||
"<strong>Solo AMD.</strong> Tenta un dump della ROM da <code>/sys/bus/pci/.../rom</code> o ACPI VFCT in <code>/usr/share/kvm/vbios_<vendor>_<device>.bin</code>. Se riesce, la VM usa <code>romfile=</code>. Un dump valido non garantisce la corretta inizializzazione della GPU.",
|
||||
"<strong>Solo NVIDIA.</strong> Ferma e disattiva <code>nvidia-persistenced</code>, <code>nvidia-powerd</code>, <code>nvidia-fabricmanager</code> solo se tutte le NVIDIA sono riservate a VFIO. In uso misto mantiene servizi e <code>nvidia</code> per le schede native.",
|
||||
"<code>update-initramfs -u -k all</code> — funziona solo se uno dei suddetti effettivamente cambiato."
|
||||
]
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Aggiunge <code>dev<N></code> a <code>/etc/pve/lxc/<ctid>.conf</code> per i dispositivi <code>/dev/dri/*</code>, <code>/dev/kfd</code> o <code>/dev/nvidia*</code> pertinenti. Avvia il container, installa i pacchetti adatti e allinea <code>video</code> e <code>render</code>. L’accelerazione richiede hardware e librerie compatibili e configurazione dell’app."
|
||||
"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."
|
||||
},
|
||||
"compare": {
|
||||
"heading": "Condivisione LXC e passthrough VM a confronto",
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
"pickCt": {
|
||||
"title": "Scegli un container LXC",
|
||||
"body": "Elenca i LXC idonei per ID e nome. I container OCI sono esclusi: gestisci i dispositivi da Apps nel gestore OCI. Arresta per configurare, avvia per installare e normalmente ripristina lo stato iniziale.",
|
||||
"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": {
|
||||
@@ -98,7 +98,7 @@
|
||||
},
|
||||
"applyConfig": {
|
||||
"title": "Applicare le modifiche di configurazione LXC",
|
||||
"body1": "Arresta il container e modifica <code>/etc/pve/lxc/<ctid>.conf</code>. Le voci <code>dev<N></code> includono i GID scelti. Il meccanismo <code>dev:</code> sostituisce qui le regole manuali <code>lxc.mount.entry</code>. Verifica configurazione e permessi.",
|
||||
"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": {
|
||||
@@ -127,14 +127,14 @@
|
||||
},
|
||||
"alignGids": {
|
||||
"title": "Allineare GID e ripristinare lo stato",
|
||||
"body1": "Legge i GID host di <code>video</code> e <code>render</code>, con 44/104 come ripiego, poi adatta <code>/etc/group</code> nel container. <code>video:44</code> e <code>render:104</code> sono esempi, non ID universali. Verifica gruppi dell’app e permessi effettivi.",
|
||||
"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."
|
||||
}
|
||||
},
|
||||
"vendors": {
|
||||
"heading": "Note per produttore",
|
||||
"intelHeading": "Intel iGPU",
|
||||
"intelBody": "L’accelerazione Intel, incluso <em>Quick Sync</em>, dipende da generazione, codec e app. Condivide nodi esistenti come <code>/dev/dri/card0</code> e <code>/dev/dri/renderD128</code>; i numeri possono variare. Deve fornirli il driver nativo host, per esempio <code>i915</code>.",
|
||||
"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>.",
|
||||
"amdHeading": "AMD",
|
||||
"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",
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
"title": "PCIe: moduli gasket e apex tramite DKMS",
|
||||
"body": "Eseguito solo se rileva un Coral PCIe/M.2. Compila i moduli per il kernel attualmente in esecuzione sull’host.",
|
||||
"items": [
|
||||
"<strong>Pulizia.</strong> Se una precedente installazione di <code>gasket-dkms</code> ha lasciato pacchetti in stato incoerente, tenta di eliminarla prima della compilazione.",
|
||||
"<strong>Pulizia.</strong> Qualsiasi pacchetto <code>gasket-dkms</code> esistente viene rimosso prima della ricompilazione; se è in uno stato incoerente, lo script ne forza la rimozione e la purga.",
|
||||
"<strong>Dipendenze di compilazione:</strong> <code>git</code>, <code>dkms</code>, <code>build-essential</code>, <code>proxmox-headers-$(uname -r)</code>."
|
||||
],
|
||||
"cloneIntro": "<strong>Clona i sorgenti del driver.</strong> Preferisce <feranickLink>feranick/gasket-driver</feranickLink>, altrimenti usa <googleLink>google/gasket-driver</googleLink>. La compilazione dipende dalla compatibilità del kernel. Applica queste patch ai sorgenti Google secondo la versione:",
|
||||
@@ -132,7 +132,7 @@
|
||||
"Elimina completamente <code>gasket-dkms</code>, <code>libedgetpu1-std</code> e <code>libedgetpu1-max</code>, poi esegue <code>apt-get autoremove --purge</code>.",
|
||||
"Elimina <code>/etc/udev/rules.d/99-coral-apex.rules</code> e ripristina il gruppo predefinito in <code>60-gasket-dkms.rules</code>, se esiste ancora.",
|
||||
"Controlla i membri supplementari di <code>apex</code>. <strong>Se l’elenco è vuoto</strong>, tenta di rimuovere il gruppo; altrimenti mantiene <code>apex</code> ed elenca i membri. Non verifica completamente gli utenti che lo hanno come gruppo principale.",
|
||||
"Rimuove i vecchi repository, tra cui <code>/etc/apt/sources.list.d/coral-edgetpu.list</code>, e portachiavi chiamati <code>coral-edgetpu-archive-keyring.gpg</code>. Il portachiavi attuale /etc/apt/keyrings/coral-edgetpu.gpg rimane.",
|
||||
"Rimuove l’elenco dei repository <code>/etc/apt/sources.list.d/coral-edgetpu.list</code>, il vecchio <code>coral-cloud.list</code> e i vecchi portachiavi chiamati <code>coral-edgetpu-archive-keyring.gpg</code>. Il portachiavi attuale in <code>/etc/apt/keyrings/coral-edgetpu.gpg</code> non viene rimosso da questa sequenza.",
|
||||
"Propone un riavvio <strong>solo se PCIe era installato</strong> per scaricare i moduli ancora attivi. Rimuovere solo USB non richiede riavvio."
|
||||
],
|
||||
"lxcWarnTitle": "LXC contenitori con apex passthrough",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Rileva il GPU e propone rami mantenuti che includono il suo ID PCI. Blocca <code>nouveau</code>, scarica l’installer ufficiale <code>.run</code>, usa DKMS e installa <code>nvidia-persistenced</code> con regole udev; patch NVENC facoltativa. La compilazione verifica il kernel attuale senza garantire tutte le app. I LXC NVIDIA possono ricevere librerie corrispondenti."
|
||||
"body": "ProxMenux rileva il GPU e propone rami NVIDIA mantenuti che includono il suo ID PCI. Blocca <code>nouveau</code>, scarica l’installer ufficiale <code>.run</code>, usa DKMS, installa <code>nvidia-persistenced</code>, le regole udev e NVIDIA Container Toolkit e propone una patch NVENC facoltativa. I controlli di compilazione riguardano il kernel in esecuzione; una compilazione riuscita non garantisce che ogni app funzioni. Ai LXC NVIDIA esistenti viene proposto un aggiornamento delle librerie userspace, con versione corrispondente tranne su Arch."
|
||||
},
|
||||
"who": {
|
||||
"heading": "Per chi è questo?",
|
||||
@@ -89,7 +89,7 @@
|
||||
},
|
||||
"reboot": {
|
||||
"title": "Riavvia",
|
||||
"body": "Rigenera <code>initramfs</code> per tutti i kernel e propone il riavvio. <strong>Prevedi questo riavvio</strong> per verificare moduli e configurazione nouveau all’avvio, anche se il driver risponde già prima."
|
||||
"body": "Dopo l’installazione del driver, lo script rigenera <code>initramfs</code> per tutti i kernel; il suo ultimo passaggio propone il riavvio. <strong>Prevedi questo riavvio</strong> per verificare la configurazione persistente dei moduli e di nouveau a un nuovo avvio, anche se il nuovo driver risponde già prima del riavvio."
|
||||
}
|
||||
},
|
||||
"reinstallUninstall": {
|
||||
@@ -102,8 +102,8 @@
|
||||
"uninstallHeading": "Disinstallare — ciò che viene rimosso",
|
||||
"uninstallIntro": "Dopo conferma Sì/No, rimuove i seguenti componenti:",
|
||||
"uninstallItems": [
|
||||
"Esegue <code>nvidia-uninstall --silent</code> per l’installazione <code>.run</code>, ferma e disabilita <code>nvidia-persistenced</code> e <code>nvidia-powerd</code> e tenta di scaricare <code>nvidia_uvm</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code> e <code>nvidia</code>. Le app LXC NVIDIA sono coinvolte; client attivi possono impedire lo scaricamento.",
|
||||
"Esegue <code>apt purge</code> su <code>nvidia-*</code>, <code>libnvidia-*</code>, <code>cuda-*</code> e <code>libcudnn*</code>, rimuove l'albero sorgente DKMS e la cache dell'installatore <code>/opt/nvidia</code> .run.",
|
||||
"Ferma e disabilita <code>nvidia-persistenced</code> e <code>nvidia-powerd</code>, tenta di scaricare <code>nvidia_uvm</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code> e <code>nvidia</code>, poi esegue <code>nvidia-uninstall --silent</code> per l’installazione <code>.run</code>. I carichi di lavoro LXC che dipendono da NVIDIA sono coinvolti; client attivi possono impedire lo scaricamento.",
|
||||
"Esegue <code>apt purge</code> su <code>nvidia-*</code>, <code>libnvidia-*</code>, <code>cuda-*</code> e <code>libcudnn*</code>, rimuove l'albero sorgente DKMS e le cartelle <code>nvidia-persistenced</code> e <code>nvidia-patch</code> in <code>/opt/nvidia</code>.",
|
||||
"Rimuove la configurazione di caricamento moduli <code>/etc/modules-load.d/nvidia-vfio.conf</code> e le regole nouveau gestite da ProxMenux. Migra e rimuove anche i vecchi file ProxMenux con le due righe note; conserva i file modificati o estranei dell’amministratore.",
|
||||
"Rimuove <code>/etc/udev/rules.d/70-nvidia.rules</code> e imposta NVENC su <em>removed</em> nel registro delle installazioni gestite; non esiste un file di stato separato.",
|
||||
"Rigenera <code>initramfs</code> per tutti i kernel, esegue <code>proxmox-boot-tool refresh</code> secondo la configurazione di avvio e chiede di riavviare."
|
||||
|
||||
@@ -42,21 +42,21 @@
|
||||
},
|
||||
{
|
||||
"situation": "Voglio rimuovere tutte le assegnazioni di questo GPU.",
|
||||
"use": "La modalità LXC restituisce il GPU al driver host; rimuovi le assegnazioni degli ospiti con le opzioni di conflitto appropriate. Il GPU resta associato a un driver."
|
||||
"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": "<strong>Un GPU già assegnato</strong> a una VM tramite VFIO o a un LXC. Per la prima assegnazione usa Aggiungi GPU a VM / LXC.",
|
||||
"iommu": "<strong>IOMMU deve essere attivo sull’host</strong> passando <em>alla</em> modalità VM. Contano firmware e supporto del kernel; i parametri espliciti non sono sempre necessari. Se serve, lo script tenta <code>intel_iommu=on iommu=pt</code> o <code>amd_iommu=on</code> tramite il sistema di avvio attivo, con <code>proxmox-boot-tool refresh</code> o <code>update-grub</code>. Controlla gli avvisi e riavvia quando richiesto.",
|
||||
"iommu": "<strong>IOMMU deve essere attivo sull’host</strong> passando <em>alla</em> modalità VM. Contano sia le impostazioni del firmware sia il supporto del kernel. Se <code>intel_iommu=on</code> o <code>amd_iommu=on</code> manca nel kernel in esecuzione, lo script lo aggiunge con <code>iommu=pt</code> a <code>/etc/kernel/cmdline</code> (marcatore di root ZFS) o a <code>/etc/default/grub</code>, poi esegue <code>proxmox-boot-tool refresh</code> o <code>update-grub</code>. Controlla eventuali avvisi e riavvia quando richiesto.",
|
||||
"iommuCheck": "dmesg | grep -i 'IOMMU enabled' | head -1",
|
||||
"reboot": "<strong>Prevedi un riavvio.</strong> Le modifiche persistenti a driver e avvio possono richiedere la rigenerazione di initramfs e un riavvio. Lo script lo propone al termine.",
|
||||
"knowList": "<strong>Identifica VM e LXC che usano il GPU.</strong> 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 alcuni ID, inclusi <code>8086:5a84</code> e <code>8086:5a85</code>, secondo la propria politica di compatibilità. In caso di corrispondenza mostra un avviso. L’elenco non impedisce il passaggio <em>alla</em> modalità LXC; restano gli altri controlli."
|
||||
"body": "Lo script blocca la modalità VM per gli ID dispositivo <code>8086:5a84</code> e <code>8086:5a85</code> 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 <em>alla</em> modalità LXC; altri controlli possono comunque applicarsi."
|
||||
},
|
||||
"running": {
|
||||
"heading": "Eseguire lo script",
|
||||
@@ -85,7 +85,7 @@
|
||||
"intro": "Sulla base della modalità corrente, lo script propone il contrario come obiettivo:",
|
||||
"items": [
|
||||
"<strong>VM → LXC:</strong> rimuove l’associazione a <code>vfio-pci</code> affinché il driver nativo (<code>nvidia</code>, <code>amdgpu</code>, <code>i915</code>) possa usare il GPU. Per NVIDIA elimina le voci BDF corrispondenti da <code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> per il prossimo avvio.",
|
||||
"<strong>LXC → VM:</strong> prepara l’associazione a <code>vfio-pci</code>. AMD / Intel blocca il driver nativo e usa <code>options vfio-pci ids=…</code>. Per NVIDIA, <code>nvidia</code> <strong>non</strong> è bloccato globalmente: regole BDF applicano <code>driver_override=vfio-pci</code> ai dispositivi dei gruppi IOMMU coinvolti. I GPU esterni a questi gruppi possono conservare <code>nvidia</code>. Controlla ogni membro."
|
||||
"<strong>LXC → VM:</strong> prepara l’associazione a <code>vfio-pci</code>. AMD / Intel bloccano il driver nativo e usano <code>options vfio-pci ids=…</code>. Per NVIDIA, <code>nvidia</code> viene bloccato globalmente solo quando ogni GPU NVIDIA dell’host è in VFIO; altrimenti regole per BDF applicano <code>driver_override=vfio-pci</code> ai dispositivi dei gruppi IOMMU coinvolti, e i GPU NVIDIA esterni a questi gruppi conservano <code>nvidia</code>. Controlla ogni membro del gruppo prima del passaggio."
|
||||
],
|
||||
"outro": "Confermare la direzione o annullare."
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user