mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 10:22:08 +00:00
186 lines
13 KiB
JSON
186 lines
13 KiB
JSON
{
|
|
"meta": {
|
|
"title": "Añadir GPU a LXC | Documentación de ProxMenux",
|
|
"description": "Comparte GPU Intel, AMD o NVIDIA con LXC. ProxMenux configura dispositivos, grupos y bibliotecas según la distribución; la aplicación debe admitir y tener configurada la aceleración."
|
|
},
|
|
"header": {
|
|
"title": "Añadir GPU a LXC",
|
|
"description": "Comparte acceso a GPU con LXC mediante dispositivos del host. El controlador sigue en el host; las aplicaciones usan bibliotecas compatibles y requieren su propia configuración.",
|
|
"section": "Hardware: GPU y Coral-TPU"
|
|
},
|
|
"intro": {
|
|
"title": "Qué hace",
|
|
"body": "Añade entradas <code>dev<N></code> a <code>/etc/pve/lxc/<ctid>.conf</code> para los dispositivos <code>/dev/dri/*</code>, <code>/dev/kfd</code> o <code>/dev/nvidia*</code> que correspondan. Arranca el LXC, instala paquetes según la distribución y, en Intel/AMD, alinea los grupos <code>video</code> y <code>render</code>. La aceleración requiere hardware y bibliotecas compatibles y configurar la app."
|
|
},
|
|
"compare": {
|
|
"heading": "Compartir con LXC frente a asignar a una VM",
|
|
"intro": "LXC comparte el kernel y puede <em>compartir</em> la GPU entre host y contenedores. Con <vmLink>passthrough completo a una VM</vmLink>, el dispositivo se dedica a esa VM y deja de estar disponible para el controlador del host.",
|
|
"headerFeature": "Característica",
|
|
"headerLxc": "LXC (esta página)",
|
|
"headerVm": "VM",
|
|
"rows": [
|
|
{
|
|
"feature": "¿El host sigue usando la GPU?",
|
|
"lxc": "Sí",
|
|
"vm": "No — exclusiva de la VM"
|
|
},
|
|
{
|
|
"feature": "¿Varios contenedores compartiendo una GPU?",
|
|
"lxc": "Sí",
|
|
"vm": "No"
|
|
},
|
|
{
|
|
"feature": "¿Requiere IOMMU / VFIO en el host?",
|
|
"lxc": "No",
|
|
"vm": "Sí"
|
|
},
|
|
{
|
|
"feature": "¿Hace falta reiniciar?",
|
|
"lxc": "Normalmente no (solo reiniciar el CT)",
|
|
"vm": "Al cambiar controlador o IOMMU del host; no con cada asignación"
|
|
},
|
|
{
|
|
"feature": "Sistemas operativos invitados",
|
|
"lxc": "Solo Linux (LXC es solo Linux)",
|
|
"vm": "SO invitado admitido con controlador GPU compatible"
|
|
}
|
|
]
|
|
},
|
|
"prereqs": {
|
|
"title": "Antes de empezar",
|
|
"gpu": "<strong>GPU en el host</strong> Intel, AMD o NVIDIA, detectada mediante <code>lspci</code>.",
|
|
"gpuCheck": "lspci | grep -iE 'VGA|3D|Display'",
|
|
"vfio": "<strong>La GPU no debe estar vinculada a vfio-pci.</strong> Necesita el controlador nativo del host. Si está asignada a una VM, el script ofrece <switchLink>Cambiar modo de GPU</switchLink>.",
|
|
"nvidia": "<strong>Para NVIDIA:</strong> instala primero el controlador en el host. Las bibliotecas del contenedor deben ser compatibles con su versión. Usa <nvidiaLink>Instalar controladores NVIDIA en el host</nvidiaLink>.",
|
|
"nvidiaCheck": "nvidia-smi",
|
|
"container": "<strong>Un LXC existente.</strong> El script no lo crea. Admite ambos modos; no requiere siempre un contenedor <strong>privilegiado</strong>. Deben coincidir los dispositivos y permisos numéricos de la aplicación."
|
|
},
|
|
"unpriv": {
|
|
"title": "Admite contenedores privilegiados y sin privilegios",
|
|
"body": "El script escribe entradas <code>dev<N></code> en la config del LXC y, en contenedores unprivileged, alinea los GIDs de <code>video</code> y <code>render</code> entre host y contenedor para que los nodos de la GPU sean accesibles desde dentro sin tener que tocar manualmente <code>lxc.idmap</code>."
|
|
},
|
|
"running": {
|
|
"heading": "Ejecutar el instalador",
|
|
"body": "Abre ProxMenux y ve a <strong>Hardware: GPU y Coral-TPU → Añadir GPU a LXC</strong>.",
|
|
"imageAlt": "Opción del menú para añadir GPU a LXC"
|
|
},
|
|
"howRuns": {
|
|
"heading": "Cómo funciona el script",
|
|
"body": "Selecciona contenedor y familias de GPU y supera las comprobaciones. Después detiene el LXC y cambia su configuración, sin confirmación final adicional. La limpieza opcional de VFIO se confirma aparte y puede modificar antes el host."
|
|
},
|
|
"walkthrough": {
|
|
"heading": "Proceso paso a paso",
|
|
"detect": {
|
|
"title": "Detectar GPUs del host",
|
|
"body": "Busca controladoras GPU con <code>lspci</code>. Para NVIDIA comprueba el módulo <code>nvidia</code> y <code>nvidia-smi</code>; usa la versión detectada para elegir el <code>.run</code> del contenedor.",
|
|
"tipTitle": "¿NVIDIA no está listo?",
|
|
"tipBody": "Si falta el módulo o no funciona NVIDIA en el host, usa primero <nvidiaLink>Instalar controladores NVIDIA en el host</nvidiaLink> y verifica el controlador antes de volver."
|
|
},
|
|
"pickCt": {
|
|
"title": "Elige un contenedor LXC",
|
|
"body": "Lista los LXC admitidos por ID y nombre. Excluye OCI: sus dispositivos se gestionan en Apps del gestor OCI. Detiene el LXC si está en marcha, lo arranca para instalar y normalmente recupera su estado inicial.",
|
|
"imageAlt": "Selección de un contenedor LXC existente"
|
|
},
|
|
"selectGpu": {
|
|
"title": "Selecciona las familias de GPU",
|
|
"body": "Selecciona familias por fabricante, no un dispositivo PCI aislado. Intel/AMD añaden los nodos DRI previstos; NVIDIA añade sus dispositivos disponibles, que pueden corresponder a varias tarjetas. Una sola familia se selecciona automáticamente. Revisa la lista final, sobre todo con varias GPU.",
|
|
"imageAlt": "Lista de familias GPU detectadas con nombre y dirección PCI"
|
|
},
|
|
"preflight": {
|
|
"title": "Comprobaciones previas",
|
|
"imageAlt": "Oferta para cambiar el modo de una GPU vinculada a vfio-pci",
|
|
"intro": "Tres comprobaciones, cualquiera de las cuales puede bloquearte o redirigirte:",
|
|
"items": [
|
|
"<strong>Protección SR-IOV.</strong> El asistente bloquea una VF o PF con VF activas. Es una limitación de su selección amplia de dispositivos, no una prohibición universal en LXC. Configura esos dispositivos por separado.",
|
|
"<strong>Vinculada a vfio-pci.</strong> El controlador nativo no puede crear <code>/dev/dri/*</code> o <code>/dev/nvidia*</code>. Ofrece <switchLink>Cambiar modo de GPU</switchLink>; sigue las indicaciones de reinicio y vuelve después.",
|
|
"<strong>Ya configurada.</strong> Si están todos los dispositivos, sale sin reinstalar bibliotecas. Si solo falta alguna familia seleccionada, continúa con ella."
|
|
]
|
|
},
|
|
"applyConfig": {
|
|
"title": "Aplica los cambios de config del LXC",
|
|
"body1": "Detiene el LXC si está en marcha y edita <code>/etc/pve/lxc/<ctid>.conf</code>. Las entradas <code>dev<N></code> llevan el GID <code>video</code> o <code>render</code> del host. Sustituye las líneas <code>lxc.mount.entry</code> de <code>/dev/dri</code> por entradas <code>dev:</code>. Revisa configuración y permisos resultantes.",
|
|
"body2": "Ejemplo después de Intel + NVIDIA en el mismo contenedor:"
|
|
},
|
|
"installDrivers": {
|
|
"title": "Arranca el contenedor e instala los drivers dentro",
|
|
"body": "Arranca el contenedor y espera hasta unos 30 segundos a que responda <code>pct exec</code>. Detecta la distribución con <code>/etc/os-release</code> e instala los paquetes correspondientes.",
|
|
"headerDistro": "Distribución",
|
|
"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 / otras",
|
|
"debianIntel": "apt-get install va-driver-all intel-opencl-icd vainfo",
|
|
"debianNvidia": "Extrae <code>.run</code> en el host → <code>pct push</code> → instala con <code>--no-kernel-modules --no-dkms</code>.",
|
|
"whyTitle": "Por qué usa el instalador NVIDIA .run en Debian",
|
|
"whyBody": "Los paquetes del repositorio pueden no coincidir con el host. Las bibliotecas <strong>deben coincidir con el módulo cargado</strong> para herramientas NVML como <code>nvidia-smi</code>. En Debian/glibc extrae y comprime en el host el <code>.run</code> de esa versión, lo transfiere con <code>pct push</code> e instala con <code>--no-kernel-modules --no-dkms</code>. Alpine y Arch usan paquetes: verifica sus versiones."
|
|
},
|
|
"alignGids": {
|
|
"title": "Alinear GIDs y restaurar el estado",
|
|
"body1": "En Intel/AMD, lee los GID del host para <code>video</code> y <code>render</code>; usa 44/104 solo como alternativa. Ajusta <code>/etc/group</code> dentro del LXC; si solo hay NVIDIA, omite este paso. <code>video:44</code> y <code>render:104</code> son ejemplos, no valores universales. Verifica grupos de la app y permisos efectivos.",
|
|
"body2": "Al completar normalmente, vuelve a detener el LXC si inicialmente estaba parado; si estaba funcionando, lo deja activo. Ante un fallo de arranque o instalación, revisa el estado final y el registro."
|
|
}
|
|
},
|
|
"vendors": {
|
|
"heading": "Notas por fabricante",
|
|
"intelHeading": "iGPU Intel",
|
|
"intelBody": "La aceleración Intel, incluido <em>Quick Sync</em>, depende de generación, códecs y configuración de la app. Comparte los nodos que existan entre <code>/dev/dri/card0</code>, <code>card1</code>, <code>renderD128</code> y <code>renderD129</code>; no añade otros números. Debe crearlos antes el controlador nativo del host, como <code>i915</code>.",
|
|
"amdHeading": "AMD",
|
|
"amdBody": "AMD usa DRI para Mesa/VA-API. Si existe <code>/dev/kfd</code> en el host, lo comparte también. ROCm/OpenCL requiere hardware y paquetes compatibles; compartir el dispositivo no instala toda la pila ROCm.",
|
|
"nvidiaHeading": "NVIDIA",
|
|
"nvidiaBody": "Comparte <code>/dev/nvidia*</code> disponibles. <strong>Coincidir la versión del controlador</strong> es esencial para <code>nvidia-smi</code>. Debian/glibc usa el <code>.run</code> de la versión del host; Alpine/Arch, repositorios. Con menos de 2048 MiB de RAM configurada, la ruta Debian ofrece aumentarla temporalmente y restaurarla; exige 1500 MiB libres en disco.",
|
|
"updateTitle": "Tras actualizar NVIDIA en el host, comprueba las bibliotecas LXC",
|
|
"updateBody": "Bibliotecas antiguas pueden provocar incompatibilidad en <code>nvidia-smi</code>. El <nvidiaLink>instalador NVIDIA del host</nvidiaLink> ofrece actualizar LXC. Repetir Añadir GPU a LXC puede salir si ya existen los dispositivos: no garantiza actualizar bibliotecas. Verifica versiones y actualiza paquetes o el instalador de usuario apropiado."
|
|
},
|
|
"verification": {
|
|
"heading": "Verificación",
|
|
"body": "Entra en el contenedor y verifica que ve la GPU y puede utilizarla."
|
|
},
|
|
"troubleshoot": {
|
|
"heading": "Solución de problemas",
|
|
"mismatchTitle": "nvidia-smi: Failed to initialize NVML: Driver/library version mismatch",
|
|
"mismatchBody": "Las bibliotecas no coinciden con el módulo activo. Verifica versiones y actualiza el espacio de usuario del LXC. El <code>.run</code> almacenado sirve para Debian/glibc, pero Añadir GPU a LXC puede salir si ya están todos los dispositivos.",
|
|
"denyTitle": "Permission denied en /dev/dri/renderD128 dentro del contenedor",
|
|
"denyBody": "Revisa dispositivo y permisos numéricos de <code>render</code>; comprueba que el usuario de la app pertenezca a <code>render</code>. Si está disponible, añádelo a <code>render</code> con <code>usermod -aG render <user></code>, sustituyendo el marcador por la cuenta real. Reinicia su sesión. Cambiar privilegios no es una solución general.",
|
|
"vainfoTitle": "vainfo dice: VA-API version 1.xx; failed to initialize",
|
|
"vainfoBody": "Comprueba acceso y controlador VA-API. Los paquetes varían por distribución: ejemplos son <code>intel-media-driver</code> para Intel modernas compatibles, <code>i965-va-driver</code> para antiguas compatibles y <code>mesa-va-drivers</code> para AMD. El mensaje no prueba por sí solo que falte un paquete.",
|
|
"logTitle": "Registro de instalación",
|
|
"logBody": "Cada ejecución escribe <code>/tmp/add_gpu_lxc.log</code> en el host. Adjunta el registro al pedir ayuda."
|
|
},
|
|
"related": {
|
|
"heading": "Relacionado",
|
|
"items": [
|
|
{
|
|
"label": "Instalar drivers NVIDIA (Host)",
|
|
"href": "/docs/hardware/nvidia-host",
|
|
"tail": " — instala primero el controlador del host para compartir NVIDIA."
|
|
},
|
|
{
|
|
"label": "Añadir GPU a VM (Passthrough)",
|
|
"href": "/docs/hardware/gpu-vm-passthrough",
|
|
"tail": " — alternativa para dedicar una GPU a una VM."
|
|
},
|
|
{
|
|
"label": "Cambiar modo de GPU (VM ↔ LXC)",
|
|
"href": "/docs/hardware/switch-gpu-mode",
|
|
"tail": " — cambia la GPU entre compartir con LXC y asignar a VM."
|
|
},
|
|
{
|
|
"label": "Comandos de GPU Passthrough",
|
|
"href": "/docs/help-info/gpu-commands",
|
|
"tail": " — referencia rápida para comandos shell relacionados."
|
|
}
|
|
]
|
|
}
|
|
}
|