Como posso executar o lightdm no Xvfb em um Raspberry Pi?

5

Eu tenho um Raspberry Pi e estou usando-o como um servidor sem cabeçalho. Mas eu quero rodar o X nele. Ele vem com lightdm, e se você executá-lo usando o HDMI incluído ou saída de vídeo ele funciona, e eu posso usar isso e x11vnc para isso, mas sem um monitor conectado, o padrão é 800x600 ou algo muito pequeno. Eu tentei definir a geometria, sem efeito.

Então eu pensei em rodar o Xvfb, depois rodar o lightdm nele, então x11vnc a coisa toda.

O problema é que o lightdm parece não querer se conectar a um servidor X já em execução, ele quer fazer o seu próprio. Tudo bem, então eu digo para rodar o Xvfb ao invés do X, e ele falha porque o lightdm tenta passar 'vt7' como um parâmetro para o servidor X, mas o Xvfb não aceita o terminal virtual como um param porque ele não está usando nenhum terminal , é um buffer de quadro virtual.

Então me ajude? Como eu posso obter lightdm (eu chequei os documentos e opções, nada óbvio) para iniciar o Xvfb corretamente (sem vt7 param), ou obtê-lo para anexar a um servidor X existente que já está em execução e não tente executar o seu próprio.

    
por Stu 27.12.2012 / 16:16

1 resposta

7

Aliás, eu estava enfrentando o mesmo problema ao mesmo tempo. Também queria rodar um servidor headless com Xvfb e VNC, mas não no RPi. Eu encontrei uma solução de trabalho fazendo os seguintes passos ...

apt-get install lubuntu-core xvfb x11vnc

Eu descobri que todas as opções de configuração do lightdm.conf estão documentadas em /usr/share/doc/lightdm/lightdm.conf.gz. Então dê uma olhada neles emitindo o seguinte comando.

zcat /usr/share/doc/lightdm/lightdm.conf.gz

Obviamente, como você relatou, o lightdm tenta instanciar seu próprio servidor X e passa alguns argumentos que o Xvfb não pode manipular. O primeiro passo para contornar isso é adicionar uma linha 'xserver-command' ao arquivo de configuração do lightdm /etc/lightdm/lightdm.conf (o padrão é xserver-command = X).

[SeatDefaults]
greeter-session=lightdm-gtk-greeter
user-session=Lubuntu
xserver-command=/etc/X11/xinit/xserverrc

Depois disso, eu modifiquei /etc/X11/xinit/xserverrc para iniciar o Xvfb ao invés de um servidor X real (note que eu comentei a linha exec do X original que passa os argumentos da linha de comando para X). Adicionar uma linha exec em vez de executar o Xvfb foi o suficiente para fazer o lightdm trabalhar com o Xvfb.

#!/bin/sh

#exec /usr/bin/X -nolisten tcp "$@"
exec Xvfb :0 -screen 0 1024x768x24

Isto me parece um método conveniente de envolver o comando lightdm X em um script wrapper adequado que já está presente na instalação padrão do (L) Ubuntu.

Por fim, uso VNC após ssh'ing no sistema, encaminhando a porta VNC e conectando-me à porta encaminhada no host local com um cliente VNC (no meu caso, o compartilhamento de tela do Mac OS).

ssh -L 5900:localhost:5900 user@machine 'x11vnc -localhost -display :0 -many'
    
por 29.12.2012 / 13:57