Files
MacRimi a2b96bf6a4 Bring the web documentation in line with develop in every language
- English pages describe backups, the manifest, ROCm GPUs, OCI host directories and storage as develop does, and say user instead of operator
- New paragraph on host directories mounted with everything the host has mounted inside them, and a new update rule for host directories
- The Proxmox Backup Server section of the post-install page is translated into every language
- Spanish and the other six languages follow the updated English
2026-10-18 19:02:17 +02:00

393 lines
17 KiB
JSON

{
"meta": {
"title": "Enheter och acceleration | ProxMenux",
"description": "Hur OCI manager Apps ger en OCI-container tillgång till GPU, NVIDIA, Coral, USB, FUSE och andra enheter som validerade inbyggda Proxmox VE-resurser."
},
"header": {
"title": "Enheter och acceleration",
"description": "GPU, NVIDIA, Coral, USB, FUSE och blockenheter blir validerade inbyggda Proxmox VE-resurser för containern.",
"section": "OCI manager Apps"
},
"sections": [
{
"id": "principle",
"title": "Enheten som programmet behöver, inte hela värden",
"blocks": [
{
"p": "En enhet som begärs av Compose-filen eller av applikationsprofilen blir en konkret <code>devN</code>-post eller LXC-montering. Be om en GPU, en USB-enhet eller en Coral gör inte containern privilegierad."
},
{
"flow": {
"nodes": [
{
"label": "Värdinventering",
"detail": "/dev/dri/renderD128\nGID 993 · Intel"
},
{
"label": "ProxMenux",
"detail": "tillverkare och\nbehörigheter kontrollerade"
},
{
"label": "LXC",
"detail": "samma enhet\neffektiv GID"
}
]
}
}
]
},
{
"id": "origin",
"title": "Varifrån enhetsbegäran kommer",
"blocks": [
{
"table": {
"headers": [
"Källa",
"Vad läses",
"Vad installationsprogrammet gör"
],
"rows": [
[
"Docker Compose",
"<code>devices</code>, <code>group_add</code>, <code>deploy.resources</code> och NVIDIA förfrågningar",
"Varje krav blir en begäran om enhet som visas för granskning"
],
[
"Katalogprofil",
"Programmets faktiska stöd för GPU, Coral, OpenCL, USB eller FUSE",
"Endast de alternativ som valideras för den avbildningen erbjuds"
],
[
"Avbildningens metadata och dokumentation",
"VA-API, Selkies, LinuxServer mods eller NVIDIA runtime",
"Dokumenterade variabler och förberedelser läggs till"
],
[
"Användarval",
"CPU endast, Intel/AMD, OpenCL, NVIDIA eller en valfri enhet",
"Urvalet lagras i instansavtalet"
]
]
}
},
{
"calloutWarning": {
"title": "Upptäckta enheter ansluts inte automatiskt",
"body": "Värden är inventerad, men endast enheter som deklareras av Compose-filen eller av en kompatibel profil erbjuds och bifogas. En GPU, USB-dongel eller Coral närvarande på värden är inte utsatt för varje LXC."
}
}
]
},
{
"id": "identify",
"title": "Hur värdenheten identifieras",
"intro": "Innan LXC modifieras läses enheten på värden och matchas mot den valda profilen.",
"blocks": [
{
"table": {
"headers": [
"Typ",
"Identitet",
"Validering"
],
"rows": [
[
"Intel/AMD DRM",
"<code>/dev/dri/renderD*</code> och <code>/sys/class/drm/NODE/device/vendor</code>",
"En teckenenhet med leverantör <code>0x8086</code> (Intel) eller <code>0x1002</code> (AMD)"
],
[
"AMD OpenCL",
"Rendernoden plus <code>/dev/kfd</code> när profilen behöver den",
"Existens, typ, leverantör, behörigheter och förklarad kompatibilitet"
],
[
"AMD ROCm",
"Rendernoden, <code>/dev/kfd</code> och generationen som beräkningsdrivrutinen rapporterar i <code>/sys/class/kfd/kfd/topology/nodes/*/properties</code>",
"En GPU av en generation som programmets ROCm-avbildning stöder (de RDNA2-GPU:er den nämner och nyare) erbjuds som den är. Andra GPU:er i dessa familjer, till exempel Radeon 680M och 780M, erbjuds som experimentella och är aldrig det föreslagna alternativet. ROCm stöder dem inte officiellt: programmet presenterar dem som familjens generation (<code>HSA_OVERRIDE_GFX_VERSION</code>) och installeraren begär bekräftelse innan den större avbildningen hämtas. En äldre GPU, till exempel den integrerade grafiken i en Ryzen 5000U, erbjuds inte och Immich fortsätter köra igenkänningen på CPU:n"
],
[
"NVIDIA",
"<code>nvidia-smi</code> och <code>nvidia-container-cli</code>",
"GPU, UUID, PCI buss, drivrutinsversion, Toolkit, <code>/dev/nvidia*</code> noder, binärer och bibliotek"
],
[
"Coral PCIe/M.2",
"<code>/dev/apex_N</code> och dess länk i <code>/sys/dev/char/MAJOR:MINOR</code>",
"Teckenenhetsnod, major/minor-nummer, ägare, GID och behörigheter"
],
[
"USB och seriell",
"<code>/dev/ttyUSB*</code>, <code>/dev/ttyACM*</code> eller <code>/dev/bus/usb/BBB/DDD</code>",
"Teckenenhetsnod; för USB även tillverkare, produkt och serienummer när sysfs publicerar dem"
],
[
"KVM, TUN, FUSE, video och generisk SCSI",
"<code>/dev/kvm</code>, <code>/dev/net/tun</code>, <code>/dev/fuse</code>, <code>/dev/videoN</code> eller <code>/dev/sgN</code>",
"Sökväg som stöds, nodtyp och effektiva behörigheter"
],
[
"Optisk enhet",
"<code>/dev/srN</code>",
"En blockenhet"
]
]
}
}
]
},
{
"id": "install",
"title": "Vad händer under installationen",
"blocks": [
{
"steps": {
"items": [
{
"title": "Mallen erbjuder sina profiler",
"body": "Till exempel CPU endast, Intel/AMD VA-API, AMD OpenCL, Intel OpenCL eller NVIDIA. Alternativen hör till avbildningen, inte till en vanlig meny."
},
{
"title": "En profil väljs",
"body": "Den anger enhetsnoder, miljö, moddar eller den körmiljö som programmet behöver."
},
{
"title": "En väg föreslås",
"body": "För DRM, <code>/dev/dri/renderD128</code>, som kan ändras på en värd med flera rendernoder. För USB eller seriell, är den specifika noden vald."
},
{
"title": "Validering",
"body": "Existens, typ, tillåten leverantör, behörigheter och GID kontrolleras. En missmatchning stoppar operationen."
},
{
"title": "Kontraktet är skrivet",
"body": "Sökväg, läge, GID, skrivåtkomst och profil sparas för uppdateringar och när containern skapas om."
},
{
"title": "Anslut och testa",
"body": "<code>pct set</code> lägger till <code>devN</code> inträde och åtkomst kontrolleras sedan inuti LXC. LinuxServer avbildningar kontrolleras också som användare <code>abc</code>."
}
]
}
}
]
},
{
"id": "config",
"title": "Hur det visas i LXC-konfigurationen",
"intro": "Exempelvärden: <code>dev0</code> och <code>dev1</code> är lediga platser som Proxmox VE tilldelar, och <code>renderD128</code>, <code>apex_0</code> samt GID beror på nodens maskinvara.",
"blocks": [
{
"codeGrid": {
"items": [
{
"title": "Intel/AMD VA-API",
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=993,deny-write=0"
},
{
"title": "Coral PCIe/M.2",
"code": "dev0: path=/dev/apex_0,mode=0660,gid=GID,deny-write=0"
},
{
"title": "En specifik USB-enhet",
"code": "dev0: path=/dev/bus/usb/003/004,mode=0660,gid=GID,deny-write=0"
},
{
"title": "AMD OpenCL",
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=GID,deny-write=0\ndev1: path=/dev/kfd,mode=0660,gid=GID,deny-write=0"
}
]
}
},
{
"p": "GID läses med <code>stat</code> på värden och skrivs till <code>devN</code>-posten; <code>render</code> och <code>video</code>-grupper antas inte ha ett fast nummer. Enheten håller samma <code>/dev</code>-väg inuti LXC, där programmets egna mekanismer letar efter det."
}
]
},
{
"id": "profiles",
"title": "Profiler en avbildning kan erbjuda",
"blocks": [
{
"table": {
"headers": [
"Profil",
"Resulterande konfiguration",
"Erbjuds när"
],
"rows": [
[
"Intel/AMD VA-API",
"Rendernod i <code>/dev/dri</code>",
"Applikationen stöder videoacceleration"
],
[
"OpenCL",
"Rendernod, <code>/dev/kfd</code> vid behov och den officiella modden",
"Avbildningen eller profilen dokumenterar den"
],
[
"NVIDIA",
"Värdens drivrutinsenheter och bibliotek",
"Värden har en fungerande drivrutin och NVIDIA Container Toolkit"
],
[
"Coral",
"<code>/dev/apex_0</code> eller USB buss",
"Profilen förklarar Coral Support (Frigate)"
],
[
"USB, seriell, FUSE",
"En enhet, ett validerat träd eller en LXC-funktion",
"Kontraktet begär det"
]
]
}
}
]
},
{
"id": "nvidia",
"title": "NVIDIA",
"blocks": [
{
"calloutWarning": {
"title": "Nodkrav: NVIDIA Container Toolkit",
"body": "En fungerande drivrutin på Proxmox VE är inte tillräckligt för att ge en NVIDIA GPU till en OCI-avbildning. OCI Manager Apps använder <code>nvidia-container-cli</code>, från NVIDIA Container Toolkit, för att identifiera enheterna och för att få binärer och bibliotek som matchar den laddade drivrutinen."
}
},
{
"p": "<nvidiaLink>ProxMenux NVIDIA-installerare</nvidiaLink> installerar NVIDIA Container Toolkit från NVIDIAs officiella arkiv tillsammans med drivrutinen. Den kontrollerar dess fyra paket, validerar <code>nvidia-container-cli</code> och registrerar resultatet i ändringsloggen för <auditLink>Audit & Report</auditLink>."
},
{
"p": "Dessa två kommandon på värden visar om drivrutinen och Toolkit är tillgängliga:"
},
{
"shell": {
"code": "nvidia-smi -L\nnvidia-container-cli --version"
}
},
{
"p": "På en värd där drivrutinen installerades på annat sätt installeras Toolkit från det officiella stabila förvaret:"
},
{
"shell": {
"code": "apt-get update\napt-get install -y --no-install-recommends ca-certificates curl gnupg2\n\ncurl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \\\n | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg\n\ncurl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \\\n | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \\\n > /etc/apt/sources.list.d/nvidia-container-toolkit.list\n\napt-get update\napt-get install -y nvidia-container-toolkit libnvidia-container-tools"
}
},
{
"p": "Inventeringen OCI Manager Apps använder är utdata av:"
},
{
"shell": {
"code": "nvidia-container-cli list --device all --libraries --binaries --firmwares --ipcs"
}
},
{
"calloutInfo": {
"title": "Docker runtime konfiguration är inte involverad",
"body": "Containrarna är inbyggda LXC:er utan Docker-demon, så <code>nvidia-ctk runtime configure --runtime=docker</code> ingår inte: ProxMenux frågar <code>nvidia-container-cli</code> direkt och skriver LXC-enheter och monteringar. Kommandon och plattformar som stöds underhålls i <toolkitLink>installationsguiden för NVIDIA Container Toolkit</toolkitLink>."
}
},
{
"cards": {
"items": [
{
"icon": "cpu",
"title": "Inventering från drivrutinen",
"body": "<code>nvidia-container-cli</code> listar enhetsnoder, binärer, firmware och bibliotek av den installerade drivrutinen."
},
{
"icon": "refresh",
"title": "Ingen fast version",
"body": "Mallen anger inga biblioteksfilnamn. Profilen genereras från den aktuella värden."
},
{
"icon": "shield",
"title": "Skrivskyddade monteringar",
"body": "Värdens bibliotek monteras skrivskyddat i stället för att kopieras till containern."
},
{
"icon": "hardDrive",
"title": "Ändringar av drivrutin",
"body": "Efter en drivrutinsändring genereras inventeringen på nytt innan berörda LXC:er startar."
}
]
}
},
{
"code": {
"title": "NVIDIA resultat (förenklad)",
"code": "devN: path=/dev/nvidia0,...\ndevN: path=/dev/nvidiactl,...\ndevN: path=/dev/nvidia-uvm,...\nlxc.mount.entry: HOST_LIBRARY CONTAINER_LIBRARY none ro,bind,create=file 0 0"
}
},
{
"p": "Att bara ge tillgång till <code>/dev/nvidia0</code> räcker inte. Den laddade drivrutinens användarkomponenter monteras skrivskyddat, och <code>nvidia-smi</code> körs sedan i LXC:n för att jämföra GPU, UUID, PCI-buss och version med värdens inventering."
}
]
},
{
"id": "usb",
"title": "USB, seriell och USB Coral",
"blocks": [
{
"calloutWarning": {
"title": "USB-nummer kan ändra",
"body": "En väg som <code>/dev/bus/usb/003/004</code> kan ändras när enheten är återansluten eller värden startar om. Profilen registrerar tillverkaren, produkten och serienumret när de är tillgängliga, men en ny bussadress mappas om inte automatiskt."
}
},
{
"p": "En kringutrustning anges med sin specifika nod: <code>/dev/ttyUSB0</code>, <code>/dev/ttyACM0</code>, <code>/dev/apex_0</code> eller <code>/dev/bus/usb/BBB/DDD</code>. Att passera hela <code>/dev</code> accepteras inte. Coral erbjuds endast program vars profil anger det."
}
]
},
{
"id": "trees",
"title": "Enhetsträd och LXC-funktioner",
"blocks": [
{
"table": {
"headers": [
"Begäran",
"Resulterande konfiguration",
"Omfattning"
],
"rows": [
[
"<code>/dev/dvb</code>, <code>/dev/snd</code> eller <code>/dev/bus/usb</code>",
"Varje teckenenhetsnod i trädet får en egen <code>devN</code>-post med värdens läge och GID",
"Endast det begärda trädet, inte resten av <code>/dev</code>"
],
[
"<code>/dev/fuse</code>",
"Noden och när profilen behöver den, funktionen <code>fuse=1</code>",
"FUSE offentliggör inte fästen till andra LXCs"
],
[
"<code>/dev/net/tun</code>",
"En <code>devN</code>-post med samma sökväg inuti LXC:n",
"VPN- eller nätverkskonfigurationen stannar i programmet"
],
[
"<code>/dev/kvm</code>",
"En validerad <code>devN</code>-post",
"Erbjuds endast när kontraktet begär det"
]
]
}
}
]
},
{
"id": "security",
"title": "Bekräftelser av risknivå",
"blocks": [
{
"p": "Konkreta enheter, valfri privilegiering, krävs privilegier, AppArmor eller seccomp avslappning och tillgång till värd PID-namnrymden behandlas som separata fall, inte under en generisk privilegierad etikett. Varje alternativ med en risk förklaras och bekräftas under installationen."
}
]
}
]
}