¿Cómo puedo ejecutar aplicaciones X dentro de un contenedor LXC de manera eficiente?
ssh -Y guest
es demasiado lento, no hay aceleración de gráficos ssh -Y
, todo tiene que viajar a través de la red virtual con el protocolo X11 tradicional.
Poder copiar y pegar entre aplicaciones de host e invitados es deseable pero no esencial. Ejecutar dos servidores X, uno para el host y otro para el invitado, es (para mi propósito) esencial.
No puedo ejecutar un Xorg nativo desde el invitado porque se queja de /dev/tty0
que falta, y no puedo mknod
ese dispositivo en el invitado porque me niegan un permiso, incluso cuando lo hago como root.
fuente
NOTA : este enfoque es un poco hack. Tampoco admite copiar y pegar entre el host y el invitado, ¡y es totalmente inseguro!
/tmp
como un sistema de archivos adicional en la configuración del invitado, que pasa a través/tmp
del host.xhost +
en una ventana de terminal.DISPLAY=:0 Xephyr :2 -screen 1024x768 -dpi 96 &
DISPLAY=:2 /etc/X11/xinit/Xsession
dentro del huésped (reemplazando ambos
2
s con el número de la pantalla que se usará si está usando esto para conectarse a múltiples máquinas virtuales LXC). Ajuste los parámetros de resolución (-screen
) y DPI (-dpi
) para adaptarlos.Lo que esto hace es configurar conexiones "proxy" a un servidor X anidado Xephyr que se ejecuta en el invitado (que usa los sockets de dominio UNIX y la extensión MIT-SHM) y otra conexión desde Xephyr a su servidor X host (que usa sockets de dominio UNIX , pero no puedo, por lo que puedo determinar, usar MIT-SHM, debido al diseño de LXC). Esta parece ser la configuración más rápida posible con un invitado LXC, al menos con el controlador de código abierto para mi hardware (nvidia).
fuente