{ "meta": { "title": "Lägg till GPU i LXC | ProxMenux-dokumentation", "description": "Dela Intel-, AMD- eller NVIDIA-GPU med LXC. ProxMenux konfigurerar enheter, grupper och bibliotek efter distribution; appen måste stödja och vara inställd för acceleration." }, "header": { "title": "Lägg till GPU i LXC", "description": "Delar GPU-åtkomst med LXC via värdens enheter. Drivrutinen finns kvar på värden; apparna behöver kompatibla bibliotek och egna inställningar.", "section": "Hårdvara: GPU:er och Coral-TPU" }, "intro": { "title": "Vad det gör", "body": "Lägger till dev<N>-poster i /etc/pve/lxc/<ctid>.conf för tillämpliga /dev/dri/*-, /dev/kfd- eller /dev/nvidia*-noder. Startar containern, installerar userspace-paket för dess distribution och anpassar, för Intel/AMD, grupperna video och render. Appacceleration kräver fortfarande kompatibel hårdvara, bibliotek och appinställningar." }, "compare": { "heading": "LXC-delning jämfört med VM-passthrough", "intro": "LXC delar kerneln och kan dela GPU:n mellan värd och containrar. Med fullständig VM-passthrough tillhör enheten bara den VM:n och är inte tillgänglig för värdens drivrutin.", "headerFeature": "Funktion", "headerLxc": "LXC (denna sida)", "headerVm": "VM", "rows": [ { "feature": "Värd fortsätter att använda GPU?", "lxc": "Ja", "vm": "Nej – exklusivt för VM" }, { "feature": "Flera containrar som delar en GPU?", "lxc": "Ja", "vm": "Nej" }, { "feature": "Kräver IOMMU/VFIO på värden?", "lxc": "Nej", "vm": "Ja" }, { "feature": "Reboot krävs?", "lxc": "Normalt nej (bara starta om CT)", "vm": "När värdens drivrutin eller IOMMU ändras; inte för varje tilldelning" }, { "feature": "Gästoperativsystem", "lxc": "Endast Linux (LXC är Linux-bara)", "vm": "Gästsystem som stöds med en kompatibel GPU-drivrutin" } ] }, "prereqs": { "title": "Innan du börjar", "gpu": "GPU på värden från Intel, AMD eller NVIDIA, identifierad med lspci.", "gpuCheck": "lspci | grep -iE 'VGA|3D|Display'", "vfio": "GPU:n får inte vara bunden till vfio-pci. Den behöver värdens vanliga drivrutin. Vid VM-tilldelning erbjuder skriptet Byt GPU-läge.", "nvidia": "För NVIDIA: installera först värdens drivrutin. Containerns bibliotek måste passa versionen. Använd Installera NVIDIA-drivrutiner på värden.", "nvidiaCheck": "nvidia-smi", "container": "En befintlig LXC-container. Skriptet skapar ingen. Båda lägena stöds; en privilegierad container krävs inte alltid. Enhetsposter och appens numeriska grupprättigheter måste passa." }, "unpriv": { "title": "Stöder privilegierade och oprivilegierade containrar", "body": "Skriptet skriver dev<N>-poster till LXC-konfigen och på oprivilegierade behållare anpassar video och render GID mellan värd och behållare så att GPU-enhetsnoderna nås inifrån utan att du behöver handredigera lxc.idmap." }, "running": { "heading": "Kör installationen", "body": "Öppna ProxMenux och välj Hårdvara: GPU:er och Coral-TPU → Lägg till GPU i LXC.", "imageAlt": "Menyval för att lägga till GPU i LXC" }, "howRuns": { "heading": "Så fungerar skriptet", "body": "Välj container och GPU-familjer och gå igenom kontrollerna. Därefter stoppas och ändras containern utan ytterligare slutbekräftelse. Valfri VFIO-rensning bekräftas separat och kan ändra värden tidigare." }, "walkthrough": { "heading": "Steg för steg", "detect": { "title": "Identifiera värdens GPU:er", "body": "Söker GPU-kontroller med lspci. För NVIDIA kontrolleras modulen nvidia och nvidia-smi; den upptäckta versionen styr containerns .run-installation.", "tipTitle": "NVIDIA är inte redo?", "tipBody": "Om modulen saknas eller NVIDIA inte fungerar på värden, använd först Installera NVIDIA-drivrutiner på värden och kontrollera drivrutinen." }, "pickCt": { "title": "Välj en LXC-container", "body": "Listar lämpliga LXC-containrar med ID och namn; OCI-containrar undantas och använder OCI manager Apps för enheter. Containern stoppas om den körs, startas för installation av drivrutiner och återgår normalt till sitt ursprungliga läge (igång/stoppad).", "imageAlt": "Val av en befintlig LXC-container" }, "selectGpu": { "title": "Välj GPU-familjer", "body": "Listan väljer tillverkarfamiljer, inte en isolerad PCI-enhet. Intel/AMD lägger till avsedda DRI-noder och NVIDIA sina tillgängliga enheter, ibland för flera kort. En enda familj väljs automatiskt. Kontrollera resultatet, särskilt med flera GPU:er.", "imageAlt": "Lista över upptäckta GPU-familjer med namn och PCI-adress" }, "preflight": { "title": "Förkontroller", "imageAlt": "Erbjudande om lägesbyte för en GPU bunden till vfio-pci", "intro": "Tre kontroller, som alla kan blockera eller omdirigera dig:", "items": [ "SR-IOV-kontroll. Guiden blockerar en VF eller PF med aktiva VF:er. Det beror på dess breda enhetsval och är inget allmänt förbud i LXC. Konfigurera dessa enheter separat.", "Bunden till vfio-pci. Den vanliga drivrutinen kan inte skapa /dev/dri/* eller /dev/nvidia*. Byt GPU-läge erbjuds; följ anvisningarna om omstart och återkom sedan.", "Redan konfigurerad. Om alla enheter finns avslutas skriptet utan att installera om bibliotek. Fortsätter bara med valda familjer som saknas." ] }, "applyConfig": { "title": "Tillämpa ändringarna i LXC-konfigurationen", "body1": "Stoppar containern om den körs och ändrar /etc/pve/lxc/<ctid>.conf. Numrerade dev<N>-poster innehåller värdens GID för video eller render. Befintliga lxc.mount.entry-bindrader för /dev/dri ersätts av dev:-poster; kontrollera slutlig konfiguration och rättigheter.", "body2": "Exempel efter Intel + NVIDIA på samma container:" }, "installDrivers": { "title": "Starta containern och installera drivrutiner inuti", "body": "Startar containern och väntar högst cirka 30 sekunder på att pct exec svarar. Läser distributionen från /etc/os-release och installerar lämpliga paket.", "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 / andra", "debianIntel": "apt-get install va-driver-all intel-opencl-icd vainfo", "debianNvidia": "Packar upp .run på värden → pct push → installerar med --no-kernel-modules --no-dkms.", "whyTitle": "Varför NVIDIA-installationen med .run används på Debian", "whyBody": "Paketen kan avvika från värdens version. Biblioteken måste passa värdens inlästa modul för NVML och nvidia-smi. Debian/glibc använder cachad .run för värdversionen, packar upp och arkiverar på värden, överför med pct push och installerar med --no-kernel-modules --no-dkms. Alpine och Arch använder förrådspaket; kontrollera versionerna." }, "alignGids": { "title": "Anpassa GID:n och återställ tillståndet", "body1": "För Intel/AMD läses värdens GID:n för video och render, med 44/104 endast som reservvärden, och sedan ändras /etc/group i containern så att de matchar; körningar med enbart NVIDIA hoppar över steget. Poster som video:44 och render:104 är exempel, inte universella ID:n. Kontrollera appens gruppmedlemskap och faktiska enhetsrättigheter.", "body2": "Vid normal avslutning stoppas en från början stoppad container igen; en som kördes fortsätter köra. Vid start- eller installationsfel, kontrollera slutläget och loggen." } }, "vendors": { "heading": "Anmärkningar per tillverkare", "intelHeading": "Intel iGPU", "intelBody": "Intels mediaacceleration, inklusive Quick Sync, beror på GPU-generation, kodekar och appinställningar. Skriptet delar de av /dev/dri/card0, card1, renderD128 och renderD129 som finns; andra nodnummer läggs inte till. Värden måste redan tillhandahålla dem via sin inbyggda drivrutin, exempelvis i915.", "amdHeading": "AMD", "amdBody": "AMD använder DRI för Mesa/VA-API. Om värden har /dev/kfd delas även den. ROCm/OpenCL kräver kompatibel hårdvara och bibliotek; enhetsdelning installerar inte hela ROCm-miljön.", "nvidiaHeading": "NVIDIA", "nvidiaBody": "Delar tillgängliga /dev/nvidia*-enheter. Matchande drivrutinsversioner krävs för nvidia-smi. Debian/glibc använder värdversionens .run, Alpine/Arch förrådspaket. Under 2048 MiB inställt RAM erbjuds en tillfällig höjning med återställning; dessutom krävs 1500 MiB ledigt diskutrymme.", "updateTitle": "Efter NVIDIA-uppdatering på värden, kontrollera LXC-biblioteken", "updateBody": "Gamla bibliotek kan ge versionsfel i nvidia-smi. Värdens NVIDIA-installation erbjuder containeruppdateringar. En ny enhetstilldelning kan avslutas direkt om posterna redan finns och garanterar ingen biblioteksuppdatering. Kontrollera versioner och uppdatera lämpliga paket eller användarinstallation." }, "verification": { "heading": "Verifiering", "body": "Kontrollera i containern att GPU:n syns och går att använda." }, "troubleshoot": { "heading": "Felsökning", "mismatchTitle": "nvidia-smi: Failed to initialize NVML: Driver/library version mismatch", "mismatchBody": "Biblioteken passar inte den inlästa modulen. Kontrollera versionerna och uppdatera containerns användarmiljö. Cachad .run används för Debian/glibc, men enhetstilldelningen kan avslutas tidigt om alla poster redan finns.", "denyTitle": "Tillstånd nekas på /dev/dri/renderD128 inuti containern", "denyBody": "Kontrollera enhetsposten och numeriska rättigheter för render, sedan att appens användare tillhör render. Lägg vid behov till användaren i render med usermod -aG render <user>; ersätt platshållaren med kontot. Starta om sessionen. Byte av privilegieläge är ingen generell lösning.", "vainfoTitle": "vainfo säger: VA-API version 1.xx; misslyckades med att initialisera", "vainfoBody": "Kontrollera åtkomst och VA-API-drivrutin. Paketnamn varierar per distribution: exempelvis intel-media-driver för nyare Intel-GPU:er som stöds, i965-va-driver för äldre och mesa-va-drivers för AMD. Meddelandet bevisar inte ensamt ett saknat paket.", "logTitle": "Installationslogg", "logBody": "Varje körning skriver /tmp/add_gpu_lxc.log på värden. Bifoga loggen när du söker hjälp." }, "related": { "heading": "Relaterat", "items": [ { "label": "Installera NVIDIA Drivers (Host)", "href": "/docs/hardware/nvidia-host", "tail": " — installera värdens drivrutin före NVIDIA-delning." }, { "label": "Lägg till GPU till VM (Passthrough)", "href": "/docs/hardware/gpu-vm-passthrough", "tail": " — alternativ för att reservera en GPU för en VM." }, { "label": "Byt GPU-läge (VM ↔ LXC)", "href": "/docs/hardware/switch-gpu-mode", "tail": " — växla GPU:n mellan LXC-delning och VM-tilldelning." }, { "label": "GPU Passthrough kommandon", "href": "/docs/help-info/gpu-commands", "tail": " — snabb referens för relaterade skalkommandon." } ] } }