23.2 XServer配置文件解析与设置

从前面的说明来看,我们知道一个 X 窗口系统能不能成功启动,其实与 X Server 有很大的关系的。因为 X Server 负责的是整个画面的描绘,所以没有成功启动 X Server 的话,即使有启动 X Client 也无法将图样显示出来啊。所以,下面我们就针对 X Server 的配置文件来做个简单的说明,好让大家可以成功的启动 X Window System 啊。

基本上, X Server 管理的是显卡、屏幕分辨率、鼠标按键对应等等,尤其是显卡芯片的认识,真是重要啊。 此外,还有显示的字体也是 X Server 管理的一环。基本上,X server 的配置文件都是默认放置在 /etc/X11 目录下,而相关的显示模块或上面提到的总总模块,则主要放置在 /usr/lib64/xorg/modules 下面。比较重要的是字体文件与芯片组,她们主要放置在:

  • 提供的屏幕字体: /usr/share/X11/fonts/

  • 显卡的芯片组: /usr/lib64/xorg/modules/drivers/

在 CentOS 下面,这些都要通过一个统一的配置文件来规范,那就是 X server 的配置文件啦。这个配置文件的文件名就是 /etc/X11/xorg.conf 喔!

23.2.1 解析 xorg.conf 设置

如同前几个小节谈到的,在 Xorg 基金会里面的 X11 版本为 X11R7.N ,那如果你想要知道到底你用的 X Server 版本是第几版,可以使用 X 指令来检查喔!(你必须以 root 的身分执行下列指令)

[root@study ~]# X -version
X.Org X Server 1.15.0
Release Date: 2013-12-27
X Protocol Version 11, Revision 0
Build Operating System:  2.6.32-220.17.1.el6.x86_64
Current Operating System: Linux study.centos.vbird 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 
  6 11:36:42 UTC 2015 x86_64
Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-229.el7.x86_64 root=/dev/mapper/centos-
  root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet
Build Date: 10 April 2015  11:44:42AM
Build ID: xorg-x11-server 1.15.0-33.el7_1
Current version of pixman: 0.32.4
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.

由上面的几个关键字我们可以知道,目前鸟哥的这部测试机使用的 X server 是 Xorg 计划所提供的 X11 版, 不过看起来 Xorg 已经将所谓的 X11R7 那个 R7 的版次移除,使用的是 Xorg 自己的版次了!所以是 Xorg 1.15.0 版本! 此外,若有问题则可以到 http://wiki.x.orgarrow-up-right 去查询~因为是 Xorg 这个 X server ,因此我们的配置文件文件名为 /etc/X11/xorg.conf 这一个哩。所以,理解这个文件的内容对于 X server 的功能来说,是很重要的。

比较需要留意的是,从 CentOS 6 以后 (当然包含 CentOS 7),X server 在每次启动的时候都会自行侦测系统上面的显示芯片、屏幕类型等等, 然后自行搭配最优化的驱动程序载入。因此,这个 /etc/X11/xorg.conf 已经不再被需要了。不过,如果你不喜欢 X 系统自行侦测的设置值, 那也可以自行创建 xorg.conf 就是了。

此外,如果你只想要加入或者是修改部份的设置,并不是每个元件都要自行设置的话,那么可以在 /etc/X11/xorg.conf.d/ 这个目录下创建文件名为 .conf 的文件, 将你需要的额外项目加进去即可喔!那就不会每个设置都以你的 xorg.conf 为主了!了解乎?

Tips 那我怎么知道系统用的是哪一个设置呢?可以参考 /var/log/Xorg.0.log 的内容,该文件前几行会告诉你使用的设置文件是来自于哪里的喔!

注意一下,在修改这个文件之前,务必将这个文件给它备份下来,免的改错了什么东西导致连 X server 都无法启动的问题啊。这个文件的内容是分成数个段落的,每个段落以 Section 开始,以 EndSection 结束, 里面含有该 Section (段落) 的相关设置值,例如:

至于常见的 section name 主要有:

  1. Module: 被载入到 X Server 当中的模块 (某些功能的驱动程序);

  2. InputDevice: 包括输入的 1. 键盘的格式 2. 鼠标的格式,以及其他相关输入设备;

  3. Files: 设置字体所在的目录位置等;

  4. Monitor: 监视器的格式, 主要是设置水平、垂直的更新频率,与硬件有关;

  5. Device: 这个重要,就是显卡芯片组的相关设置了;

  6. Screen: 这个是在屏幕上显示的相关分辨率与色彩深度的设置项目,与显示的行为有关;

  7. ServerLayout: 上述的每个项目都可以重复设置,这里则是此一 X server 要取用的哪个项目值的设置啰。

前面说了,xorg.conf 这个文件已经不存在,那我们怎么学习呢?没关系,Xorg 有提供一个简单的方式可以让我们来重建这个 xorg.conf 文件! 同时,这可能也是 X 自行侦测 GPU 所产生的最优化设置喔!怎么处理呢?假设你是在 multi-user.target 的环境下,那就可以这样作来产生 xorg.conf 喔!

