Rápido X para o convidado LXC no localhost?

10

Como posso executar aplicativos X dentro de um contêiner LXC com eficiência?

ssh -Y guest

é muito lento - não há aceleração gráfica com ssh -Y - tudo precisa passar pela rede virtual com o tradicional protocolo X11.

Ser capaz de copiar e colar entre aplicativos host e convidados é desejável, mas não essencial. A execução de dois servidores X, um para o host e outro para o convidado, é essencial (para meus propósitos).

Não consigo executar um Xorg nativo a partir do convidado porque ele está reclamando da falta de /dev/tty0 , e não posso mknod desse dispositivo no convidado porque recebo uma permissão negada, mesmo quando o faço raiz.

    
por Robin Green 04.02.2012 / 15:01

2 respostas

11

Você pode tentar xpra ou NX, VNC, etc. Também dê uma olhada no VirtualGL se você quiser a aceleração por GL.

Se você pode compartilhar um diretório com o host, você pode usar mmap com xpra (provavelmente exigiria uma mudança de caminho trivial, a menos que seja / tmp /) que forneça melhorias de desempenho muito significativas.

    
por 04.02.2012 / 18:42
2

NOTA : esta abordagem é um pouco invasiva. Ele também não suporta copiar e colar entre host e guest - e é totalmente inseguro!

  1. Adicione /tmp como um sistema de arquivos adicional na configuração de convidado, que passa para /tmp no host.
  2. Verifique se o seu servidor X não está configurado para aceitar conexões de rede de qualquer tipo, porque a próxima etapa desativa a segurança X.
  3. Digite xhost + em uma janela de terminal.
  4. Iniciar o convidado do LXC
  5. Faça login como usuário comum desejado dentro do convidado (ou seja, não como raiz) e digite

DISPLAY=:0 Xephyr :2 -screen 1024x768 -dpi 96 &

DISPLAY=:2 /etc/X11/xinit/Xsession

dentro do convidado (substituindo 2 s pelo número da tela a ser usado se você estiver usando isso para se conectar a várias VMs LXC.) Ajuste os parâmetros de resolução ( -screen ) e DPI ( -dpi ) para se adequar.

O que isto faz é configurar conexões "proxy" para um servidor X aninhado Xephyr em execução no guest (que usa soquetes de domínio UNIX e a extensão MIT-SHM) e outra conexão do Xephyr para seu servidor host X (que usa Soquetes de domínio UNIX, mas não posso, tanto quanto posso determinar, usar o MIT-SHM, devido ao design do LXC). Esta parece ser a configuração mais rápida possível com um convidado LXC, pelo menos com o driver de código aberto para o meu hardware (nvidia).

    
por 04.02.2012 / 23:14