Escritorio remoto en Ubuntu con equipo sin monitor

Lo que se busca es un equipo desatendido al que conectarse remotamente por VNC cuando fuera necesario.

Solución:
  • Como servidor de VNC se usa x11vnc que a diferencia que el resto de los servidores no crea una nueva sesión al conectarte, si no que muestra lo que esta sacando por pantalla (al estilo habitual de los VNC de windows).
    Como hay varios usuarios dados de alta y necesito cambiar entre ellos, lo que se hace es lanzar en VNC con la Xauthority del gdm (normalmente en /var/run/gdm/), así el servidor VNC comienza en la pantalla de selección de usuarios.
    La unica complicación que se presentaba era el respawn (para que puedas cambiar de usuario y no mate el proceso VNC cuando vuelve al gdm) con el nuevo arranque upstart.
    Para eso se crea un nuevo fichero nombre.conf en /etc/init/ con esto
    # x11vnc
    #
    # This service launch x111vnc server form user selection screen.
    start on started gdm
    stop on runlevel [016]
    respawn
    exec /usr/bin/x11vnc -q -forever -rfbauth [ruta del passwd] -auth [ruta del authority del gdm] -display :0 (<- todo esto en una linea)
    Ayuda bastante los nuevos comandos del x11vnc -findauth and "-auth guess" para localizar la Xauthority
  • Una vez solventado el tema del VNC el problema esta en el arranque sin monitor. Para esto lo primero que hay que hacer es deshabilitar el sistema KMS (Kernel mode setting) de la siguiente manera:
    Editar el fichero /etc/default/grub y añadir el parámetro "nomodeset" a la línea GRUB_CMDLINE_LINUX.
    Ejecutar sudo update-grub.
    Ahora que el grub arranca sin monitor, hay que definirle uno "virtual" para las X, para esto hay que cambiar (o como en mi caso crear) el xorg.conf en /etc/X11/ y dejarlo así
    Section "Monitor"
    Identifier "Monitor generico"
    HorizSync 30-71
    VertRefresh 50-160
    EndSection
    Section "Screen"
    Identifier "Default Screen"
    Device "Configured Video Device"
    DefaultDepth 24
    SubSection "Display"
    Depth 24
    Modes "1024x768" "800x600"
    EndSubSection
    EndSection
    Section "Device"
    Identifier "Configured Video Device"
    Driver "vesa"
    Option "NoDDCValue"
    EndSection
Con esto he conseguido que arranque sin monitor eso si, solo a 800x600 no se por que no puedo ponerlo a 1024.
La solución a esto es la siguiente:
Lo que hecho es lo siguiente:
Se vuelve a dejar la configuración inicial.
Editar el fichero /etc/default/grub y quitar el parámetro "nomodeset" a la línea GRUB_CMDLINE_LINUX.
Ejecutar
sudo update-grub
.
Esto se hace porque si en un futuro se cambia de idea, no nos acordaremos de que tenemos deshabilitado el sistema KMS (Kernel mode setting) y se perderá más tiempo de lo debido si hiciera falta. 
Este paso no es estrictamente necesario realizarlo.
Instalar el paquete xserver-xorg-video-dummy su descripción en Synaptic es la siguiente:
Este paquete proporciona un controlador de monitor de prueba, el cual realmente no muestra nada.
sudo aptitude install xserver-xorg-video-dummy
y crear fichero /etc/X11/xorg.con con lo suguiente:
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 24
     SubSection "Display"
     Depth 24
     Modes "1024x800"
     EndSubSection
 EndSection
Ahora el VNC funciona si arrancamos PC sin pantalla y permite elegir resoluciones entre las resoluciones 1360x768, 1024x768, 800x600, 640x480 ....
La pega es que si ponemos un monitor este no mostrará nada por pantalla, ya que el driver utilizado no utiliza ningún hardware.
Si queremos utilizar un monitor tendremos que eliminar el fichero /etc/X11/xorg.con (para ello tedrá que estar habilitado el sistema KMS) o volver al fichero anterior.