{ "meta": { "title": "GPU zu LXC hinzufügen | ProxMenux-Dokumentation", "description": "Intel-, AMD- oder NVIDIA-GPU mit LXC teilen. ProxMenux richtet Geräte, Gruppen und Bibliotheken passend zur Distribution ein; die App muss Beschleunigung unterstützen und entsprechend eingerichtet sein." }, "header": { "title": "GPU zu LXC hinzufügen", "description": "GPU-Zugriff über Host-Geräteknoten mit LXC teilen. Der Treiber bleibt auf dem Host; Anwendungen brauchen kompatible Bibliotheken und eigene Einstellungen.", "section": "Hardware: GPUs und Coral-TPU" }, "intro": { "title": "Funktionsweise", "body": "Fügt dev<N>-Einträge zu /etc/pve/lxc/<ctid>.conf für passende /dev/dri/*-, /dev/kfd- oder /dev/nvidia*-Knoten hinzu. Startet den Container, installiert Userspace-Pakete für dessen Distribution und gleicht bei Intel/AMD die Gruppen video und render ab. Die Anwendungsbeschleunigung erfordert weiterhin kompatible Hardware, Bibliotheken und App-Einstellungen." }, "compare": { "heading": "LXC-Freigabe und VM-Passthrough im Vergleich", "intro": "LXC teilt den Kernel und kann die GPU zwischen Host und Containern teilen. Bei vollständigem VM-Passthrough gehört das Gerät exklusiv zur VM und steht dem Host-Treiber nicht zur Verfügung.", "headerFeature": "Merkmal", "headerLxc": "LXC (diese Seite)", "headerVm": "VM", "rows": [ { "feature": "Kann der Host die GPU weiter nutzen?", "lxc": "Ja", "vm": "Nein — ausschließlich für VM" }, { "feature": "Mehrere Container teilen sich einen GPU?", "lxc": "Ja", "vm": "Nein" }, { "feature": "Benötigt IOMMU / VFIO auf dem Host?", "lxc": "Nein", "vm": "Ja" }, { "feature": "Reboot erforderlich?", "lxc": "Normalerweise nein (neustarten Sie einfach den CT)", "vm": "Bei Änderungen am Host-Treiber oder IOMMU; nicht bei jeder Zuweisung" }, { "feature": "Gastbetriebssysteme", "lxc": "Nur Linux (LXC ist nur Linux)", "vm": "Unterstütztes Gastsystem mit kompatiblem GPU-Treiber" } ] }, "prereqs": { "title": "Vorbereitung", "gpu": "GPU auf dem Host von Intel, AMD oder NVIDIA, erkannt mit lspci.", "gpuCheck": "lspci | grep -iE 'VGA|3D|Display'", "vfio": "Die GPU darf nicht an vfio-pci gebunden sein. Sie benötigt den nativen Host-Treiber. Bei VM-Zuweisung bietet das Skript GPU-Modus wechseln an.", "nvidia": "Für NVIDIA: zuerst den Host-Treiber installieren. Die Containerbibliotheken müssen zur Version passen. Siehe NVIDIA-Treiber auf dem Host installieren.", "nvidiaCheck": "nvidia-smi", "container": "Vorhandener LXC-Container. Das Skript erstellt keinen. Beide Modi werden unterstützt; privilegiert ist nicht grundsätzlich nötig. Geräteeinträge und numerische App-Gruppenrechte müssen passen." }, "unpriv": { "title": "Unterstützt privilegierte und unprivilegierte Container", "body": "Das Skript schreibt dev<N>-Einträge in die LXC-Konfiguration und richtet auf unprivilegierten Containern die video- und render-GIDs zwischen Host und Container so aus, dass die GPU-Geräteknoten von innen erreichbar sind, ohne dass Sie lxc.idmap von Hand bearbeiten müssen." }, "running": { "heading": "Installationsprogramm ausführen", "body": "Öffnen Sie ProxMenux und wählen Sie Hardware: GPUs und Coral-TPU → GPU zu LXC hinzufügen.", "imageAlt": "Menüeintrag zum Hinzufügen einer GPU zu LXC" }, "howRuns": { "heading": "Ablauf des Skripts", "body": "Container und GPU-Familien auswählen und Prüfungen durchlaufen. Danach wird der Container ohne weitere Abschlussbestätigung gestoppt und geändert. Optionale VFIO-Bereinigung wird separat bestätigt und kann den Host vorher ändern." }, "walkthrough": { "heading": "Schritt für Schritt", "detect": { "title": "Host-GPUs erkennen", "body": "Sucht GPU-Controller mit lspci. Prüft für NVIDIA das Modul nvidia und nvidia-smi; die erkannte Version bestimmt den .run-Installer für den Container.", "tipTitle": "NVIDIA nicht bereit?", "tipBody": "Wenn Modul oder NVIDIA-Funktion auf dem Host fehlen, zuerst NVIDIA-Treiber auf dem Host installieren und den Treiber prüfen." }, "pickCt": { "title": "LXC-Container auswählen", "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": { "title": "GPU-Familien auswählen", "body": "Die Liste wählt Herstellerfamilien, kein isoliertes PCI-Gerät. Intel/AMD fügen die vorgesehenen DRI-Knoten hinzu; NVIDIA seine verfügbaren Geräteknoten, möglicherweise für mehrere Karten. Eine einzelne Familie wird automatisch gewählt. Ergebnis besonders bei mehreren GPUs prüfen.", "imageAlt": "Liste erkannter GPU-Familien mit Name und PCI-Adresse" }, "preflight": { "title": "Vorabprüfungen", "imageAlt": "Angebot zum Moduswechsel einer an vfio-pci gebundenen GPU", "intro": "Drei Prüfungen können den Ablauf stoppen oder umleiten:", "items": [ "SR-IOV-Prüfung. Der Assistent blockiert eine VF oder PF mit aktiven VFs. Das liegt an seiner breiten Geräteauswahl und ist kein generelles LXC-Verbot. Solche Geräte separat konfigurieren.", "An vfio-pci gebunden. Der native Treiber kann keine /dev/dri/*- oder /dev/nvidia*-Geräte anlegen. GPU-Modus wechseln wird angeboten; Neustarthinweise befolgen und erneut starten.", "Bereits eingerichtet. Sind alle Geräte vorhanden, beendet das Skript sich ohne Bibliotheks-Neuinstallation. Fehlende ausgewählte Familien werden weiter bearbeitet." ] }, "applyConfig": { "title": "Anwenden der LXC-Konfigurationsänderungen", "body1": "Stoppt den Container, falls er läuft, und bearbeitet /etc/pve/lxc/<ctid>.conf. Nummerierte dev<N>-Einträge enthalten die Host-GID von video oder render. Vorhandene lxc.mount.entry-Bind-Zeilen für /dev/dri werden durch dev:-Einträge ersetzt; prüfen Sie die resultierende Konfiguration und die Rechte.", "body2": "Beispiel nach Intel + NVIDIA auf demselben Container:" }, "installDrivers": { "title": "Starten Sie den Container und installieren Sie Treiber im Inneren", "body": "Startet den Container und wartet bis zu etwa 30 Sekunden auf pct exec. Erkennt die Distribution aus /etc/os-release und installiert passende Pakete.", "headerDistro": "Distribution", "headerInt": "Intel / AMD", "headerNvidia": "NVIDIA", "rows": [ { "distro": "Alpine", "intel": "apk add mesa-va-gallium intel-media-driver libva-utils", "nvidia": "apk add nvidia-utils" }, { "distro": "Arch / Manjaro", "intel": "pacman -Sy intel-media-driver mesa libva-utils", "nvidia": "pacman -Sy nvidia-utils" } ], "debianDistro": "Debian / Ubuntu / andere", "debianIntel": "apt-get install va-driver-all intel-opencl-icd vainfo", "debianNvidia": ".run auf dem Host entpacken → pct push → mit --no-kernel-modules --no-dkms installieren.", "whyTitle": "Warum Debian den NVIDIA-.run-Installer nutzt", "whyBody": "Repository-Pakete passen möglicherweise nicht zum Host. Bibliotheken müssen zum geladenen Host-Modul passen, etwa für nvidia-smi. Debian/glibc nutzt den zwischengespeicherten .run-Installer der Host-Version, entpackt und archiviert ihn auf dem Host, überträgt mit pct push und installiert mit --no-kernel-modules --no-dkms. Alpine und Arch nutzen Repository-Pakete; Versionen prüfen." }, "alignGids": { "title": "GIDs ausrichten und Zustand wiederherstellen", "body1": "Liest bei Intel/AMD die Host-GIDs von video und render, wobei 44/104 nur als Ersatzwerte dienen, und passt dann /etc/group im Container entsprechend an; reine NVIDIA-Durchläufe überspringen diesen Schritt. Einträge wie video:44 und render:104 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-Medienbeschleunigung, einschließlich Quick Sync, hängt von GPU-Generation, Codecs und App-Einstellungen ab. Das Skript teilt diejenigen von /dev/dri/card0, card1, renderD128 und renderD129, die vorhanden sind; andere Knotennummern werden nicht hinzugefügt. Der Host muss sie bereits über seinen nativen Treiber bereitstellen, etwa i915.", "amdHeading": "AMD", "amdBody": "AMD nutzt DRI für Mesa/VA-API. Vorhandenes /dev/kfd wird ebenfalls geteilt. ROCm/OpenCL benötigt unterstützte Hardware und passende Bibliotheken; die Gerätefreigabe installiert keinen vollständigen ROCm-Stack.", "nvidiaHeading": "NVIDIA", "nvidiaBody": "Teilt verfügbare /dev/nvidia*-Geräte. Passende Treiberversionen sind für nvidia-smi entscheidend. Debian/glibc nutzt den .run-Installer der Host-Version, Alpine/Arch Repository-Pakete. Unter 2048 MiB konfiguriertem RAM bietet der Debian-Pfad eine vorübergehende Erhöhung mit Wiederherstellung; benötigt außerdem 1500 MiB freien Plattenplatz.", "updateTitle": "Nach Host-NVIDIA-Update Containerbibliotheken prüfen", "updateBody": "Alte Bibliotheken können in nvidia-smi Versionsfehler verursachen. Der NVIDIA-Host-Installer bietet Containerupdates. Erneutes Hinzufügen kann bei vorhandenen Geräten sofort enden und garantiert kein Bibliotheksupdate. Versionen prüfen und passende Pakete oder Userspace-Installation aktualisieren." }, "verification": { "heading": "Überprüfung", "body": "Im Container prüfen, ob die GPU sichtbar und nutzbar ist." }, "troubleshoot": { "heading": "Fehlerbehebung", "mismatchTitle": "nvidia-smi: Failed to initialize NVML: Driver/library version mismatch", "mismatchBody": "Bibliotheken passen nicht zum geladenen Host-Modul. Versionen prüfen und Container-Userspace aktualisieren. Der zwischengespeicherte .run-Installer gilt für Debian/glibc; bei vorhandenen Geräteeinträgen kann das Hinzufügen vorher enden.", "denyTitle": "Genehmigung verweigert auf /dev/dri/renderD128 im Container", "denyBody": "Geräteeintrag und numerische Rechte der Gruppe render prüfen; App-Benutzer muss zu render gehören. Falls verfügbar, mit usermod -aG render <user> zu render hinzufügen; Platzhalter durch Kontonamen ersetzen. Sitzung neu starten. Privilegmoduswechsel ist keine allgemeine Lösung.", "vainfoTitle": "vainfo sagt: VA-API Version 1.xx; konnte nicht initialisiert werden", "vainfoBody": "Gerätezugriff und VA-API-Treiber prüfen. Paketnamen hängen von der Distribution ab: etwa intel-media-driver für unterstützte neuere Intel-GPUs, i965-va-driver für ältere und mesa-va-drivers für AMD. Die Meldung allein beweist kein fehlendes Paket.", "logTitle": "Installationsprotokoll", "logBody": "Jeder Durchlauf schreibt /tmp/add_gpu_lxc.log auf dem Host. Bei Hilfsanfragen beifügen." }, "related": { "heading": "Verwandte Themen", "items": [ { "label": "Installieren Sie NVIDIA Treiber (Host)", "href": "/docs/hardware/nvidia-host", "tail": " — Host-Treiber vor der NVIDIA-Freigabe installieren." }, { "label": "GPU zu VM hinzufügen (Passthrough)", "href": "/docs/hardware/gpu-vm-passthrough", "tail": " — Alternative für eine exklusiv zugewiesene VM-GPU." }, { "label": "GPU-Modus wechseln (VM ↔ LXC)", "href": "/docs/hardware/switch-gpu-mode", "tail": " — GPU zwischen LXC-Freigabe und VM-Zuweisung wechseln." }, { "label": "GPU Durchgangsbefehle", "href": "/docs/help-info/gpu-commands", "tail": "Schnellreferenz für verwandte Shell-Befehle." } ] } }