实验室的server从10.04 LTS升级到12.04 LTS,升级真是痛苦的过程。很多软件更新后同以前的配置都变的不一样了。这次主要说说作为远程桌面的RealVNC。[本文主要针对linux下的经典gnome配置,windows的请飘过吧。]


我们都知道Ubutnu自从引入Unity作为默认桌面后,争议不断,gnome也在这个时候升级到了第三个版本。我想这无疑对用户是个严重的影响,毕竟操作习惯的严重改变挑战了用户对系统的热情,况且两款桌面的同时变化让熟悉gnome风格的fans们有点无所适从。貌似有点跑题,其实不是的。新桌面的引入对VNC配置文件也造成了影响。原来默认针对gnome 2.x的配置文件发现总是出现各种问题,而对gnome 3的支持又不完善。那么RealVNC 5带给了我们什么呢?


1. RealVNC的安装

VNC 5.0的安装倒是没什么太值得探讨的,到官方网站上http://www.realvnc.com/download/去下载。官网提供了debian的安装包,下回来双击运行就是了。


5.0的server跟vnc4server有明显的不同:

首先:VNC分为了免费版,个人版和企业版。就算用免费版也要去申请个license,地址:http://www.realvnc.com/products/vnc/licensing/。

其次:新的VNCsever目前提供了两种VNC接入方式,一种是类似系统自带的远程桌面模式的接口,单用户,远程桌面和本地桌面完全同步。另一种就是多用户的虚拟桌面的登录方式,用户间彼此不干扰,跟原本vnc4server时一样。


2.单用户远程桌面。

新版的VNCsever使用了图形界面的控制方式,但是这种方式无法通过SSH等远端的命令启动。对应的程序是vncserver-X11。要记得在more -> option选项中设置密码,否则无法从远程登录。



如果设置完毕,没有问题的话主界面上会用绿色表示,告诉你已经准备等待接入了。这时用vncviewer登录就可以了。

服务端运行后可以用右下角Hide来隐藏。



同多用户的接入不同,用vncviewer接入时地址后面不需要追加桌面号。如  :1。

点击connect后会问你要密码,添刚才在服务端设置的密码就是了。


这种链接方法同windows的3389接入一样,有其他用户登入就会被顶下来,但是设置比较方便,目前还没遇到什么桌面出现问题。


3.多用户接入的配置

现在这个时间点ubuntu 13.04也快发布了,对12.04来说,已经称不上新版了,但正如前面所说,unity和gnome3的引入改变了很多用户的习惯,VNC的设置在KDE下是否有变化我不是太清除。Unity下设置的例子网上也可以搜到。这里介绍的也仅仅是gnome经典桌面下的配置。


gnome桌面目前分为gnome3和gnome-classic。gnome-classic样式跟经典的gnome2是很相像的,但据说内核用的也是gnome3的内核。RealVNC官方网站上也有说VNC在gnome的一些桌面下显示不正确,貌似跟登录管理器或者显卡驱动有些关系,我用gnome3没有成功,但是经典gnome桌面还是可以用这种方法实现的。


如果没有安装经典的gnome桌面的话要先安装。


点击(此处)折叠或打开

  1. sudo apt-get install gnome-session-fallback


先说启动服务。多用户的服务的启动跟单用户不同,是通过vncserver-virtual来启动的,这一步跟经典到vnc4server一样,而且最重要的是可以通过远程ssh来启动,不像前面的模式,必须手动在那台机器上先启动。第一次用要记得用vncpasswd命令设置密码。每运行一次vncserver-virtual都会新建一个虚拟桌面来供接入。在提示信息中会告诉你当前启动到桌面号。如果要杀掉某个桌面的话用“vncserver-virtual -kill :x”来杀死指定的桌面,x为桌面号对应的数字,注意,kill与冒号间有个空格。


多用户一个最大的问题就是远程桌面链接进来后桌面显示不正确。我们看下配置文件。


新版的默认配置文件没在用户文件夹下(~/.vnc/xstartup),而是在 /etc/vnc下面。