这样就在你的 root 主文件夹产生一个新的 xorg.conf.new 啰!好了,直接来看看这个文件的内容吧!这个文件默认的情况是取消很多设置值的, 所以你的配置文件可能不会看到这么多的设置项目。不要紧的,后续的章节会交代如何设置这些项目的喔!

上面设置完毕之后,就等于将整个 X Server 设置妥当了,很简单吧。如果你想要更新其他的例如显示芯片的模块的话,就得要去硬件开发商的网站下载原始文件来编译才行。 设置完毕之后,你就可以启动 X Server 试看看啰。然后,请将 xorg.conf.new 更名成类似 00-vbird.conf 之类的文件名, 再将该文件移动到 /etc/X11/xorg.conf.d/ 里面去,这样就 OK 了!

当然,你也可以利用 systemctl isolate graphical.target 这个指令直接切换到图形接口的登陆来试看看啰。

Tips 经由讨论区网友的说明,如果你发现明明有捉到显卡驱动程序却老是无法顺利启动 X 的话,可以尝试去官网取得驱动程序来安装, 也能够将“Device”阶段的“Driver”修改成默认的“Driver "vesa"”,使用该驱动程序来暂时启动 X 内的显卡喔!

23.2.2 字体管理

我们 Xorg 所使用的字体大部分都是放置于下面的目录中:

  • /usr/share/X11/fonts/

  • /usr/share/fonts/

不过 Xorg 默认会载入的字体则是记录于 /etc/X11/fontpath.d/ 目录中,使用链接文件的模式来进行链接的动作而已。 你应该还记得 xorg.conf 里面有个“ Flies ”的设置项目吧?该项目里面就有指定到“ FontPath "catalogue:/etc/X11/fontpath.d" ” 对吧!也就是说,我们默认的 Xorg 使用的字体就是取自于 /etc/X11/fontpath.d 啰!

鸟哥查了一下 CentOS 7 针对中文字体 (chinese) 来说,有楷书与明体,明体默认安装了,不过楷书却没有安装耶~ 那我们能不能安装了楷书之后,将楷书也列为默认的字体之一呢?来瞧一瞧我们怎么作的好了:

如果上述的动作没有问题的话,现在你可以在图形界面下面,通过“应用程序” --> “公用程序” --> “字体检视程序”当中找到一个名为 “AR PL UKai CN, Book”字样的字体,点下去就会看到如下的图示,那就代表该字体已经可以被使用了。不过某些程序可能还得要额外的加工就是了~

安装楷书字体的结果 图23.2.1、安装楷书字体的结果

鸟哥比较好奇的是,这个字体的开发者怎么这么有趣!列出来的示意字体竟然是吃了玻璃会身体头好壮壮~这...会不会教坏小孩啊?呵呵呵呵~

  • 让窗口管理员可以使用额外的字体

如果想要使用额外的字体的话,你可以自行取得某些字体来处理的。鸟哥这边从 Windows 微软正黑体、Times new Romans 两种字体加上粗、斜体等共六个文件来处理字体的安装~ 这边得注明一下是纯粹的测试,测试完毕后文件就给它拿掉了,并没有持续使用喔!并没有想要违法的意思啦~大家参考看看就好了。 那就来看看如何增加字体吧!(假设上述的字体文件是放置在 /root/font 中)

之后在字体检视器里面就会发现有多了“Microsoft JhengHei, Times New Roman”等等的字体可以用啰!

23.2.3 显示器参数微调

有些朋友偶而会这样问:“我的显示器明明还不错,但是屏幕分辨率却永远只能达到 800x600 而已, 这该如何处理?”,屏幕的分辨率应该与显卡相关性不高,而是与显示器的更新频率有关!

所谓的更新频率,指的是在一段时间内屏幕重新绘制画面的速度。举例来说, 60Hz 的更新频率, 指的是每秒钟画面更新 60 次的意思。那么关于显示器的更新频率该如何调整呢? 你得先去找到你的显示器的使用说明书 (或者是网站会有规格介绍),取得最高的更新率后,接下来选择你想要的分辨率, 然后通过这个 gtf 的指令功能来调整:

Tips 基本上,现在新的 Linux distribution 的 X server 大多使用自行侦测方式来处理所有的设置了,因此, 除非你的屏幕特别新或者是特别怪,否则应该不太需要使用到 gtf 的功能啰!

然后重新启动你的 X ,这样就能够选择新的分辨率啰!那如何重新启动 X 呢?两个方法, 一个是“ systemctl isolate multi-user.target; systemctl isolate graphical.target ”从文字模式与图形模式的执行等级去切换,另一个比较简单, 如果原本就是 graphical.target 的话,那么在 X 的画面中按下“ [alt] + [crtl] + [backspace] ”三个组合按键, 就能够重新启动 X 窗口啰!

Last updated