{
"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 dev<N> a /etc/pve/lxc/<ctid>.conf para los dispositivos /dev/dri/*, /dev/kfd o /dev/nvidia* que correspondan. Arranca el LXC, instala paquetes según la distribución y, en Intel/AMD, alinea los grupos video y render. 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 compartir la GPU entre host y contenedores. Con passthrough completo a una VM, 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": "GPU en el host Intel, AMD o NVIDIA, detectada mediante lspci.",
"gpuCheck": "lspci | grep -iE 'VGA|3D|Display'",
"vfio": "La GPU no debe estar vinculada a vfio-pci. Necesita el controlador nativo del host. Si está asignada a una VM, el script ofrece Cambiar modo de GPU.",
"nvidia": "Para NVIDIA: instala primero el controlador en el host. Las bibliotecas del contenedor deben ser compatibles con su versión. Usa Instalar controladores NVIDIA en el host.",
"nvidiaCheck": "nvidia-smi",
"container": "Un LXC existente. El script no lo crea. Admite ambos modos; no requiere siempre un contenedor privilegiado. 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 dev<N> en la config del LXC y, en contenedores unprivileged, alinea los GIDs de video y render entre host y contenedor para que los nodos de la GPU sean accesibles desde dentro sin tener que tocar manualmente lxc.idmap."
},
"running": {
"heading": "Ejecutar el instalador",
"body": "Abre ProxMenux y ve a Hardware: GPU y Coral-TPU → Añadir GPU a LXC.",
"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 lspci. Para NVIDIA comprueba el módulo nvidia y nvidia-smi; usa la versión detectada para elegir el .run del contenedor.",
"tipTitle": "¿NVIDIA no está listo?",
"tipBody": "Si falta el módulo o no funciona NVIDIA en el host, usa primero Instalar controladores NVIDIA en el host 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": [
"Protección SR-IOV. 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.",
"Vinculada a vfio-pci. El controlador nativo no puede crear /dev/dri/* o /dev/nvidia*. Ofrece Cambiar modo de GPU; sigue las indicaciones de reinicio y vuelve después.",
"Ya configurada. 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 /etc/pve/lxc/<ctid>.conf. Las entradas dev<N> llevan el GID video o render del host. Sustituye las líneas lxc.mount.entry de /dev/dri por entradas dev:. 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 pct exec. Detecta la distribución con /etc/os-release 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 .run en el host → pct push → instala con --no-kernel-modules --no-dkms.",
"whyTitle": "Por qué usa el instalador NVIDIA .run en Debian",
"whyBody": "Los paquetes del repositorio pueden no coincidir con el host. Las bibliotecas deben coincidir con el módulo cargado para herramientas NVML como nvidia-smi. En Debian/glibc extrae y comprime en el host el .run de esa versión, lo transfiere con pct push e instala con --no-kernel-modules --no-dkms. 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 video y render; usa 44/104 solo como alternativa. Ajusta /etc/group dentro del LXC; si solo hay NVIDIA, omite este paso. video:44 y render:104 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 Quick Sync, depende de generación, códecs y configuración de la app. Comparte los nodos que existan entre /dev/dri/card0, card1, renderD128 y renderD129; no añade otros números. Debe crearlos antes el controlador nativo del host, como i915.",
"amdHeading": "AMD",
"amdBody": "AMD usa DRI para Mesa/VA-API. Si existe /dev/kfd 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 /dev/nvidia* disponibles. Coincidir la versión del controlador es esencial para nvidia-smi. Debian/glibc usa el .run 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 nvidia-smi. El instalador NVIDIA del host 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 .run 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 render; comprueba que el usuario de la app pertenezca a render. Si está disponible, añádelo a render con usermod -aG render <user>, 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 intel-media-driver para Intel modernas compatibles, i965-va-driver para antiguas compatibles y mesa-va-drivers para AMD. El mensaje no prueba por sí solo que falte un paquete.",
"logTitle": "Registro de instalación",
"logBody": "Cada ejecución escribe /tmp/add_gpu_lxc.log 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."
}
]
}
}