点击(此处)折叠或打开

  1. #!/bin/sh

  2. # Default VNC Server (Virtual-Mode) start-up script.
  3. #
  4. # This file is automatically generated. DO NOT EDIT.
  5. # To override settings in this file, create or edit /etc/vnc/xstartup.custom
  6. # and make it executable. This will then be executed instead of this file.

  7. [ -x /etc/vnc/xstartup.custom ] && exec /etc/vnc/xstartup.custom                   #这里是检查是否有用户自定义的配置文件,如果有优先运行用户自定义的文件,建议不要修改这个文件,而是用自己新定义的文件来运行。

  8. [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
  9. xsetroot -solid grey

  10. if [ -f /usr/bin/gnome-session ]; then                                             #这里是检查已经安装的session,对其进行设置。虽然原则上安装了应该可以用,但是如果没问题,我们就不会这么纠结了。
  11. # Some gnome session types won't work with Xvnc, try to pick a sensible
  12. # default.
  13. for SESSION in "ubuntu-2d" "2d-gnome"; do
  14. if [ -f /usr/share/gnome-session/sessions/$SESSION.session ]; then
  15. DESKTOP_SESSION=$SESSION; export DESKTOP_SESSION
  16. GDMSESSION=$SESSION; export GDMSESSION
  17. STARTUP="/usr/bin/gnome-session --session=$SESSION"; export STARTUP
  18. fi
  19. done
  20. fi

  21. if [ -x /etc/X11/Xsession ]; then /etc/X11/Xsession                                 #这里面也是判断该运行那个session。
  22. elif [ -x /etc/X11/xdm/Xsession ]; then /etc/X11/xdm/Xsession
  23. elif [ -x /etc/X11/xinit/Xsession ]; then /etc/X11/xinit/Xsession
  24. elif [ -x /etc/gdm/Xsession ]; then /etc/gdm/Xsession gnome-session
  25. elif [ -x /etc/kde/kdm/Xsession ]; then /etc/kde/kdm/Xsession
  26. elif [ -x /usr/dt/bin/Xsession ]; then
  27. XSTATION=1 DTXSERVERLOCATION=local /usr/dt/bin/Xsession
  28. elif [ -x /usr/dt/bin/dtsession ]; then /usr/dt/bin/dtsession
  29. else
  30. if which twm > /dev/null 2>&1; then                                                  #用过vnc4server的朋友应该对这里非常熟悉,我们那个时候为了登入gnome桌面也要对这里进行相应的修改的。
  31. xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
  32. twm
  33. else
  34. xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop"
  35. fi
  36. fi

  37. vncserver-virtual -kill $DISPLAY                                                     #最后这里是如果有已存在的链接先杀掉。我不太清楚它的意义。以前的没有也用的好好的。



原始文件的问题在于,它检测的列表里存在多个可登入的session时,它会按默认顺序来登入,而且默认是没有gnome的配置的。对于登入经典gnome来说,我们自己写个配置文件就可以了。



点击(此处)折叠或打开

  1. #!/bin/sh

  2. [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

  3. xsetroot -solid grey

  4. DESKTOP_SESSION="gnome-fallback"; export DESKTOP_SESSION
  5. GDMSESSION="gnome-fallback"; export GDMSESSION
  6. STARTUP="/usr/bin/gnome-session --session=gnome-fallback"; export STARTUP

  7. vncconfig -iconic &
  8. xterm -geometry 1680x1050+10+10 -ls -title "$VNCDESKTOP Desktop" &
  9. gnome-session-fallback

第3行:跟默认配置比起来默认配置的第一行要去掉,否则就成了反复运行用户自定义的配置文件了。


第5行:没有变化。


第7~9行:环境设置部分不要依赖系统去判断了,不过你从默认配置的路径中应该知道你去哪里查找你都安装了哪些session和系统可能回去检查调用哪些。只要按照路径去看看就清除了。

由于我们用的是经典gnome,那么将$SESSION变量都替换成gnome-fallback就可以了。这里要注意,跟上面安装的名称是不一样的,上面的是“gnome-session-fallback”,但/usr/share/gnome-session/sessions/下的名字是“gnome-fallback”,一定要亲自去查看下在添。


第11行:没有变化。

第12行:是远程接入时默认桌面大小的设置,这个完全可以在初始化桌面时在参数中指定,这里原来默认的是80x24,改不改我没看出啥作用。启动时设置为:

点击(此处)折叠或打开

  1. vncserver-virtual -geometry 1680x1050 #你自己显示器的分辨率
这个参数目前在程序的help和man里都找不到了,但是还是可以正常使用,神奇吧。

第13行:最后一行以前vnc4时也要修改,登入gnome桌面要改为 gnome-session,在现在这个版本下对应的session就是“gnome-session-fallback”。



多用户的登录跟以往没什么区别。



地址后面“冒号+桌面号”,connect后填上密码就可以进入了。


写了一堆,还有很多细节没有提及,其它桌面的接入也没有尝试是否正常,有兴趣的可以自己根据自己的情况修改下,看看是不是可以正常运行。这里就起到个抛砖引玉的作用吧。

Logo

更多推荐