最近更新日期:2011/11/24
11.3 最原始图形接口: Xdmcp 服务的启用
11.3.1 X Window 的 Server/Client 架构与各组件 11.3.2 设定 gdm 的 XDMCP 服务 11.3.3 用户系统为 Linux 的登入方式: Xnest 11.3.4 用户系统为 Windows 的登入方式: Xming 11.3 最原始图形接口: Xdmcp 服务的启用 考虑一个情况,如果你的 Linux 主机主要是用来作为图形处理时,而且同时有多人需要用到那个功能,
那么一部 Linux 是否一次仅能提供一个人处理那个软件呢?嘿嘿!那可不一定喔!因为 Linux
有相当优秀的 X Window System 啊!现在就来谈谈第一个图形接口的远程联机服务器吧! 11.3.1 X Window 的 Server/Client 架构与各组件 由于我们 Linux 使用的图形接口是所谓的 X-Window System 的东西,这玩意儿是能够跨平台的,目前在 Linux 上头开发的图形接口软件,几乎都是使用这个 X 的架构来处理,所以啰,你就不能够不知道 X Window 啦! 我们在基础篇第三版的二十四章已经讲过 X Window 啦, 因此这里只会作个简单的介绍,以方便大家来了解为何我们的软件是这么安装与设定喔! X Window System 在运作的过程中,又因控制的数据不同而分为 X Server 与 X Client 两种程序,虽然说是 X Server/Client , 但是他的作用却与网络主机的 Server/Client 架构大异其趣喔~先来说说 X Server/Client 这两种程序所负责的任务先:
由于每一支 X client 都是独立存在的程序,因此在图形显示会发生一些迭图的问题 (想象一下每一个 X client 都是一个很自我的画家, 每个画家都不承认对方的存在,都自顾自的在画布上面作画,最后的结果会是如何?)。因此,后来就有一组特殊的 X client 在进行管理所有的其他 X client 程序,这个总管的咚咚就是 Window Manager!
既然 X Window System 是 Linux 上面的一组程序,那么它如何启动的呢?早期的用户在登入系统后,必须要自己先启动 X server 程序,然后再启动个别的 Window manager ,若有其他需求,再启动其他额外的 X client 就是了。这么麻烦!所以为了简化启动个人图形接口的步骤,后来还有所谓的 Display Manager (DM) 这玩意喔!
在目前新释出的 Linux distributions 中,通常启动图形接口让用户登入的方式中,都是先执行 Display Manager 程序, 该程序会主动加载一个 X Server 程序,然后再提供一个等待输入账号密码的接口程序,之后再根据用户的选择去启动所需要的 Window Manager 程序,最后就由用户直接操作 WM 来玩图形接口啰。
当 X server, X client 都在同一部主机上面的时候,你可以很轻松的启动一个完整的 X Window System。 但是如果你想要透过这个机制在网络上面启动 X 呢?此时你得先在客户端启动一个 X server 将图形接口绘图所需要的硬件装置配置好, 并且启动一个 X server 常见的接收埠口 (通常是 port 6000),然后再由服务器端的 X client 取得绘图数据,再将数据绘制成图啰。 透过这个机制,你可以在任何一部启动 X server 登入服务器喔!而且不管你的操作系统是啥呢!意义就像下图, 如此一来,你就可以取得服务器所提供的图形接口环境啦! 图 11.3-1、X server/client 的架构 但是如果你是使用最笨的方法在客户端自己启动 X server ,然后在告诉服务器将 X client 程序一个一个的加载回来, 那就太累人了吧!我们之前上面不是提到过可以用 display manager 来管理使用者的登入与启动 X 吗?那服务器能不能提供一个类似的服务, 那我们直接透过服务器的 display manager 就能够提供我们登入的认证与加载自己选择的 window manager 的话,这样就太棒了! 能够达到吗?当然可以啊!那就是透过 Xdmcp (X display manager control protocol) (注3) 啦! Xdmcp 启动后会在服务器的 udp 177 开始监听,然后当客户端的 X server 联机到服务器的 port 177 之后, 我们的 Xdmcp 就会在客户端的 X server 放上用户输入账密的图形接口程序啰!那你就能透过这个 Xdmcp 去加载服务器所提供的类似 Window Manager 的相关 X client 啰!那你就能够取得图形接口的远程联机服务器哩!赞吧! 那么什么时候会出现多使用者连入服务器取得 X 的情况呢?以鸟哥的例子来说,鸟哥实验室有一组 Linux 在进行数值模拟, 他输出的结果是 NetCDF 档案,我们必须使用 PAVE 这一套软件去处理这些数据。但是我们有两三个人同时都会使用到那个功能, 偏偏 Linux 主机是放在机架柜里面的,要我们挤在那个小小的空间前面『站着』操作计算机,可真是讨人厌啊~ 这个时候,我们就会架设图形接口的远程登录服务器,让我们可以『多人同时以图形接口登入 Linux 主机』来操作我们自己的程序!很棒,不是吗! 11.3.2 设定 gdm 的 XDMCP 服务 既然是所谓的 Xdmcp 协议,那么是否意味着与 X display manager 有关呢?没错啦! Xdmcp 协议是由 DM 程序所提供的。 我们的 CentOS 预设的 DM 为 GNOME 这个计划所提供的 gdm 哩!因此,你想要启动 Xdmcp 服务,那就得要针对 gdm 这个程序来设定啰。 这个 gdm 的设定数据都放置在 /etc/gdm/ 目录下,而我们所要修改的配置文件其实仅是一个 /etc/gdm/custom.conf (注4) 档案而已。
不过,因为我们安装的基准是『Basic server』,所以很多图形接口软件并没有被安装起来。因此,在实作 Xdmcp 之前,我们得先安装图形接口才行喔!使用 yum groupinstall 来安装吧!
上面进行完毕后,现在才能开始搞定 custom.conf 啦!来试玩看看!
上述的动作鸟哥是在 runlevel 3 底下启动的,如果你是在 runlevel 5 底下时,因此你也可以利用『 init 3 && init 5 』来重新启动图形接口。但如果你是在 runlevel 3 底下并且不希望变更成为 runlevel 5 呢?那又该如何启动 port 177 啊?如果是这样的话,那么你可以这样启动 xdmcp 啦:
现在你知道如何在不同的 runlevel 启动 xdmcp 了吧?如果是 runlevel 5 ,因为在 /etc/inittab 就已经有自动启动 gdm 了, 所以你只要顺利启动 runlevel 5 即可。但如果你是在 runlevel 3 的话,因为这样 gdm 就不会被系统的启动流程启动, 那你只好自己在 /etc/rc.d/rc.local 里面指定启动他啰!这样了解呼?不过,既然你都要使用 xdmcp 了,所以建议您直接启动在 runlevel 5 即可!接下来,你得要开放客户端对你的 port 177 联机才行! 请自行修改你的防火墙规则,开放 udp port 177 吧!鸟哥这里假设你使用鸟哥的防火墙脚本,那你这样作就好了:
11.3.3 用户系统为 Linux 的登入方式 由于 Linux 本身的窗口就是由 X server 提供来的,因此使用 Linux 登入远程的图形服务器是很简单的啦!
但是因为启动 X 的方式不同而已数种启动方式,底下我们就讲讲两个常见的启动方式:
如果你的客户端已经在 runlevel 5 了,因此其实你已经有一个 X 窗口的环境,这个环境的显示终端机就称为『 :0 』。 在 CentOS 6.x 的环境中,如果原本就是 runlevel 5 的环境,那么这个图形接口的 :0 是在 tty1 终端机啦!如果是由 runlevel 3 启动图形接口,那就是在 tty7 喔!由于已经有一个 X 了,因此你必须要在另外的终端机启动另一个 X 才行!那个新的 X 就称为 :1 接口,其实通常就在 tty7 或 tty8 啦!但因为 X server 要接受 X client 必须要有授权才行, 所以你得先在窗口接口开放接受来自服务器的 X client 数据。 此外,虽然你在客户端是以主动的方式连接到服务器的 udp port 177 ,但是服务器的 X client 却会主动的连接到你客户端的 X server,因此,你必须要开放来自服务器端主动对你的 TCP port 6001 (因为是 :1 界面) 的防火墙联机才行喔!那就来实做看看:
如果一切顺利的话,那么你在 clientlinux.centos.vbird 就会看到如下的画面(注意主机名): 图 11.3-2、在客户端连上 Xdmcp 成功的画面 在上图中输入正确的账号与密码之后,你在 tty8 (:1) 就会有个窗口接口啰!那你如果想要回到本机的窗口接口,
就回到 tty7 (:0) 即可切换成功!(在 runlevel 5 时,:0 在 tty1 ,而 :1 在 tty7 喔!)那想要关闭 tty8
该如何是好?你不能够在 tty8 注销啦,因为注销后,系统会重新开一个等待登入的画面,你还是没办法关闭的。你得要回到刚刚启动
X 的 tty1 然后按下 [ctrl]-c 中断联机即可!
如果常常在 tty7, tty8 切换来去的话,偶而会忘记到底在哪个界面了,尤其是当你的桌面都一模一样时, 那就更难判断了。有没有办法直接在 tty7 启动另一个窗口来加载远程服务器的图形接口呢?可以的,那就透过 Xnest 吧! 这指令需要在 X 的环境下使用喔!它的简单用法如下:
如果一切顺利的话,那你就会在 tty7 的本机 X 环境下看到如下的画面 (底下的画面是已经登入的情况!) 图 11.3-3、在客户端的 X 顺利连上 Xdmcp 的画面 一开始的图示会与图 11.3-2 一样,就是出现输入账密的画面,如果输入正确的帐密后, 就会出现上述的图示了。仔细看一下画面当中的终端机标头,你就会发现确实是两部主机的桌面呢!这样有没有更棒棒? ^_^! 要关闭这个 X 就简单多了!直接按下关闭,或者是中断那个 Xnest 的程序即可。 11.3.4 用户系统为 Windows 的登入方式: Xming 由于 Windows 本身并没有提供预设的 X server ,因此我们得要自行安装 X server 在 Windows 上面才行。 目前常见的 X server 有底下这几个:
其中 X-Win32 与 Exceed 都属于商业软件,而 Xming 则属于轻量级的自由软件,说是轻量级并非说它不好, 而是因为 Xming 的档案真的很小,而该有的功能都有了,所以算是很不赖的一个软件喔!因此底下鸟哥是以 Xming (注5) 作范例来介绍的。
其实从上面的设定当中你会发现, XDMCP 不论是在 Server 还是 Client 的设定上面都很简单!但是有时候你就是会发现, 明明所有的动作都做完了,但是就是没有办法连上 Xdmcp 服务器!最容易发生错误的其实就是防火墙啦!因为虽然我们客户端启动 X server 后,会主动联机到服务器端的 Xdmcp (port 177),但是,接下来却是服务器主动联机到我们客户端的 X server (可能是 port 6000~6010)。 因此,如果你只是设定了服务器的防火墙而已,那么很可能出现问题的应该就是客户端的防火墙忘记打开提供服务器主动联机的规则啰! 这点是必须要跟大家说明的喔! |
|||||||||||||||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室