虚拟网络计算工具VNC使用指南
|
虚拟网络计算工具(VNC,Virtual Network Computing)本质上来说是一个远程显示系统,管理员通过它不仅仅可以在运行程序的本地机上察看桌面环境,而且可以从Internet上的任何地方察看远程机器的运行情况,而且它具有跨平台的特性。 本文将讨论为Linux系统设置基于VNC的X Windows系统桌面的一个全新的方法,通过阅读本文,你将能够配置实现通过一个显示管理器登录进入X-Window桌面。更重要的是,用户能在网络任何位置通过工作站控制台安全地访问同一个桌面。 典型情况下,一个图形工作站系统运行有一个显示管理器。在本文中我们讨论的显示管理器指XDM, GDM (GNOME显示管理器)或KDM (KDE显示管理器)等应用。一个显示管理器为用户提供图形化的登录界面。当一个用户登录进入系统,显示管理器启动合适的窗口管理器(例如fvwm2, GNOME或KDE)。从窗口管理器中用户可以运行任何应用程序。当用户退出登录,应用程序被关闭,窗口管理器同样退出,显示管理器再次出现,等待再次登录。如果同一个用户重新登录,那么显示管理器启动一个新的窗口管理器,并且所有的应用必须重新启动。这就是传统的X-Window系统桌面的工作过程。我们将这样一个桌面会话称为一个X桌面。当一个用户使用工作站的键盘和监视器来使用工作站时,我们就称之为用户通过控制台登录,这是为了和通过网络登录区分。 因此,网络上的任何计算机可以运行VNC客户端(例如vncviewer)来连接到工作站来显示桌面。我们甚至可以在运行VNC服务器的工作站上运行VNC客户端。我们将这种桌面会话称为VNC桌面,我们把运行VNC服务器(和其窗口管理器)的工作站称为VNC工作站。 对于VNC桌面,有一个问题。假设你希望通过控制台登录到VNC工作站,那么这个工作站同样在运行在VNC桌面。你可能通过网络上其他机器连接登录该工作站,这时候你往往希望能继续通过网络连NC桌面。同时当你通过一个显示管理器登录到控制台时,你希望看到和通过VNC连接登录时看到的同样的桌面。但是如果如果你通过显示管理器登录到工作站,那么它将会启动一个新的窗口管理器。基本上来说你启动的是一个新的X桌面,它和已经运行在该工作站的VNC桌面是没有关系的。 如果你希望在一个Unix系统上连接到VNC桌面,你必须运行一个VNC客户端,例如vncviewer。这样很愚蠢,因为基于X的桌面的一个应用程序窗口(vncviewer)本身是另外一个机器上的桌面(VNC桌面)。象这样保持多级别的重定向是非常麻烦的,除了容易引起混淆,而且效率也很低下因为需要系统运行两个窗口管理器,虽然实际上应该只需要一个。 前提 rpm -q XFree86 vnc XFree86-xdm kdebase gdm x:5:respawn:/etc/X11/prefdm -nodaemon RedHat7.1提供了一些简单的方法在系统启动时来启动VNC。使用linuxconf来设置vncserver启动脚本(/etc/init.d/vncserver)实现系统自启动时启动vncserver。但是默认的启动脚本灵活性不够,因此编辑/etc/init.d/vncserver,修改: "su - ${display##*:} -c "cd && [ -f .vnc/passwd ] "su - ${display##*:} -c "cd && [ -f .vnc/passwd ] VNCSERVERS="1:jdimpson" exec vncviewer -passwd $HOME/.vnc/passwd 当你通过显示管理器登录到服务器,它将被你选择的运行在VNC服务器的窗口管理器所替代。如果在网络中有其他的计算机,那么可以试一试使用客户端连接服务器。那么你就可能看到两个桌面。当使用一个计算机移动一个窗口,你可以看到在另外的计算机上的窗口同样在移动。 在登录到显示服务器以后,如果显示屏闪烁以后,重新出现登录界面,那么说明出现了错误。首先确保VNC服务器在运行和.xsession文件配置是正确的。 应该注意的是在设置中你不应该使用任何退出窗口管理器的登录特性。这样将终止VNC桌面,这可能不是你希望的结果。这时使用Ctrl-Alt-Backspace来杀除X服务器,显示管理器返回到屏幕。如果你重新登录,你将进入到你刚才离开的环境,因此你可以将控制台给别的用户使用,而不丢失你的桌面状态。 系统原理
显示管理器同样会在系统启动时启动,并且为用户提供一个图形登录界面。 对于哪些没有配置VNC服务器和没有在主目录下正确设置.xsession文件的用户来说,他们在登录进入显示管理器时将得到常见的X桌面。对于那些具有适当的配置的用户来说将会得到一个VNC桌面, 而且能够在网络上任何位置访问VNC桌面。 缺点和其他选项 该配置对于多用户应用环境来说可伸缩性不够好,你能在/etc/sysconfig/vncservers文件中定义很多VNC会话来实现在系统启动时启动。。但是所有的这些VNC桌面都会处于空闲状态直到它们被使用。对应每个VNC桌面都会有一个VNC服务器,一个窗口管理器在运行。对于GNOME和KDE还会运行有很多辅助应用。所有的这些应用都会占用内存,而且相互之间会竞争资源。对于诸如类似Citrix MetaFrame和Microsoft Terminal Server 的商业解决方案都需要有强大的计算机来支持多用户应用环境。 另外一个可选的方式是使用XDMCP,它是实现远程访问X桌面的传统方法,但是这种方法可能使你丢掉桌面状态的连续性,因为在这种方式下每次登录都是启动一个新的桌面,这样你就不能实现本地和远程共享同一个桌面。可以在www.linuxdoc.org/HOWTO/XDMCP-HOWTO得到更多关于XDMCP的资料。 另外一个解决方法是以inetd/xinetd方式运行VNC,也就是使用-inetd参数。但是这可能导致VNC为每个连接都重新启动,使得多个连接使用一个桌面,而且初始连接断开以后对应的VNC进程也随之结束。所以失去了保持连接状态和在本地远程之间共享桌面的特性。察看VNC得到更多的资料。 另外一个选择是使用x0rfbserver,这个应用以正常的X桌面方式运行,但是其却依赖于VNC客户端的显示内容。它能很好的利用X服务器支持的任何加速显卡的特性。而且它比X服务器加VNC服务器的方式占用更少的内存(它只需要一个X服务器和本来就很小的x0rfbserver应用程序)。但是它却要求你总是保持X桌面运行在控制台,因此它不适用于多个用户公用机器的情况。可以从www.hexonet.de/software.en得到更多的资料。 Jeremy D. Impson 是来自Owego的Lockheed Martin Systems Integration的一名高级副研究员。他是移动通信和移动计算中心的成员,在这里他使用开放源码软件来开发移动计算系统。你可以通过电子邮件地址jeremy.impson@lmco.com和他联系。 |

图 1.一个显示管理器
本文将讨论如何配置一个X服务器,显示管理器和一个VNC服务器,使得可以直接登录到VNC桌面,而不需要再启动一个窗口管理器,并且在离开时保持所有的文件和应用程序状态直到下次登录。
图三:整个流程