关闭

xorg.conf 配置详解

标签: 服务器ubuntuinteger扩展freebsdstring
1065人阅读 评论(0) 收藏 举报
分类:

概要
xorg.conf 是 Xorg X server(FreeX86 的一个主流分支)的配置文件。普通用户启动 X 服务时,它会从下列位置查找配置文件:
    /etc/X11/<cmdline>
    /usr/etc/X11/<cmdline>
    /etc/X11/$XORGCONFIG
    /usr/etc/X11/$XORGCONFIG
    /etc/X11/xorg.conf-4
    /etc/X11/xorg.conf
    /etc/xorg.conf
    /usr/etc/X11/xorg.conf.<hostname>
    /usr/etc/X11/xorg.conf-4
    /usr/etc/X11/xorg.conf
    /usr/lib/X11/xorg.conf.<hostname>
    /usr/lib/X11/xorg.conf-4
    /usr/lib/X11/xorg.conf
其中<cmdline>为“-config“命 令行选项指定的相对路径(不允许“..”),$XORGCONFIG 为环境变量指定的相对路径,<hostname>为 gethostname()报告(返回)的主机名。而当根用户(root)启动 X 服务时,还可以用 <cmdline> 和 $XORGCONFIG 指定配置文件的绝对路径。

配置文件由若干相互独立的“节”(Section)组成,其格式如下:
Section "SectionName"
    SectionEntry
    ......
EndSection
(这里虽然使用了大写/小写,但是 X 服务器好像并不在乎这些)

文件中可以设定的“节”包括以下几种:
    节名           描述
    Files          文件路径
    ServerFlags    服务器标志(选项)
    Module         动态加载的模块
    Extensions     扩展(Extension enabling)
    InputDevice    输入设备
    Device         图形设备描述
    VideoAdaptor   Xv 视频适配器描述(Xv video adaptor description)
    Monitor        显示器描述
    Modes          视频模式描述
    Screen         屏幕配置
    ServerLayout   布局
    DRI            DRI 特殊配置
    Vendor         制造商特殊配置
另外,为兼容以前的老配置文件,X 服务器还接受 Keyboard/Pointer 这样的“节名”。不过,我们现在应该使用 InputDevice 代替原来的写法。而XInput 节则已经废弃,不再接受。

ServerLayout 位于配置的最高级别。它把输入/输出设备捆绑到一起。输入设备在 InputDevice 节中描述,而输出设备通常包括多个独立的组件(比如显卡和显示器)。这些组件在 Screen 节中绑定到一起,并在 ServerLayout 节 中引用。每一个 Screen 节绑定一对显卡和显示器,而Device 节和 Monitor 节分别描述显卡和显示器。显然,你可以在配置文件中指定多个显卡和显示器。

配置文件对大小写不敏感,而且会忽略下划线“_”。大部分的字符串同样对大小写不敏感,并且对空白字符和下划线“_“也不敏感。

每一个配置项通常会占用一行。它包括一个关键字(keyword),并可能跟随一到多个参数。参数的数量和类型决定于关键字。参数的类型有:
    Integer     十进制、十六进制或八进制整数
    Real        浮点数
    String      双引号括起来的字符串
(就像 C 语言那样,十六进制要有“0x”前缀,八进制则是“0”)

Option 是一个特殊的关键字,它像服务器的各种组件提供自由格式(free-form)的数据。Option 关键字有一到两个字符串参数,第一个是选项名,第二个时选项值。常用的选项值类型包括:
    Integer     十进制、十六进制或八进制整数
    Real        浮点数
    String      字符串
    Boolean     布尔值
    Frequency   频率值
(别忘了,这些选项值类型都是字符串表示的,需要用双引号括起来)
对于布尔值有多种表示方法。“1”、“on“、”true“、”yes“都表示“真”,“0”、“off”、“false”、“no”都表示“假”。需要 注意的是,如果选项名有“No”前缀,则表示否定。
而频率值,包括一个浮点数以及可选的频率单位:Hz、k、kHz、M、MHz。如果省略频率单位,则会根据数据值和预期的取值范围决定其单位。推荐的做法 是,在指定频率值的时候总是声明其单位,这样可以避免错误的发生。而老R的经验是,在有些时候,并不是所有的频率单位都会被接受,在设置的时候需要注意这 一点。

