Many times you need to enable VNC connections in your unix server by default at boot time. In RHEL it’s quite easy but in Ubuntu it’s quite tricky, that’s why I’m pulishing this entry.
First of all, we install vncserver:
1 |
sudo apt-get install vnc4server |
and let’s edit ~/.vnc/xstartup for each of our O.S. users with the following script:
1 2 3 4 5 6 7 8 9 10 |
#!/bin/sh # Uncomment the following two lines for normal desktop: unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc gnome-session --session=gnome-classic & [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-window-manager & |
Then, edit a config file in which we specify VNC screen resolution for each user:
1 2 3 |
sudo mkdir -p /etc/vncserver sudo touch /etc/vncserver/vncservers.conf sudo vi /etc/vncserver/vncservers.conf |
And we fill it, one array entry for each user:
1 2 3 |
VNCSERVERS="1:user1 2:user2" VNCSERVERARGS[1]="-geometry 1024x600 -depth 24" VNCSERVERARGS[2]="-geometry 1024x600 -depth 24" |
And finally we must create an startup script under /etc/init.d/vncserver:
1 2 3 |
sudo touch /etc/init.d/vncserver sudo chmod +x /etc/init.d/vncserver sudo vi /etc/init.d/vncserver |
Filling it with:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
. /lib/lsb/init-functions VNCSERVERS="" [ -f /etc/default/vncservers ] && . /etc/default/vncservers || exit 0 start() { ulimit -S -c 0 >/dev/null 2>&1 RETVAL=0 for display in ${VNCSERVERS}; do eval cd ~${display##*:} if [ -e ".vnc/passwd" ]; then log_begin_msg "Starting VNC Server for user ${display##*:}:" unset BASH_ENV ENV su ${display##*:} -c "cd ~${display##*:} && vncserver :${display%%:*} ${VNCSERVERARGS[${display%%:*}]}" RETVAL="$?" if [ "$RETVAL" -ne 0 ]; then log_end_msg 1 break else log_end_msg 0 fi else log_begin_msg "Not starting VNC Server for user ${display##*:}.\n File \"~${display##*:}/.vnc/passwd\" not found.\n Create a password file for the VNC server with vncpasswd" log_end_msg 1 fi done [ "$RETVAL" -eq 0 ] && touch "/var/lock/vncserver" } stop() { unset BASH_ENV ENV for display in ${VNCSERVERS}; do log_begin_msg "Shutting down VNC Server for user ${display##*:}: " su ${display##*:} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1 RETVAL="$?" [ "$RETVAL" -eq 0 ] && log_end_msg 0 || log_end_msg 1 done [ -f "/var/lock/vncserver" ] && rm -f "/var/lock/vncserver" } case "$1" in start) start ;; stop) stop ;; restart|reload) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0 |
Once finished, we just neeed to add it to startup services:
1 2 |
update-rc.d vncserver defaults service vncserver start |
Enjoy!