The problem
On Linux operating system, installing and configure VNC is not like a breeze as in Windows.
Here some extra configuration is needed to make the VNC server start automatically and impersonate a specific user.
The goals of this tutorial are the following:
- Install tightVNC Server
- Configure it to have a specific user desktop with X interface when connecting
- Made the server start automatically at system boot
The solution
First of all we need to install the VNC server, to instal TightVNC server use the following command:
sudo apt-get update sudo apt-get install tightvncserver
Then we verify the basic installation works, to do this we launch the VNC server with a resolution of 1440×900 pixels on desktop 1, using this command:
vncserver :1 -geometry 1440x900
And we connect to the server with the client setting the connection to IPAddress:Desktop.
If the connection works and we can see the X user interface, everything went fine and we can proceed.
We have now to setup the VNC server to run on boot, to accomplish this we create the file vncboot in /etc/init.d containing the following instructions:
#!/bin/sh ### BEGIN INIT INFO # Provides: tightvncserver # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop tightvncserver ### END INIT INFO ### Customize this entry # Set the USER variable to the name of the user to start tightvncserver under export USER='pi' ### End customization required eval cd ~$USER case "$1" in start) su $USER -c '/usr/bin/tightvncserver :1 -geometry 1440x900 -depth 24' 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
Modify the file permissions so it can be executed
chmod 755 /etc/init.d/vncboot
Enable dependency based boot sequencing
update-rc.d /etc/init.d/vncboot defaults
If it says:
update-rc.d: error: unable to read /etc/init.d//etc/init.d/vncboot
then try the following command
update-rc.d vncboot defaults
The last change needed is to allow su command to be executed for our user without the need of a password, this is done modifying the file /etc/sudoers adding the line:
username ALL=NOPASSWD:/usr/bin/vncserver
Restart the Linux machine and after restart it should be possible to connect to it.
TIP: With some VNC’s versions arrow keay does not work fine when on a terminal, to fix this disable shortcuts in:
Application -> System tools -> Preferences -> System settings -> Keyboard -> Shortcut -> Window
Bibliography
I would like to thanks all the authors of the following articles to have explained various expect of the topic.