(同一个设置项可能存在于服务器的默认设置、xorg.conf 配置文件、命令行等各处。一般来说,如果各处的设置存在矛盾,则其优先权遵从:命令行>配置文件>默认值。而对于一些设置项,如路径、加载模块等,则会叠 加各处的设置。)
FILES 节
Files 节为服务器指定一些路径。这些路径同样可以在命令行中指定。本节中可以指定 FontPath、ModulePath(老R在一些配置文件中还见到过RgbPath,显然现在已经废弃了)。一般情况下,Files 节没有必要进行设置,除非你需要指定一些特殊的路径。不过这些特殊的路径同样可以用链接解决。

FontPath "path"
“path”为逗号分隔的字体路径元素,Xorg 服务器将根据这些路径查找字体数据库。可以同时声明多个字体路径项。字体路径元素可以是绝对路径,编目目录(catalogue directories,老R管它叫编目目录不知是否恰当)或字体服务器标识符。

编目目录在目录名前使用编目前缀,该目录随后被写入实际字体目录的符号链接。其符号链接名具有一定的格式(语法):
    <identifier>:[attribute]:pri=<priority>
<identifier>是字母数字组成的标识符,[attribute]将 被传送到底层的 FPE(老R比较疑惑这个FPE是什么东西,在X.org/wiki上面也没有找到。或许是“字体路径引擎”?但肯定不是那个游戏修改器),<priority>优先级。比如:
    75dpi:unscaled:pri=20 -> /usr/share/X11/fonts/75dpi
    gscript:pri=60 -> /usr/share/fonts/default/ghostscript
    misc:unscaled:pri=10 -> /usr/share/X11/fonts/misc

字体服务器标识符:
    <trans>/<hostname>:<port-number>
<trans>为连接类型(tansport type),如 unix 为 UNIX 域套接字(UNIX-domain socket),tcp 为 TCP/IP 连接。<hostname> 为运行字符服务器的主机名,<port-number> 服务器监听的端口号,通常为 7100。

如果配置文件中没有指定该项,服务器将使用编译进的缺省设置。手册页中推荐如下设置:
    /usr/share/X11/fonts/local/
    /usr/share/X11/fonts/misc/
    /usr/share/X11/fonts/75dpi/:unscaled
    /usr/share/X11/fonts/100dpi/:unscaled
    /usr/share/X11/fonts/Type1/
    /usr/share/X11/fonts/75dpi/
    /usr/share/X11/fonts/100dpi/
(老R推荐的是“不设置”,起码在 Ubuntu 中缺省设置已经工作的很好了。当然如果有兴趣去研究它则另当别论。)

ModulePath "path"
Xorg 服务器可(动态)加载模块的查找路径。和字体路径一样,都是用逗号分隔的目录列表,径同样也可以指定若干查找路径。服务器按指定的顺序查找可加载模块。
SERVERFLAGS 节
对大部分用户来说,Files节不常用,但是老R相信ServerFlags节会有你感兴趣的选项。ServerFlags 节的所有项均为 Option 项,用来设置 Xorg 服务器的一些全局选项。本节指定的选项可能被ServerLayout节中的选项所覆盖(这是通常的做法,“一般的、普遍的”通常会被“特定的、针对性 的”所覆盖)。

本节允许的选项包括:
Option "DefaultServerLayout" "layout-id"      # 缺省布局
Option "NoTrapSignals"       "boolean"        # (一般用于调试)
Option "DontVTSwitch"        "boolean"        # 禁止
切 换到控制台(Ctrl+Alt+Fn 按键序列)
Option "DontZap"             "boolean"        # 禁止“终止服务”动作(Ctrl+Alt+Backspace)
Option "DontZoom"            "boolean"        # 禁止缩放(Ctrl+Alt+小键盘+/-)
Option "DisableVidModeExtension"   "boolean"  # 禁止视频模式扩展
Option "AllowNonLocalXvidtune"     "boolean"  # 允许其他主机的 xvidtune 客户连接
Option "AllowMouseOpenFail"  "boolean"        # 允许无鼠标启动
Option "VTSysReq"            "boolean"
        # 允许 System V 风格的控制台切换序列 Alt+SysReq Fn
