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": "Vorbereitung",
|
||||
"drivers": "<strong>Coral auf dem Host vorbereiten</strong>. M.2 / PCIe benötigt den geladenen Host-Treiber, USB den Gerätezugriff mit passenden Berechtigungen. Siehe <hostLink>Coral TPU auf dem Host installieren</hostLink>. Die Anwendungslaufzeit muss im Container vorhanden sein.",
|
||||
"drivers": "<strong>Das Coral-Gerät auf dem Host vorbereiten</strong>. M.2 / PCIe benötigt den geladenen Host-Treiber, USB den Gerätezugriff mit passenden Berechtigungen. Siehe <hostLink>Coral TPU auf dem Host installieren</hostLink>. Das Skript installiert die Anwendungslaufzeit in Debian/Ubuntu-Containern; andere Distributionen müssen sie separat bereitstellen.",
|
||||
"driversCheck": "ls /dev/apex_* 2>/dev/null ; lsusb | grep -E '1a6e:089a|18d1:9302'",
|
||||
"container": "<strong>Vorhandener LXC-Container</strong>, vorzugsweise auf Basis von <strong>Debian / Ubuntu</strong>: Die Installation nutzt <code>apt-get</code>. <strong>Container anderer Distributionen</strong> können den <strong>reinen Passthrough-Modus</strong> nutzen, der die APT-Installation von <code>libedgetpu</code> überspringt. Geeignet, wenn die Anwendung die Laufzeit bereits mitbringt, etwa das Frigate-Docker-Image.",
|
||||
"downtime": "<strong>Kurze Ausfallzeit einplanen</strong>. Das Skript stoppt den Container für die Konfiguration und startet ihn zur Laufzeitinstallation. Für diese Änderungen ist kein Host-Neustart nötig."
|
||||
@@ -44,7 +44,7 @@
|
||||
},
|
||||
"gpuHint": {
|
||||
"title": "Optionaler Hinweis zum GPU-Zugriff",
|
||||
"body": "Wird eine GPU ohne Container-Zuordnung erkannt, empfiehlt ein Dialog <lxcGpuLink>GPU zu LXC hinzufügen</lxcGpuLink> für Videodekodierung, etwa Quick Sync, VA-API oder NVDEC. Die Frage lautet, ob nur Coral eingerichtet werden soll: Ja setzt fort, Nein beendet den Ablauf für die vorherige GPU-Einrichtung."
|
||||
"body": "Wird eine GPU erkannt, die für diesen Container nicht konfiguriert ist, empfiehlt ein Dialog <lxcGpuLink>GPU zu LXC hinzufügen</lxcGpuLink> für die Hardware-Videodekodierung, etwa Quick Sync, VA-API oder NVENC. Er fragt, ob nur mit Coral fortgefahren werden soll: Ja setzt die TPU-Einrichtung fort, Nein beendet den Ablauf, damit Sie zuerst die GPU konfigurieren können."
|
||||
},
|
||||
"usb": {
|
||||
"title": "USB-Zugriff im LXC konfigurieren",
|
||||
@@ -55,7 +55,7 @@
|
||||
"pcie": {
|
||||
"title": "M.2-/PCIe-Zugriff im LXC konfigurieren",
|
||||
"body1": "Bei erkannter M.2-/PCIe-Coral und vorhandenem <code>/dev/apex_0</code> nutzt das Skript die Proxmox-API <code>dev</code> für cgroup2-Berechtigungen in privilegierten und unprivilegierten LXC:",
|
||||
"body2": "Wenn nach <hostLink>Coral auf dem Host installieren</hostLink> noch kein <code>/dev/apex_0</code> existiert, wird die klassische cgroup2-Konfiguration mit optionalem Bind-Mount und <code>create=file</code> verwendet. Das erzeugt allein noch kein funktionsfähiges Gerät:",
|
||||
"body2": "Wenn nach <hostLink>Coral auf dem Host installieren</hostLink> kein <code>/dev/apex_0</code> vorhanden ist, schreibt das Skript einen Bind-Mount mit <code>create=file</code> und, nur wenn die Apex-Major-Nummer in <code>/proc/devices</code> aufgeführt ist, eine klassische cgroup2-Regel. Keines von beiden erzeugt ein funktionsfähiges Gerät:",
|
||||
"rebootTitle": "Starten Sie den Host zuerst neu, wenn Sie gerade Coral-Treiber installiert haben",
|
||||
"rebootBody": "Der Ersatz-Mount lädt den Host-Treiber <code>apex</code> nicht. Laden Sie ihn oder starten Sie nach der Installation neu und prüfen Sie das Gerät. Führen Sie das Skript danach erneut für den modernen Geräteeintrag aus und starten Sie den Container neu."
|
||||
},
|
||||
@@ -92,7 +92,7 @@
|
||||
"troubleshoot": {
|
||||
"heading": "Fehlerbehebung",
|
||||
"apexTitle": "LXC gestartet, aber /dev/apex_0 fehlt",
|
||||
"apexBody": "Host-Treiber prüfen: <code>lsmod | grep apex</code>. Falls nicht geladen, versuchen Sie <code>modprobe apex</code> oder starten nach der Treiberinstallation neu. Sobald <code>/dev/apex_0</code> auf dem Host existiert, prüfen Sie den LXC-Geräteeintrag und starten mit <code>pct stop <ctid> && pct start <ctid></code> neu.",
|
||||
"apexBody": "Prüfen Sie zuerst den Host-Treiber: <code>lsmod | grep apex</code>. Falls nicht geladen, versuchen Sie <code>modprobe apex</code> oder starten nach der Treiberinstallation neu. Sobald <code>/dev/apex_0</code> auf dem Host existiert, prüfen Sie den LXC-Geräteeintrag (führen Sie das Skript erneut aus, wenn nur die Ersatzeinträge geschrieben wurden) und starten den Container mit <code>pct stop <ctid> && pct start <ctid></code> neu.",
|
||||
"replugTitle": "USB-Coral verschwindet nach Anschluss an einen anderen Port",
|
||||
"replugBody": "Prüfen Sie, ob der LXC <code>/dev/bus/usb</code> statt des Links <code>/dev/coral</code> einbindet. Die Konfiguration sollte <code>lxc.mount.entry: /dev/bus/usb dev/bus/usb ...</code> enthalten und nicht direkt von <code>/dev/coral</code> abhängen. Führen Sie bei alten Konfigurationen das Skript erneut aus.",
|
||||
"alpineTitle": "Alpine / Arch / RHEL / SUSE: Laufzeit nicht installiert",
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"heading": "Schritt für Schritt",
|
||||
"detect": {
|
||||
"title": "GPUs erkennen und IOMMU überprüfen",
|
||||
"body": "Prüft aktives IOMMU, nicht nur Parameter. Separat bestätigt kann <code>intel_iommu=on</code> oder <code>amd_iommu=on</code> mit <code>iommu=pt</code> ergänzt werden. Nutzt <code>/etc/kernel/cmdline</code> bei ZFS-Marker wie <code>root=ZFS=</code>, sonst <code>/etc/default/grub</code>. Dies ist eine Heuristik, kein Bootloadernachweis. Änderung nach Neustart aktiv; tatsächliche Gruppen prüfen.",
|
||||
"body": "Betrachtet IOMMU nur dann als aktiv, wenn der laufende Kernel <code>intel_iommu=on</code> oder <code>amd_iommu=on</code> hat und IOMMU-Gruppen existieren. Ist der Parameter bereits für den nächsten Start gespeichert, wird im Modus „Neustart ausstehend“ fortgefahren; andernfalls kann ein separat bestätigter Schritt ihn mit <code>iommu=pt</code> ergänzen. Die Heuristik für die Bootdatei nutzt <code>/etc/kernel/cmdline</code>, wenn dort ein ZFS-Root-Marker wie <code>root=ZFS=</code> vorhanden ist, sonst <code>/etc/default/grub</code>. Diese Heuristik ist kein Nachweis des tatsächlichen Bootloaders. Neu konfiguriertes IOMMU wird nach dem Neustart aktiv; prüfen Sie danach die tatsächlichen Gruppen.",
|
||||
"tipTitle": "Nachinstallation bereits eingerichtet?",
|
||||
"tipBody": "Bei bereits konfiguriertem und aktivem <postLink>VFIO-IOMMU-Support</postLink> besteht die Prüfung. Eine Einstellung für den nächsten Start allein beweist keinen aktiven Zustand.",
|
||||
"imageAlt": "Liste der erkannten GPUs mit Hersteller- und PCI-Adresse"
|
||||
@@ -58,7 +58,7 @@
|
||||
"<strong>Nur eine GPU.</strong> Die lokale Konsole kann durch VFIO ihre Ausgabe verlieren. Zuvor SSH- oder Webzugriff von einem anderen Rechner prüfen.",
|
||||
"<strong>AMD-Reset-Richtlinie.</strong> Liest <code>/sys/bus/pci/devices/<pci>/reset_method</code>. APU oder dedizierte Karte ohne FLR wird <em>durch die Assistentenrichtlinie blockiert</em>; unbekannter Untertyp ohne FLR verlangt Bestätigung. Dies beweist keine generelle technische Unmöglichkeit.",
|
||||
"<strong>D3cold-Zustand.</strong> AMD-Karten mit gemeldetem <code>D3cold</code> werden wegen möglicher Aktivierungsfehler blockiert. Stromversorgung und Firmware prüfen.",
|
||||
"<strong>IOMMU-Gruppe.</strong> Liest <code>/sys/kernel/iommu_groups/</code> und plant <em>alle Nicht-Brücken-Geräte</em> ein, auch Netzwerk- oder Speichercontroller. Vor Bestätigung prüfen. Bei ausstehendem IOMMU-Neustart wird zunächst nur die GPU-Funktion eingeplant; Isolation danach prüfen."
|
||||
"<strong>Analyse der IOMMU-Gruppe.</strong> Liest <code>/sys/kernel/iommu_groups/</code> und nimmt <em>alle Nicht-Brücken-Geräte</em> in den VM-Plan auf, möglicherweise auch Netzwerk- oder Speichercontroller. Das Skript listet sie nicht auf; prüfen Sie die Gruppe daher vor der Bestätigung selbst. Steht der IOMMU-Neustart noch aus, sind die tatsächlichen Gruppen nicht verfügbar und der Plan enthält zunächst nur die gewählte GPU-Funktion; prüfen Sie die Isolation nach dem Neustart."
|
||||
],
|
||||
"audioIntro": "<strong>Zugehöriges Audio.</strong> Zwei Fälle je nach Controllerposition:",
|
||||
"audioDgpu": "<strong>Dedizierte GPU:</strong> HDMI-Audio liegt oft auf Funktion <code>.1</code> desselben PCI-Slots und wird bei Erkennung aufgenommen. Nutzt der Host es bisher, verliert er durch die VM-Reservierung den Zugriff.",
|
||||
@@ -75,7 +75,7 @@
|
||||
"items": [
|
||||
"<strong>GPU verfügbar.</strong> Fortfahren ohne alte Zuweisung zu entfernen.",
|
||||
"<strong>Anderer VM zugewiesen.</strong> Quell-VM zuerst stoppen. Entweder <em>Einträge behalten und Autostart deaktivieren</em> oder <em>Einträge entfernen und Autostart behalten</em>. Bei bestehendem <code>vfio-pci</code> ohne nötige Hoständerungen kann VM→VM ohne Host-Neustart erfolgen.",
|
||||
"<strong>Von LXC genutzt.</strong> Bei normalen Containern <em>Konfiguration behalten und Autostart deaktivieren</em> oder <em>Geräte und alte <code>lxc.cgroup2.devices.allow</code>/<code>lxc.mount.entry</code>-Regeln entfernen, Autostart behalten</em>. OCI behält die Konfiguration und wird ohne Autostart gestoppt; GPU unter Apps entfernen. Familienbasierte Erkennung kann weitere Karten erfassen."
|
||||
"<strong>Von LXC genutzte GPU.</strong> Bei normalen Containern wählen Sie <em>GPU-Konfiguration behalten und Autostart deaktivieren</em> oder <em>GPU-Gerätekonfiguration entfernen und Autostart behalten</em>. Das Entfernen löscht die <code>devN</code>-Einträge und bei AMD/Intel auch alte <code>/dev/dri</code>-Regeln <code>lxc.mount.entry</code> und <code>lxc.cgroup2.devices.allow</code>. OCI-Container behalten ihre Konfiguration und werden mit deaktiviertem Autostart gestoppt; entfernen Sie ihre GPU über OCI manager Apps. Die Konflikterkennung erfolgt nach GPU-Gerätefamilie und kann weitere Karten dieser Familie erfassen."
|
||||
],
|
||||
"imageAlt": "Dialogangebot zum Entfernen des GPU aus einem LXC, bevor es dem VM zugewiesen wird",
|
||||
"smartTitle": "Zugehöriges Audio beim Entfernen prüfen",
|
||||
@@ -90,7 +90,7 @@
|
||||
},
|
||||
"summary": {
|
||||
"title": "Überprüfung der Bestätigungszusammenfassung",
|
||||
"body": "Endplan und besonders alle IOMMU-Mitglieder prüfen; bei Fehlern abbrechen. Das verhindert die Hauptänderungen, macht aber eine zuvor bestätigte IOMMU-Bootänderung nicht rückgängig.",
|
||||
"body": "Prüfen Sie den endgültigen Host- und VM-Plan und brechen Sie bei Fehlern ab. Er zeigt die IOMMU-Gruppe und die Anzahl ihrer Geräte, nicht jedes Mitglied; prüfen Sie die Gruppe daher vorher. Der Abbruch verhindert die Hauptänderungen, macht aber eine zuvor separat bestätigte Änderung der IOMMU-Bootkonfiguration nicht rückgängig.",
|
||||
"imageAlt": "Übersicht geplanter Änderungen an Host und VM"
|
||||
},
|
||||
"hostApply": {
|
||||
@@ -102,7 +102,7 @@
|
||||
"Schreibt <code>/etc/modprobe.d/iommu_unsafe_interrupts.conf</code> und <code>kvm.conf</code> mit <code>allow_unsafe_interrupts=1</code> und <code>ignore_msrs=1</code>. Kompatibilitätseinstellungen des Skripts, keine allgemeinen Windows/macOS-Anforderungen; unsichere Interrupts schwächen den Interrupt-Remapping-Schutz.",
|
||||
"<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>. Diese herstellerweiten Regeln können andere Karten mit demselben Treiber betreffen. Das Modul <code>nvidia</code> wird <strong>nur</strong> über <code>/etc/modprobe.d/proxmenux-nvidia-vfio-blacklist.conf</code> blockiert, wenn <em>alle</em> NVIDIA-Karten für VFIO erfasst sind.",
|
||||
"<code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> + <code>/etc/proxmenux/vfio-bind.bdfs</code> — <strong>Nur NVIDIA.</strong> Setzt <code>ATTR'{'driver_override'}'=\"vfio-pci\"</code> bei PCI ADD für erfasste BDFs einschließlich betroffener IOMMU-Gruppenfunktionen. Außerhalb kann <code>nvidia</code> erhalten bleiben. BDF-Regeln teilen keine Hardware-IOMMU-Gruppe.",
|
||||
"<strong>Nur AMD.</strong> Versucht ROM aus <code>/sys/bus/pci/.../rom</code> oder ACPI VFCT nach <code>/usr/share/kvm/vbios_<card>.bin</code> zu sichern. Bei Erfolg nutzt die VM <code>romfile=</code>. Ein gültiges ROM garantiert keine Initialisierung.",
|
||||
"<strong>Nur AMD.</strong> Versucht, das ROM aus <code>/sys/bus/pci/.../rom</code> oder ACPI VFCT nach <code>/usr/share/kvm/vbios_<vendor>_<device>.bin</code> zu sichern. Bei Erfolg nutzt die VM <code>romfile=</code>. Ein gültiger Dump garantiert keine erfolgreiche GPU-Initialisierung.",
|
||||
"<strong>Nur NVIDIA.</strong> Stoppt und deaktiviert <code>nvidia-persistenced</code>, <code>nvidia-powerd</code>, <code>nvidia-fabricmanager</code> nur, wenn alle NVIDIA-Karten VFIO zugeordnet sind. Im Mischbetrieb bleiben Dienste und <code>nvidia</code> für native Karten erhalten.",
|
||||
"<code>update-initramfs -u -k all</code> — läuft nur, wenn einer der oben genannten tatsächlich geändert."
|
||||
]
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "Funktionsweise",
|
||||
"body": "Fügt <code>dev<N></code> zu <code>/etc/pve/lxc/<ctid>.conf</code> für passende <code>/dev/dri/*</code>-, <code>/dev/kfd</code>- oder <code>/dev/nvidia*</code>-Geräte hinzu. Startet den Container, installiert distributionsabhängige Bibliotheken und gleicht <code>video</code> und <code>render</code> ab. Beschleunigung erfordert kompatible Hardware, Bibliotheken und App-Einstellungen."
|
||||
"body": "Fügt <code>dev<N></code>-Einträge zu <code>/etc/pve/lxc/<ctid>.conf</code> für passende <code>/dev/dri/*</code>-, <code>/dev/kfd</code>- oder <code>/dev/nvidia*</code>-Knoten hinzu. Startet den Container, installiert Userspace-Pakete für dessen Distribution und gleicht bei Intel/AMD die Gruppen <code>video</code> und <code>render</code> ab. Die Anwendungsbeschleunigung erfordert weiterhin kompatible Hardware, Bibliotheken und App-Einstellungen."
|
||||
},
|
||||
"compare": {
|
||||
"heading": "LXC-Freigabe und VM-Passthrough im Vergleich",
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
"pickCt": {
|
||||
"title": "LXC-Container auswählen",
|
||||
"body": "Listet geeignete LXC-Container mit ID und Name. OCI-Container fehlen bewusst; ihre Geräte werden unter Apps im OCI-Manager geändert. Der Container wird zur Konfiguration gestoppt, zur Installation gestartet und normalerweise in den Ausgangszustand zurückversetzt.",
|
||||
"body": "Listet geeignete LXC-Container mit ID und Name; OCI-Container sind ausgeschlossen und nutzen für Geräte OCI manager Apps. Der Container wird gestoppt, falls er läuft, zur Treiberinstallation gestartet und normalerweise in seinen ursprünglichen Zustand (laufend/gestoppt) zurückversetzt.",
|
||||
"imageAlt": "Auswahl eines vorhandenen LXC-Containers"
|
||||
},
|
||||
"selectGpu": {
|
||||
@@ -98,7 +98,7 @@
|
||||
},
|
||||
"applyConfig": {
|
||||
"title": "Anwenden der LXC-Konfigurationsänderungen",
|
||||
"body1": "Stoppt den Container und bearbeitet <code>/etc/pve/lxc/<ctid>.conf</code>. <code>dev<N></code>-Einträge enthalten die gewählten GIDs. Der <code>dev:</code>-Mechanismus ersetzt hier manuelle <code>lxc.mount.entry</code>-Regeln. Ergebnis und Rechte prüfen.",
|
||||
"body1": "Stoppt den Container, falls er läuft, und bearbeitet <code>/etc/pve/lxc/<ctid>.conf</code>. Nummerierte <code>dev<N></code>-Einträge enthalten die Host-GID von <code>video</code> oder <code>render</code>. Vorhandene <code>lxc.mount.entry</code>-Bind-Zeilen für <code>/dev/dri</code> werden durch <code>dev:</code>-Einträge ersetzt; prüfen Sie die resultierende Konfiguration und die Rechte.",
|
||||
"body2": "Beispiel nach Intel + NVIDIA auf demselben Container:"
|
||||
},
|
||||
"installDrivers": {
|
||||
@@ -127,14 +127,14 @@
|
||||
},
|
||||
"alignGids": {
|
||||
"title": "GIDs ausrichten und Zustand wiederherstellen",
|
||||
"body1": "Liest die Host-GIDs von <code>video</code> und <code>render</code>; 44/104 sind nur Ersatzwerte. Passt <code>/etc/group</code> im Container an. <code>video:44</code> und <code>render:104</code> sind Beispiele, keine universellen IDs. App-Mitgliedschaft und wirksame Rechte prüfen.",
|
||||
"body1": "Liest bei Intel/AMD die Host-GIDs von <code>video</code> und <code>render</code>, wobei 44/104 nur als Ersatzwerte dienen, und passt dann <code>/etc/group</code> im Container entsprechend an; reine NVIDIA-Durchläufe überspringen diesen Schritt. Einträge wie <code>video:44</code> und <code>render:104</code> sind Beispiele, keine universellen IDs. Prüfen Sie die App-Mitgliedschaft und die wirksamen Geräterechte.",
|
||||
"body2": "Bei normalem Abschluss wird ein ursprünglich gestoppter Container erneut gestoppt; ein laufender bleibt aktiv. Bei Start- oder Installationsfehlern Endzustand und Protokoll prüfen."
|
||||
}
|
||||
},
|
||||
"vendors": {
|
||||
"heading": "Herstellerspezifische Hinweise",
|
||||
"intelHeading": "Intel iGPU",
|
||||
"intelBody": "Intel-Beschleunigung mit <em>Quick Sync</em> hängt von Generation, Codecs und App-Einstellungen ab. Teilt vorhandene Knoten wie <code>/dev/dri/card0</code> und <code>/dev/dri/renderD128</code>; Nummern können abweichen. Der native Host-Treiber, etwa <code>i915</code>, muss sie bereitstellen.",
|
||||
"intelBody": "Intel-Medienbeschleunigung, einschließlich <em>Quick Sync</em>, hängt von GPU-Generation, Codecs und App-Einstellungen ab. Das Skript teilt diejenigen von <code>/dev/dri/card0</code>, <code>card1</code>, <code>renderD128</code> und <code>renderD129</code>, die vorhanden sind; andere Knotennummern werden nicht hinzugefügt. Der Host muss sie bereits über seinen nativen Treiber bereitstellen, etwa <code>i915</code>.",
|
||||
"amdHeading": "AMD",
|
||||
"amdBody": "AMD nutzt DRI für Mesa/VA-API. Vorhandenes <code>/dev/kfd</code> wird ebenfalls geteilt. ROCm/OpenCL benötigt unterstützte Hardware und passende Bibliotheken; die Gerätefreigabe installiert keinen vollständigen ROCm-Stack.",
|
||||
"nvidiaHeading": "NVIDIA",
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
"title": "PCIe: Kernelmodule gasket und apex über DKMS",
|
||||
"body": "Läuft nur bei erkannter PCIe-/M.2-Coral. Die Module werden für den aktuell laufenden Host-Kernel gebaut.",
|
||||
"items": [
|
||||
"<strong>Bereinigung.</strong> Bei einem fehlerhaften Paketstatus einer früheren <code>gasket-dkms</code>-Installation versucht das Skript, sie vor dem Neubau zu entfernen.",
|
||||
"<strong>Bereinigung.</strong> Ein vorhandenes <code>gasket-dkms</code>-Paket wird vor dem Neubau entfernt; befindet es sich in einem fehlerhaften Paketstatus, erzwingt das Skript dessen Entfernung und Purge.",
|
||||
"<strong>Build-Abhängigkeiten:</strong> <code>git</code>, <code>dkms</code>, <code>build-essential</code>, <code>proxmox-headers-$(uname -r)</code>."
|
||||
],
|
||||
"cloneIntro": "<strong>Treiberquellen klonen.</strong> Bevorzugt <feranickLink>feranick/gasket-driver</feranickLink>, ersatzweise <googleLink>google/gasket-driver</googleLink>. Ein erfolgreicher Build setzt Kernelkompatibilität voraus. Die Google-Quellen erhalten folgende versionsabhängige Patches:",
|
||||
@@ -132,7 +132,7 @@
|
||||
"Entfernt <code>gasket-dkms</code>, <code>libedgetpu1-std</code> und <code>libedgetpu1-max</code> vollständig und führt <code>apt-get autoremove --purge</code> aus.",
|
||||
"Löscht <code>/etc/udev/rules.d/99-coral-apex.rules</code> und stellt die Standardgruppe in <code>60-gasket-dkms.rules</code> wieder her, falls vorhanden.",
|
||||
"Prüft die zusätzlichen Mitglieder von <code>apex</code>. <strong>Bei leerer Liste</strong> wird die Gruppe zu entfernen versucht, sonst bleibt <code>apex</code> mit Mitgliederhinweis erhalten. Benutzer mit dieser primären Gruppe werden nicht vollständig geprüft.",
|
||||
"Entfernt alte Repository-Einträge wie <code>/etc/apt/sources.list.d/coral-edgetpu.list</code> und Schlüsselbunde namens <code>coral-edgetpu-archive-keyring.gpg</code>. Der aktuelle Schlüsselbund /etc/apt/keyrings/coral-edgetpu.gpg bleibt erhalten.",
|
||||
"Entfernt die Repository-Liste <code>/etc/apt/sources.list.d/coral-edgetpu.list</code>, die alte <code>coral-cloud.list</code> und alte Schlüsselbunde namens <code>coral-edgetpu-archive-keyring.gpg</code>. Der aktuelle Schlüsselbund unter <code>/etc/apt/keyrings/coral-edgetpu.gpg</code> wird durch diesen Ablauf nicht entfernt.",
|
||||
"Bietet einen Neustart <strong>nur bei zuvor installiertem PCIe-Pfad</strong> an, um noch aktive Module zu entladen. Reine USB-Entfernung braucht keinen Neustart."
|
||||
],
|
||||
"lxcWarnTitle": "LXC Container mit apex Passthrough",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "Funktionsweise",
|
||||
"body": "Erkennt die GPU und bietet gepflegte Zweige mit ihrer PCI-ID. Sperrt <code>nouveau</code>, lädt den offiziellen <code>.run</code>-Installer, nutzt DKMS und installiert <code>nvidia-persistenced</code> sowie udev-Regeln; NVENC-Patch optional. Build-Prüfungen beziehen sich auf den laufenden Kernel; erfolgreiche Kompilierung garantiert nicht jede App. NVIDIA-LXC können passende Userspace-Bibliotheken erhalten."
|
||||
"body": "ProxMenux erkennt die GPU und bietet gepflegte NVIDIA-Zweige an, die ihre PCI-ID aufführen. Es sperrt <code>nouveau</code>, lädt den offiziellen <code>.run</code>-Installer, nutzt DKMS, installiert <code>nvidia-persistenced</code>, udev-Regeln und das NVIDIA Container Toolkit und bietet einen optionalen NVENC-Patch an. Build-Prüfungen beziehen sich auf den laufenden Kernel; erfolgreiche Kompilierung garantiert nicht, dass jede App funktioniert. Vorhandenen NVIDIA-LXC wird eine Aktualisierung der Userspace-Bibliotheken angeboten, versionsgleich außer unter Arch."
|
||||
},
|
||||
"who": {
|
||||
"heading": "Für wen ist das?",
|
||||
@@ -89,7 +89,7 @@
|
||||
},
|
||||
"reboot": {
|
||||
"title": "Neustart",
|
||||
"body": "Erstellt <code>initramfs</code> für alle Kernel neu und bietet den Neustart an. <strong>Diesen Neustart einplanen</strong>, um Module und nouveau-Konfiguration beim Start zu prüfen, auch wenn der Treiber vorher bereits antwortet."
|
||||
"body": "Nach der Treiberinstallation erstellt das Skript <code>initramfs</code> für alle Kernel neu; sein letzter Schritt bietet einen Neustart an. <strong>Diesen Neustart einplanen</strong>, um die dauerhafte Modul- und nouveau-Konfiguration bei einem frischen Start zu prüfen, auch wenn der neue Treiber vor dem Neustart bereits antwortet."
|
||||
}
|
||||
},
|
||||
"reinstallUninstall": {
|
||||
@@ -102,8 +102,8 @@
|
||||
"uninstallHeading": "Deinstallieren – Was entfernt wird",
|
||||
"uninstallIntro": "Nach einer Ja/Nein-Bestätigung werden folgende Komponenten entfernt:",
|
||||
"uninstallItems": [
|
||||
"Führt <code>nvidia-uninstall --silent</code> für die <code>.run</code>-Installation aus, stoppt und deaktiviert <code>nvidia-persistenced</code> und <code>nvidia-powerd</code> und versucht, <code>nvidia_uvm</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code> und <code>nvidia</code> zu entladen. NVIDIA-LXC sind betroffen; aktive Clients können das Entladen verhindern.",
|
||||
"Führt <code>apt purge</code> auf <code>nvidia-*</code>, <code>libnvidia-*</code>, <code>cuda-*</code> und <code>libcudnn*</code> aus, entfernt den DKMS-Quellbaum und den <code>/opt/nvidia</code>-.run-Installer-Cache.",
|
||||
"Stoppt und deaktiviert <code>nvidia-persistenced</code> und <code>nvidia-powerd</code>, versucht, <code>nvidia_uvm</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code> und <code>nvidia</code> zu entladen, und führt dann <code>nvidia-uninstall --silent</code> für die <code>.run</code>-Installation aus. Von NVIDIA abhängige LXC-Workloads sind betroffen; aktive Clients können das Entladen verhindern.",
|
||||
"Führt <code>apt purge</code> auf <code>nvidia-*</code>, <code>libnvidia-*</code>, <code>cuda-*</code> und <code>libcudnn*</code> aus, entfernt den DKMS-Quellbaum sowie die Ordner <code>nvidia-persistenced</code> und <code>nvidia-patch</code> unter <code>/opt/nvidia</code>.",
|
||||
"Entfernt die Module-Load Config (<code>/etc/modules-load.d/nvidia-vfio.conf</code>) und die Nouveau Blacklist-Einträge von ProxMenux. Legacy zweizeilige ProxMenux-Blacklist-Dateien werden migriert und entfernt; modifizierte oder nicht verwandte Administratordateien bleiben erhalten.",
|
||||
"Entfernt <code>/etc/udev/rules.d/70-nvidia.rules</code> und setzt den NVENC-Status im verwalteten Installationsverzeichnis auf <em>removed</em>; es gibt keine separate Statusdatei.",
|
||||
"Erstellt <code>initramfs</code> für alle Kernel neu, führt passend zur Bootkonfiguration <code>proxmox-boot-tool refresh</code> aus und fragt nach einem Neustart."
|
||||
|
||||
@@ -42,21 +42,21 @@
|
||||
},
|
||||
{
|
||||
"situation": "Ich möchte alle Gastzuweisungen dieser GPU entfernen.",
|
||||
"use": "Der LXC-Modus gibt die GPU an den Host-Treiber zurück; entfernen Sie Gastzuweisungen über die jeweiligen Konfliktoptionen. Die GPU bleibt dabei an einen Treiber gebunden."
|
||||
"use": "Der LXC-Modus gibt die GPU an den Host-Treiber zurück; die VM-Konfliktrichtlinie kann hostpci-Einträge entfernen, LXC-Geräteeinträge müssen jedoch separat entfernt werden. Die GPU bleibt dabei an einen Treiber gebunden."
|
||||
}
|
||||
]
|
||||
},
|
||||
"prereqs": {
|
||||
"title": "Vorbereitung",
|
||||
"assigned": "<strong>Bereits zugewiesene GPU</strong> in einer VM über VFIO oder in einem LXC. Für die erste Zuweisung GPU zu VM / LXC hinzufügen verwenden.",
|
||||
"iommu": "<strong>IOMMU muss auf dem Host aktiv sein</strong> beim Wechsel <em>in</em> den VM-Modus. Firmware und Kernel-Unterstützung sind entscheidend; explizite Parameter sind nicht immer nötig. Bei Bedarf versucht das Skript <code>intel_iommu=on iommu=pt</code> oder <code>amd_iommu=on</code> über den aktiven Bootweg mit <code>proxmox-boot-tool refresh</code> oder <code>update-grub</code>. Warnungen prüfen und bei Aufforderung neu starten.",
|
||||
"iommu": "<strong>IOMMU muss auf dem Host aktiv sein</strong> beim Wechsel <em>in</em> den VM-Modus. Firmware-Einstellungen und Kernel-Unterstützung sind beide entscheidend. Fehlt <code>intel_iommu=on</code> oder <code>amd_iommu=on</code> im laufenden Kernel, fügt das Skript es mit <code>iommu=pt</code> zu <code>/etc/kernel/cmdline</code> (ZFS-Root-Marker) oder <code>/etc/default/grub</code> hinzu und führt dann <code>proxmox-boot-tool refresh</code> oder <code>update-grub</code> aus. Prüfen Sie eventuelle Warnungen und starten Sie bei Aufforderung neu.",
|
||||
"iommuCheck": "dmesg | grep -i 'IOMMU enabled' | head -1",
|
||||
"reboot": "<strong>Neustart einplanen.</strong> Dauerhafte Treiber- und Bootänderungen können ein neues initramfs und einen Neustart erfordern. Das Skript fragt am Ende danach.",
|
||||
"knowList": "<strong>Betroffene VMs und LXC kennen.</strong> Das Skript erkennt Verweise und fragt nach dem Umgang mit jedem Gast; eine bekannte Liste erleichtert die Prüfung."
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Nicht alle GPUs können sicher an einen VM übergeben werden",
|
||||
"body": "Das Skript sperrt den VM-Modus für bestimmte Geräte-IDs, darunter <code>8086:5a84</code> und <code>8086:5a85</code>, gemäß seiner Kompatibilitätsrichtlinie. Bei Übereinstimmung erscheint eine Warnung. Die Liste verhindert nicht den Wechsel <em>in</em> den LXC-Modus; andere Prüfungen gelten weiterhin."
|
||||
"body": "Das Skript sperrt den VM-Modus für die Geräte-IDs <code>8086:5a84</code> und <code>8086:5a85</code> gemäß seiner Kompatibilitätsrichtlinie. Passt eine gewählte GPU, bricht es den Wechsel in den VM-Modus ab und kehrt zur GPU-Auswahl zurück oder beendet sich, wenn es die einzige GPU ist. Diese Sperrliste verhindert nicht den Wechsel <em>in</em> den LXC-Modus; andere Prüfungen können weiterhin gelten."
|
||||
},
|
||||
"running": {
|
||||
"heading": "Skript ausführen",
|
||||
@@ -85,7 +85,7 @@
|
||||
"intro": "Basierend auf dem aktuellen Modus schlägt das Skript das Gegenteil als Ziel vor:",
|
||||
"items": [
|
||||
"<strong>VM → LXC:</strong> Entfernt die Bindung an <code>vfio-pci</code>, damit der native Treiber (<code>nvidia</code>, <code>amdgpu</code>, <code>i915</code>) die GPU nutzen kann. Bei NVIDIA werden die betreffenden BDF-Einträge aus <code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> für den nächsten Start entfernt.",
|
||||
"<strong>LXC → VM:</strong> bereitet die Bindung an <code>vfio-pci</code> vor. AMD / Intel sperrt den nativen Treiber und nutzt <code>options vfio-pci ids=…</code>. Bei NVIDIA wird <code>nvidia</code> <strong>nicht</strong> global gesperrt: BDF-Regeln setzen <code>driver_override=vfio-pci</code> für Geräte der betroffenen IOMMU-Gruppen. NVIDIA-GPUs außerhalb dieser Gruppen können <code>nvidia</code> behalten. Alle Gruppenmitglieder prüfen."
|
||||
"<strong>LXC → VM:</strong> bereitet die Bindung an <code>vfio-pci</code> vor. AMD / Intel sperren den nativen Treiber und nutzen <code>options vfio-pci ids=…</code>. Bei NVIDIA wird <code>nvidia</code> nur dann global gesperrt, wenn jede NVIDIA-GPU des Hosts in VFIO ist; andernfalls setzen Regeln pro BDF <code>driver_override=vfio-pci</code> für die Geräte der betroffenen IOMMU-Gruppen, und NVIDIA-GPUs außerhalb dieser Gruppen behalten <code>nvidia</code>. Prüfen Sie vor dem Wechsel alle Gruppenmitglieder."
|
||||
],
|
||||
"outro": "Bestätigen Sie die Richtung oder brechen Sie ab."
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user