Raspberry‎ > ‎

Habilitar VNC Server sin entorno gráfico

publicado a la‎(s)‎ 13 may. 2016 11:26 por Juan Jose Ramirez Lama   [ actualizado el 13 may. 2016 11:40 ]

Yo hace un día, a la fecha de la publicación de esta entrada, recibí mi nueva Raspberry Pi 2, el único inconveniente que tenia es que yo no tenia en mi oficina (donde la usare para trabajo de pruebas) una pantalla HDMI, y al intentar entrar por VNC no me dejaba, ya que al parecer estaba o no instalado (instale Rapsbian) o no habilitado, así que me conecte por SSH para configurar todo lo necesario, a continuación describo todo los pasos.

Primero ingresamos por ssh a la raspberry:
$ ssh pi@192.168.1.100
nos pedira una clave, la cual es por defecto raspberry

Luego instalamos VNC:
$ sudo apt-get install xorg lxde-core lxde-icon-theme tightvncserver

Una vez instalado procedemos a configurarlo. 

Si iniciamos TightVNC y nos conectamos en estos momentos sólo veríamos una pantalla gris. Eso es debido a que es necesario configurar VNC para que inicie el escritorio LXDE al conectarnos. Para ello ejecutamos el siguiente comando para editar el archivo de configuración de VNC.
$ nano  ~/.vnc/xstartup

Añadimos la siguiente linea al final del archivo
lxterminal & /usr/bin/lxsession -s LXDE &
Guardamos cambios y cerramos el archivo

Ese es el archivo de configuración por defecto de VNC.
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &

Para configurarlo debemos sustituir su contenido por lo siguiente:
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
lxterminal & /usr/bin/lxsession -s LXDE &

Ahora iniciamos la primera conexión ya que nos solicitar configurar una contraseña.
/usr/bin/tightvncserver :1 -geometry 800x600/usr/bin/tightvncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565 -depth 16 -pixelformat rgb565
Y nos pedirá escribir nuestra contraseña con la que accederemos a VNC. Una vez configurada la contraseña (mínimo 6 y máximo 8 caracteres) de acceso nos indicará que el servidor se ha instalado en la primera pantalla virtual de VNC, es decir, en :1

Sin en algún momento queremos detener TightVNC usamos
$ tightvncserver -kill :1

Configurar para que arranque con el sistema

Ya podríamos conectarnos con nuestro computador. Pero si en algún momento se apaga o se reinicia el computador el servidor dejaría de estar disponible. Tendríamos que conectarnos por SSH previamente e iniciar TightVNCServer. Para evitar esto vamos a configurar el sistema para que inicie TightVNC Server al iniciar.

Para ello escribimos el siguiente comando.
$ sudo nano /etc/init.d/tightvncserver
Añadimos el código siguiente
#!/bin/sh
# Change username by the user you want to run this under
export USER='username'
 
eval cd ~$USER
 
case "$1" in
  start)
    su $USER -c '/usr/bin/tightvncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565'
    echo "Starting TightVNC server for $USER"
    ;;
  stop)
    pkill Xtightvnc
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

A continuación guardamos cambios y cerramos. Finalmente introducimos el siguiente comando.

$ sudo chmod 775 /etc/init.d/tightvncserver
$ sudo update-rc.d tightvncserver defaults
La siguiente vez que reiniciemos nuestra máquina se iniciará automáticamente TightVNC server, y podremos conectarnos, iniciándose el entorno LXDE al iniciar la sesión.

Alternativa:

Los siguiente sirve para tener un script que puedas ejecutar si es que por algún error no se inicio el servidor vnc tal como lo programamos.
Creamos una archivo
$ nano vnc.sh
Añadimos las siguientes líneas
#!/bin/sh
/usr/bin/tightvncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565

Guardas y cierras
Ahora le daremos los permisos de ejecución:
$ chmod +x vnc.sh
Ahora solo debes ejecutar el siguiente comando para correr el servicio cada vez:
$ ./vnc.sh

Para conectarnos a él solo debemos, en el equipo cliente iniciar nuestro servicio VNC y conectarnos a la maquina con la IP de nuestro servidor seguida de dos puntos : y el escritorio virtual que hemos activado, en nuestro caso, en 1. Según este ejemplo es 192.168.1.100:1.


Comments