Servidor X Virtualizado na Máquina Host

2

Então, estou tentando resolver um problema bastante estranho. Sou relativamente novo em virtualização (o máximo que consegui é isolar alguns aplicativos com o Docker e o VirtualBox, o que não é difícil de fazer). Eu estou mais questionando como o servidor de exibição X funciona comparado a realmente pedir ajuda para virtualizar, embora isso seja apreciado.

Estou tentando configurar uma máquina host que usa um servidor de exibição X fornecido por um sistema virtualizado diferente. Eu vou ter a máquina host virtualizar dois sistemas Linux.

O primeiro sistema Linux é planejado para hospedar um servidor de exibição X. Agora, esse deve ser bastante simples de se fazer no final, mas estou procurando soluções que se aprofundem um pouco mais do que "isso funciona". No entanto, eu percebi outros problemas. Eu pretendo executar aplicativos intensamente gráficos intensivos neste sistema virtualizado. Qual máquina deve ser dedicada a placa de vídeo?

O segundo sistema não será tão especial, mas há um conflito de rede bastante estranho (não é um bug; é como eu tenho que configurar as coisas). Não haverá um servidor X ou qualquer outra coisa.

Minha última pergunta: Eu precisaria utilizar o hardware real para ambas as instâncias , apenas o "host" do servidor X (o sistema virtualizado) ou apenas o "cliente" do servidor X (a máquina host)? Eu também gostaria de perguntar como eu poderia conseguir isso, embora isso seja um pouco fora do escopo da questão.

    
por Mythical Juggernaut 31.10.2015 / 06:15

1 resposta

1

Para resumir minha compreensão da sua situação: você precisa reproduzir vídeos HD em um sistema de convidado virtualizado agindo como cliente para um X Server localizado em outro convidado virtualizado.

Sua pergunta é principalmente para qual convidado você deve dedicar sua GPU para diminuir a carga da CPU o máximo possível e ter uma visão geral de como a tela irá realmente funcionar.

A maioria das chances é que o GPU terá que ser tratado pelo convidado que estiver executando o X Server. Eu realmente não vejo como um cliente enviaria quadros de vídeo diretamente para a placa gráfica sem saber nada sobre a janela de contenção tratada no lado do servidor.

Para informações, você também pode considerar o uso de framebuffer do Linux que pode permitir que você reproduza vídeos diretamente do comando prompt sem X em tudo.

Para entender como funciona, o truque aqui é que não há uma única maneira de reproduzir vídeos em um ambiente X e, dependendo dos detalhes da sua plataforma, alguns podem ser mais rápidos, alguns podem mostrar falhas em determinados arquivos de vídeo, alguns podem não funcionar de todo.

Eu recomendo que você use o media player VLC para prosseguir com seus testes. Ele está disponível na maioria dos repositórios de distribuição do Linux e permite que você selecione manualmente o caminho que será usado para exibir o vídeo (no menu, vá em Ferramentas > Preferências > Vídeo e selecione sua opção no widget suspenso Saída ).

Qualquer que seja o modo usado, ele sempre gerará muito tráfego entre o cliente X (o player de vídeo) e o X Server, portanto, se ambos os convidados virtualizados estiverem em execução no mesmo host, você provavelmente preferirá garantir que haja não há criptografia ocorrendo em sua troca. Em outras palavras, é bem provável que você deixe o SSH tunelando para fora e prefira usar um redirecionamento antigo de exibição X:

  • No host do servidor, verifique se o servidor X atende em uma interface externa (a etapa exata de configuração depende da distribuição, se modificar manualmente um arquivo, garantir que ele não seja substituído por alguma configuração automática, você também precisará adaptar seu regras de firewall) e permitir conexões X de entrada do ambiente convidado usando o comando xhost :

    $ xhost +<XCLIENT_IP>
    
  • No host do cliente, exporte a variável $DISPLAY antes de iniciar o VLC:

    $ export DISPLAY=<XSERVER_IP>:0.0
    $ vlc
    

Certos modos de saída farão com que o VLC percorra a pilha X, enquanto outros o farão contornar o VLC e entrar em contato direto com o hardware de vídeo subjacente através de alguma biblioteca. Na sua situação, apenas o primeiro funcionará. Tentar usar o tipo de saída errado fará com que o VLC não exiba nenhum vídeo (enquanto estiver reproduzindo som) ou trave ao abrir o arquivo.

Os melhores candidatos serão, portanto, Xvideo (uma extensão X dedicada à reprodução de vídeo, substitui o antigo, mas ainda disponível X11 GLX e OpenGL (ambos fazem com que o VLC dependa de um OpenGL de interface API e Sistema de exibição X).

    
por 04.11.2015 / 16:39