前言:
这本来不是一个什么困难的问题,并且在FreeBSD HandBook Chapter 5上已经有详细的解释了,但是总有人搞不清楚,网上还有很多误人子弟的文章胡乱地解释,我也不能总是回答同样的问题,于是我把这个问题详细地写清楚,这个wiki页面不是为了替代FreeBSD HandBook Chapter 5,只是为了明确一些概念,帮助新手理清头绪迅速配置好桌面环境。
注:
- X或者说桌面环境对于FreeBSD、OpenBSD或者是Linux这些Unix-Like系统来说只是一个软件,并不是系统必须的基本组件,你完全可以不安装它;
- 本wiki页面内容适用于FreeBSD、OpenBSD以及各个Linux发行版,例如:Debian、Gentoo;
- 本wiki页面内容适合于FreeBSD的6.x、7.x或者是stable current分支(各个分支共享同一个ports树,所以如果你使用ports安装X的组件的话,各个分支的X的版本是一样的);
- 本wiki页面内容适用于各个Linux发行版的不同版本或者分支(不同系统在软件的安装命令以及具体软件包的命名上可能存在某些差异),因为各个系统都是使用Xorg作为自己的X-server,不同版本的Xorg可能会有性能以及功能上的少许变化,但是其配置文件xorg.conf的语法却没有改变。
基本概念:
什么是X:
严格的说X是一个标准,也就Unix系统上图形界面的基本模式,顺便说一句,最早实现图形界面的是在Unix上,不是在Windows上。这个标准指定了一个Server/Client的基本模型来实现图形界面功能,具体的细节不需要太过深入。通常情况下,谈到X时就是指的图形界面。X的设计体现了Unix的哲学,也就是模块化,各个模块之间遵守相同的标准,所以运行X需要很多组件,包括x-server、s-client、window manager、x display manager,下面我们分别介绍每一个组件的具体含义。
什么是X-server:
在一般的server/client模型中,server总是代表性能比较高,处理很多数据的那个机器,比如你登录一个ftp站点或者是某个网站的时候,server指的是对方的系统。但是在X的server/client模型中恰好相反,这里面server仅仅负责鼠标、键盘、显卡、显示器这些输入输出部件,而x-client却是负责处理数据的。到目前为止,我们在FreeBSD系统里面使用x-server是:xorg-server。除此之外还有其他的商业的x-server,但是目前在FreeBSD上以及Linux这些自由的开源系统上使用的x-server主要是由xorg提供的xorg-server。所以,如果你想在自己的FreeBSD运行X,那么x-server是必须的。这就是为什么在安装图形界面的时候一定要先安装xorg或者是xorg-minimal,这两个port都是meta port,就是说这个port本身是一个空的port,但是这个port有很多依赖关系,这样可以帮助使用者迅速地安装软件。
由于x-server负责鼠标、键盘、显卡、显示器这些输入输出部件,你必须在安装好以后,告诉x-server你当前系统使用的是什么样的鼠标、键盘、显卡、显示器。由于当前硬件厂商众多,所以不要指望x-server自动识别出所有需要的参数,通常你需要编辑一下/etc/X11/xorg.conf这个文件来提示它一下。现在你应该知道为什么论坛上总有人在买了USB鼠标以后相互讨论如何修改xorg.conf了。
什么是X-Client:
X-server负责管理鼠标、键盘、显卡、显示器,而X-client则负责处理程序的运行。比如说,我桌面上有一个gvim的图标,我现在移动鼠标点击了一下gvim的图标,那么X-server会告诉X-client:“用户移动了鼠标到什么位置,然后单击了一下鼠标的左键”。X-client收到这个信息以后会对这个行为做出反应,经过一番思考,它发现,我这个行为是要打开一个叫gvim的程序,于是X-client会运行gvim,然后告诉X-server:“你在显示器上给用户画出一个像gvim的东西来”。然后,我就在我的屏幕上很高兴地看见了我可爱的gvim编辑器了,当然还有伟大的DejaVu Sans Mono等宽字体。
什么是窗口管理器:
你通常会运行几个程序,比如我现在在运行gvim、epiphany、gnome-terminal,这些程序在屏幕上都放在什么位置呢?这些程序在屏幕上看起来是什么样子的呢?窗口上需要有最大化、最小化图标吗?这些都是由窗口管理器(Window Manager)来负责的。
窗口管理器有很多种,比如fvwm(定制能力很强)、metacity(gnome项目提供的,目前gnome desktop environment所使用的)。
什么是X应用程序:
这个概念最好理解了,简单的说就是你需要运行的图形界面的程序,比如gvim编辑器、epiphany网页浏览器,eog图片浏览器。
什么是XDM:
XDM的全称是X Display Manager,这个程序允许你以图形界面的方式来登录系统。常见的XDM有xdm(很土很难看)、gdm(由gnome项目提供)、kdm(由kde项目提供)。对于运行X来说,这个组件不是必须的,也就是说:
- 你可以安装它(比如安装gdm)并设定gdm在开机的时候运行(通过rc.conf),然后在系统启动的时候,系统会直接运行gdm,然后你就可以在一个很漂亮、很友好的图形界面的登录环境里面输入用户名、密码并选择语言(严格地说是选择locale环境变量);
- 你可以不安装它,当系统开机以后,你会看到提示符,这时你输入用户名、密码,然后当你希望进入图形界面的时候运行startx命令,这个命令会读取你home目录下的.xinitrc文件中的内容,来运行X。
