Eu fiz algo semelhante em uma distribuição Linux não-Ubuntu. Para fins de teste, usarei meu HTPC executando o Ubuntu (14.04) para ter certeza de que ele funcionará bem com mudanças mínimas.
Informações de distribuição
htpc@HTPC:[~]:$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
Certificar-se de que a exibição que queremos usar ainda não esteja presente
htpc@HTPC:[~]:$ DISPLAY=:1 xset q
xset: unable to open display ":1"
Iniciando o Xvfb
Sudo não é necessário. Eu corro como o mesmo usuário que também inicia o navegador.
Xvfb :1 -screen 0 '1280x1024x16' -ac &> /dev/null &
Verifique se a exibição está presente e é de sua propriedade
htpc@HTPC:[~]:$ ls -l /tmp/.X11-unix/X1
srwxrwxrwx 1 htpc htpc 0 Apr 15 11:37 /tmp/.X11-unix/X1
Exportar a exibição atual para o : 1 que acabamos de criar.
Também podemos adicionar DISPLAY =: 1 antes de cada comando que queremos executar no display. No entanto, a exportação garante que isso será salvo para a sessão atual, para que você não precise fornecê-la para todos os comandos.
export DISPLAY=:1
Outra verificação para garantir que a tela esteja presente e funcionando (e também que o bit de exportação esteja funcionando)
htpc@HTPC:[~]:$ xset q
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000000
XKB indicators:
00: Caps Lock: off 01: Num Lock: off 02: Scroll Lock: off
03: Compose: off 04: Kana: off 05: Sleep: off
06: Suspend: off 07: Mute: off 08: Misc: off
09: Mail: off 10: Charging: off 11: Shift Lock: off
12: Group 2: off 13: Mouse Keys: off
auto repeat delay: 660 repeat rate: 25
auto repeating keys: 00ffffffdffffbbf
fadfffefffedffff
9fffffffffffffff
fff7ffffffffffff
bell percent: 50 bell pitch: 400 bell duration: 100
Pointer Control:
acceleration: 2/1 threshold: 4
Screen Saver:
prefer blanking: yes allow exposures: yes
timeout: 600 cycle: 600
Colors:
default colormap: 0x20 BlackPixel: 0x0 WhitePixel: 0xffff
Font Path:
/usr/share/fonts/X11/misc,/usr/share/fonts/X11/Type1,built-ins
DPMS (Energy Star):
Display is not capable of DPMS
Etapa de depuração extra
Eu estarei executando o nc , que será impresso com detalhes se o Chrome tentar contatá-lo. Então, saberemos se essa configuração funciona. Outra maneira é executar um servidor VNC no mesmo monitor e conectar-se a ele para que você possa ver o que o navegador está fazendo e se o Chrome está inicializando corretamente. Qual eu recomendaria! O Chrome pode estar com erros diferentes na interface do usuário, que não podem ser vistos no console no seu caso.
htpc@HTPC:[~]:$ echo Testing... | nc -l 9999 -v &
[2] 8416
htpc@HTPC:[~]:$ Listening on [0.0.0.0] (family 0, port 9999)
Hora de iniciar o Chrome !
htpc@HTPC:[~]:$ google-chrome --disable-gpu 'http://localhost:9999' &
[3] 8512
htpc@HTPC:[~]:$ [8512:8512:0415/115726:ERROR:browser_main_loop.cc(271)] Gtk: Locale not supported by C library.
Using the fallback 'C' locale.
Xlib: extension "RANDR" missing on display ":1".
Xlib: extension "RANDR" missing on display ":1".
Connection from [127.0.0.1] port 9999 [tcp/*] accepted (family 2, sport 40050)
GET / HTTP/1.1
Host: localhost:9999
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Como você pode ver acima do erro RANDR que ainda está presente, simplesmente ignore-o. Abaixo, você vê a solicitação HTTP feita pelo Chrome (consulte o bit User-Agent) para o processo nc que iniciamos. Parece que o Chrome está iniciando conforme o esperado e visitando o URL fornecido.
Tentando o mesmo com o Chromium
htpc@HTPC:[~]:$ chromium-browser --disable-gpu 'http://localhost:9999' &
[3] 13108
htpc@HTPC:[~]:$ Xlib: extension "RANDR" missing on display ":1".
Xlib: extension "RANDR" missing on display ":1".
[13108:13108:0415/145854:ERROR:logging.h(813)] Failed to call method: org.freedesktop.DBus.ObjectManager.GetManagedObjects: object_path= /: org.freedesktop.DBus.Error.UnknownMethod: Method "GetManagedObjects" with signature "" on interface "org.freedesktop.DBus.ObjectManager" doesn't exist
Connection from [127.0.0.1] port 9999 [tcp/*] accepted (family 2, sport 40542)
[13108:13108:0415/145854:ERROR:logging.h(813)] Failed to call method: org.freedesktop.DBus.ObjectManager.GetManagedObjects: object_path= /: org.freedesktop.DBus.Error.UnknownMethod: Method "GetManagedObjects" with signature "" on interface "org.freedesktop.DBus.ObjectManager" doesn't exist
GET / HTTP/1.1
Host: localhost:9999
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Fazer o mesmo tem praticamente o mesmo efeito, com alguns outros avisos adicionais. O User-Agent é o Chromium como esperado.
Extra
Se você quiser manter tudo em execução, não se esqueça de emitir o comando disown por processo e mantê-los em execução em segundo plano para garantir que eles não sejam eliminados quando você fizer logout. Veja link para mais informações sobre disown .