Option "XkbDisable"          "boolean"        # 禁止 XKEYBOARD 扩展
Option "BlankTime"           "time"           # (用于屏幕保护)*
Option "StandyTime"          "time"           # (用于DPMS待机模式)*
Option "SuspendTime"         "time"           # (用于DPMS挂起模式)*
Option "OffTime"             "time"           # (用于DPMS关机模式)*
Option "Pixmap"              "bpp"            # 设置24位像素映射(pixmap)模式,取值为24或32
Option "PC98"                "boolean"        # (日本的PC98)
Option "NoPM"                "boolean"        # 无电源管理
Option "Xinerama"            "boolean"        # XINERAMA 扩展
Option "HandleSpecialKeys"   "when"           # 何时处理特殊(组合)键,取值为:Always, Never, WhenNeeded
Option "AIGLX"               "boolean"        # 使用AIGLX(OpenGL桌面加速)
Option "GlxVisuals"          "boolean"        # GLXFBConfigs 子集,取值为:typical, minimal, all
Option "UseDefaultFontPath"  "boolean"
        # 使用缺省字体路径
Option "IgnoreABI"           "boolean"        # 忽略ABI(兼容性相关)
Option "AllowEmptyInput"     "boolean"        # 是否使用标准的键盘鼠标驱动
Option "AutoAddDevices"      "boolean"        # 自动添加设备 
Option "AutoEnableDevices"   "boolean"        # 自动使用(enabled)设备
Option "Log"                 "string"         # Log 的刷新/同步方式,取值为:flush, sync 
* 关于 DPMS 的几项还可以用命令 xset(1) 来设置。

(敲了这么一大串,老R累坏了,也不知道敲错了没有)
这里老R只是简要的介绍了各选项的含义,更详细的内容请查看手册页。
需要注意的是,手册页中关于默认值的说明与 Ubuntu 中的实际情况有所不同,老R也无法一一确认,故在此没有说明缺省值。

--------
补充说明:
在某些类似BSD风格(用户按需要自行配置)的系统中,如FreeBSD、ArchLinux,Xorg默认支持输入设备热插拔功能,而OS可能并没有默认支持。此时如果启动X会出现键盘、鼠标没有反应,系统被锁死的现象。解决的办法,一是配置OS启动HAL(硬件抽象层)以支持X的热插拔功能。另一种办法是关闭X的热插拔支持,即关掉“AutoAddDevices"项:
Option    "AutoAddDevices"    "false"
MODULE 节
Module 节指定服务器加载哪些扩展模块和字体格栅模块。大部分其他类型的模块由其他机制自动加载。当 Xorg 服务器以静态方式构建时,将忽略此节。

本节中可以指定加载/禁用某些模块:
    Load    "ModuleName"
    Disable "ModuleName"
其中 ModuleName 为标准的模块名而不是模块文件名。标准的模块名是大小写敏感的,不包括“lib”前缀也不包括“.a”、“.o”、“.so”后缀。

本节中还可以使用“SubSection”格式指定加载模块,并包含一些选项(在模块加载时传送给它们)。例如:
    SubSection "extmod"
        Option "omit Xfree86-DGA"
        ......
    EndSubSection
其中的“extmod”是模块名,“omit XFree86-DGA”则是传递给模块的选项,表示禁用 XFree86-DGA

服务器从 Files 一节中的(各个) ModulePath 项指定的目录(见:xorg.conf 详解(2):Files Section) ,及其“drivers”、“extensions”、“fonts”、“internal”等各个子目录中查找将要加载的模块。

手册页告诉你可以试着查看 /usr/lib/modules/fonts 和 /usr/lib/modules/extensions 目录,看看有哪些字体和扩展模块可用。但在老R的 Ubuntu 中,这个路径应该改为 /usr/lib/xorg/modules/*(这一点让老R有点不爽,文档和实际情况不符是最让人头痛滴)。

extmod”、“dbe”、“glx”和“dri”(老R的 Ubuntu 中还包括“dri2”和“record”)模块会被自动加载。如果你要禁用一些模块,建议你至少应该保留“extmod”模块,很常用,也很有用。
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5457次
    • 积分:86
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论
  • 多重继承的优缺点

    ohappytime: 我觉得优点里面的简单、易用只是针对首次开发而言,对于代码维护的人看起来就复杂了,所以不建议使用多重继...