x11vnc muito mais lento que o Xvnc + como obter uma sessão do Xubuntu manualmente

5

Estou executando o Xubuntu 12.04 em um servidor sem cabeçalho dentro de uma máquina virtual VMware. Eu preferiria usar o x11vnc sobre o Xvnc para usar o LightDM e o servidor X iniciado pelo LightDM (e fazer o login usando o Xubuntu-session ao invés do xfce4).

O problema é que x11vnc é muito mais lento que Xvnc (ambos vnc4server e tightvncserver flavors). Estou em uma conexão de banda larga de baixa velocidade e, por exemplo arrastar janelas é visivelmente mais lento em x11vnc , cerca de 3-4 vezes mais lento, eu diria.

Estou forçando 16 bit e 1280x800 em x11vnc e Xvnc, mas não tenho certeza se x11vnc está realmente usando 16bpp (veja os logs abaixo).

x11vnc

Eu inicio x11vnc com um script de início em / etc / init / x11vnc:

start on login-session-start
script
x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 \
  -auth /var/run/lightdm/root/:0 -forever -shared -bg \
  -o /var/log/x11vnc.log -rfbport 5901 -localhost -nopw -xrandr
end script

Por padrão, isso começará em 800x600 com 32bpp, que não pode ser alterado por meio de parâmetros de linha de comando. Eu tive que fazer:

apt-get install xserver-xorg-video-dummy

e depois crie /etc/X11/xorg.conf (que não existia por padrão) com o conteúdo:

Section "Device"
    Identifier  "Configured Video Device"
    Driver      "dummy"
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
    HorizSync 31.5-48.5
    VertRefresh 50-70
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth 16
    SubSection "Display"
    Depth 16
    Modes "1280x800"
    EndSubSection
EndSection

Ao se conectar a ele, o /var/log/x11vnc.log diz:

30/11/2013 07:12:32 Pixel format for client 127.0.0.1:
30/11/2013 07:12:32   16 bpp, depth 16, little endian
30/11/2013 07:12:32   true colour: max r 31 g 63 b 31, shift r 11 g 5 b 0
30/11/2013 07:12:32 no translation needed

observe a parte true color .

Além disso, ainda há transparência no painel inferior ao usar 16bpp em x11vnc, enquanto que ao usar "-depth 16" com Xvnc, todos os painéis transparentes têm cores sólidas e a opção "alpha" na configuração do painel desaparece. Isso me faz pensar que o XFCE ainda detecta uma exibição de 32 bits ao usar x11vnc, o que pode ser uma causa de lentidão.

Eu também tentei xserver-command=X -depth 16 em /etc/lightdm/lightdm.conf , mas não fiz diferença.

Xvnc

eu fiz:

apt-get install vnc4server
vncserver :1 -depth 16 -geometry 1280x800

Isso inicia uma nova sessão X, dependendo do que eu tenho em ~/.vnc/startup , que é:

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
# x-window-manager &
startxfce4 &

Não há wireframe por padrão. Arrastar janelas mostra a janela inteira, não apenas uma borda, e ainda é visivelmente mais rápido que x11vnc, que mostra apenas uma armação de arame ao arrastar janelas! O mesmo acontece se eu substituir vnc4server por tightvncserver.

Quaisquer pistas sobre como tornar o x11vnc tão rápido? Deve ser capaz de alguma forma!

Eu tentei todo o tipo de opções para x11vnc (de todos os -nox * -nowireframe, etc) sem sucesso.

Alternativamente , eu poderia parar o LightDM e iniciar o Xvnc com o ~ / .vnc / xstartup para que ele inicie a mesma sessão do Xubuntu da tela de login do LilghtDM, ao invés da sessão XFCE4 ... mas eu não sei como. Eu substitui startxfce4 por /etc/X11/Xsession , mas não parece o mesmo. As fontes são menores e existem artefatos.

Qualquer ajuda seria apreciada!

    
por Normadize 30.11.2013 / 08:47

1 resposta

1

Consegui responder à parte Alternative da minha pergunta, ou seja, use vnc4server ou tightvncserver para iniciar uma sessão do Xubuntu em vez de uma sessão XFCE simples. Isso é separado do LightDM, que pode ser interrompido ou colocado no manual. Vou investigar as sugestões de Nicholas mais tarde.

Isso é equivalente a fazer login via LightDM com uma sessão do Xubuntu, ele permanece ativo se minha conexão vnc morrer ou eu desconectar, e eu posso aproveitar as customizações do Xubuntu.

Para fazer isso, faça ~/.vnc/xstartup conter apenas o seguinte:

#!/bin/sh
export XDG_CONFIG_DIRS=/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg
export XDG_DATA_DIRS=/usr/share/xubuntu:/usr/local/share/:/usr/share/:/usr/share
vncconfig -iconic &
. lightdm-session

Você pode substituir . lightdm-session por exec startxfce4 ou startxfce4 & . O primeiro é realmente o que o LightDM chama, mas chama xfce4-session no final.

Isto então inicia uma sessão do Xubuntu, ao invés de uma simples XFCE, e você pode parar o LightDM completamente se o acesso ao teclado / X não for necessário.

Você pode configurar um daemon colocando o seguinte em /etc/init/vncserver.conf :

start on runlevel [2345]
stop on runlevel [016]
post-start script
        su USER -c "vncserver :1 -geometry 1280x800 -depth 16 -localhost -SecurityTypes None"
end script
post-stop script
        su USER -c "vncserver -kill :1"
end script

Em seguida, inicie / pare com start vncserver . O acima é para o vnc4server e irá iniciar o Xvnc escutando somente no 127.0.0.1 e não exigirá uma senha. Isso é útil para mim, já que eu uso um túnel ssh:

ssh -L6901:127.0.0.1:5901 [email protected]

Se você usar tightvncserver, exclua a opção -SecurityTypes None , pois ela não a entende. Note que tightvncserver sempre pede uma senha (você não pode fazer isto sem senha).

OBSERVAÇÃO: se o usuário acima não for root, ou se você executar "vncserver: 1 [options]" como não-root, então dentro do XFCE haverá problemas de sudo em aplicativos GUI, porque o aplicativo sudo-ed subjacente não encontrará um display X. Ainda não encontrei uma solução para isso. Com o x11vnc, ele funciona porque o x11vnc se conecta a uma sessão X existente, incluindo: 0 um.

    
por Normadize 01.12.2013 / 04:16