如何在 Linux 下实现设备的配置(下)

窗口系统(XFree86)的配置过程

6.1 显示卡的描述文件介绍(CardDB)

CardDB 是 X 配置程序使用的显示卡数据文件。在对 XFree86 进行配置时,配置程序一般都需要读取其上的内容完成显示卡的配置。它的内容与使用的 XFree86 的版本密切相关。一般而言,它保存的位置是在 /usr/X11R6/lib/X11/ 目录下。现在我们就对 XFree86 4.1.0 的 CardDB 文件进行简单的介绍:

NAME
显示卡的描述名称

CHIPSET
描述显示卡使用的芯片集

SERVER
为了和 3.x 版本的 XFree86 向下兼容,由此字段指定此显示卡在 XFree86 3.x 下的 X 服务器,例如 VGA16,SVGA 等。

DRIVER
描述在 4.x 版本的 XFree86 下显示卡的驱动程序模块。

LINE
设置显示卡特定的选项信息,这样的选项信息出现在 XF86Config 的 Device 节,对应设备的 Option 参数。

SEE
是指此显示卡的配置信息与 SEE 字段所制定的显示卡完全相同,例如

NAME Number Nine GXE64 with S3 Trio64
SEE S3 Trio64 (generic)

表示 Number Nine GXE64 的显示卡配置与 S3 Trio64 (generic) 的配置完全相同。

RAMDAC
RAM 直接存取控制的控制芯片型号

DACSPEED
直接存取控制的速度

CLOCKCHIP
此显示卡的时钟芯片的

NOCLOCKCHIP
此显示卡无时钟芯片

UNSUPPORTED
此类型的显卡,此版本的 XFree86 不能提供支持

COMMENT
注释

例如,对于 RIVA TNT 显卡,XFree86 4.1.0 中的信息如下:

NAME RIVA TNT
CHIPSET RIVATNT
SERVER SVGA
DRIVER nv
NOCLOCKPROBE

6.2 显示器信息检测

显示器的信息在 XFree86 系统中时非常重要的,它对应 XFree86 配置文件的 Monitor 节。在这一节中包含监视器的水平扫描频率范围,垂直扫描频率范围,显示器支持的显示模式等信息。同样的,显示器的自动检测也就是通过程序自动读出显示器的 上述信息。它的正确设置对于 XFree86 能否正常显示起到很重要的作用。

对于显示器的信息检测,要求它必须支持 vbe(VESA 的 BIOS 级扩展)。在显示器支持此扩展时,通过系统实模式下的 BIOS 调用 INT 10H,可以取得显示器的详细信息。

可能需要的 BIOS 子功能调用为:

AH = 0x4F00
获得关于监视器的 VESA 的 BIOS 级扩展信息

AH = 0x4F01
获得监视器支持的特定显示模式

AH = 0x4F02
设置当前的视频模式

AH = 0x4F03
获得当前的视频模式

AH = 0x4F04
保存 / 还原 svga 显示方式

AH = 0x4F15
获得监视器的 EDID 扩展信息

一般的显示器使用上述中断的方式是:先检查显示器是否支持 VESA 的 BIOS 级扩展,如果显示器支持 BIOS 级扩展,就查看显示器支持的显示模式,然后获得显示器的 EDID 扩展信息。在读出的 EDID 扩展信息中,可以查出显示器的垂直回扫频率范围和水平回扫频率范围,也可以计算出显示器的大小,对于一部分显示器还可以从此信息中读出监视器的制造商信 息。

由显示器读出的信息可以设置 XF86Config 的 Monitor 节,对于设置了正确的垂直回扫频率范围和水平回扫频率范围的显示器,X 自动设置为当前显示分辨率下支持的最高扫描频率的显示模式(此显示模式要求有对应的 Modeline)。

但是如果您的显示器不支持 EDID 扩展信息,那么您就只有根据经验来设置显示器的垂直回扫频率范围和水平回扫频率范围。如果设置的范围高于监视器的实际支持范围,那么显示器会出现黑屏的现象。

对于编程实现,如果您要调用上述 bios 中断,那么必须使用 lrmi 这个实模式接口,并设置正确的寄存器信息,完成系统调用。具体的检测显示器信息的例子,您可以参考 Xconfigurator 下 ddcprobe 的源程序,也可以参考 Mandrake 系统下的 ddcxinfos 命令的源程序。

6.3 窗口系统的配置过程

要正确的在 Linux 下配置窗口系统,实际上就是生成正确的 XFree86 配置文件,这个文件一般保存在 /etc/X11/ 下,在 X 版本是 3.x 时,它的文件名为 XF86Config,在 X 版本是 4.x 时,它的文件名一般为 XF86Config-4。在现在的发行版本中,处于硬件兼容性的考虑,他们一般都让这两个版本的 XFree86 包共存。因此,您也可以在 /etc/X11 目录下,发现这两个文件同时存在,这时使用那个文件就要看系统的 X 服务器的版本了。

无论是那个版本的 XF86Config 文件都是由许多节(Section)构成的,但是这些节描述的内容主要包括:键盘、鼠标、显示器、显示卡、字体(颜色)等。

在 X 版本是 3.x 时,键盘和鼠标的描述分别对应 Keyboard 和 Pointer 节。而在 X 版本是 4.x 时,键盘和鼠标的描述都对应 InputDevice 节 ,只是对应不同的驱动模块,键盘的驱动模块是 keyboard,鼠标的驱动模块是 mouse。配置这两节所需要的信息可以从 /etc/sysconfig/keyboard 和 /etc/sysconfig/mouse 中获得,它们的详细内容,本文的前面章节已作了介绍。

配置显示器实际上是生成 XF86Config 文件的 Monitor 节 , 需要配置的信息一般包括:水平扫描频率范围、垂直扫描频率范围、监视器支持的显示模式、制造商信息。对于支持 vbe 和 edid 扩展的显示器,可以根据从显示器上读出的信息设置对应字段的值。但是如果显示器不支持上述扩展,则显示卡的设置必须由用户手动完成。如果您在配置 XFree86 时不指定这一节,那么 XFree86 会设置显示模式为 640x480,垂直扫描频率为 60hz 的方式。不同显示模式的扫描频率:

表 6-1

显示分辨率 垂直扫描频率(Hz) 水平扫描频率(kHz)
640x480 60 31.50
640x480 72 36.50
640x480 75 37.50
640x480 85 43.27
800x600 60 37.80
800x600 72 48.00
800x600 85 55.84
800x600 100 64.02
1024x768 60 48.40
1024x768 70 56.50
1024x768 76 62.50
1024x768 85 70.24
1024x768 100 80.21
1280x1024 61 64.20
1280x1024 70 74.59
1280x1024 74 78.85
1280x1024 76 81.13
1280x1024 85 91.15
1280x1024 100 107.16
1600x1200 60 75.00
1600x1200 70 87.50
1600x1200 75 93.75
1600x1200 85 105.77

从上表可以看出,您要设置显示器达到某一分辨率,那么与此相对应,它的扫描频率范围也要包含上表中此分辨率的最低扫描频率。如果您的显示器达不到这个范 围,那么 XWindow 将无法正常工作。如果您设置的扫描频率高于显示器实际的扫描频率范围,由于 XFree86 会寻找对应分辨率下最高扫描频率进行显示,所以此时 XWindow 将极有可能黑屏。

在生成配置脚本时,扫描频率的范围也不是越低越好。设置较低的扫描频率范围对于部分 LCD 显示器就不合适。比如,一部分 LCD 显示器在 800x600 分辨率时,最低支持的垂直扫描频率为 70Hz,那么您这时指定的水平回扫范围一定要包含 48kHz。

在配置完显示器之后,您就需要生成与显示卡对应的描述了。这样的描述信息对应 XF86Config 文件的 Device 节 。 这一节主要描述的显示卡信息包括:显示卡对应的 X 服务器(X 版本在 3.x),对应的 X 设备模块(X 版本为 4.x),显示卡的设备信息(供应商、型号、支持显存存取方式和显存大小等),以及此显示卡支持的设备选项,比如显示卡是否支持硬件加速、是否支持软光标 等。生成窗口系统的配置过程一般是先由 pci 的设备标识(检测过程见)获得显示卡的类型,由此在 XFree86 的配置文件 CardDB(这个文件可在 /usr/X11R6/lib/X11/ 目录下找到)中查得它对应的显示卡描述,由此信息可以设置此节的描述。

字体和调色板信息描述的是字体和调色板所存放的路径,您如果新加入字体时,需要在此加入正确的字体路径。设置字体路径时,如果指定它为 unix:-1,那么就是说您在启动 X 服务器之前,必须首先启动字体服务器 xfs,然后由字体服务器完成字体的访问请求。

在您正确的设置了上述信息之后,您必须将这些信息存放在 Screen 节 中。这一节描述的是完成显示对应的显示卡,显示器,分辨率和缺省深度等信息。

最后,您还必须生成 ServerLayout 节 ,由它描述整个系统所使用的显示卡配置节、监视器配置节、鼠标配置节、键盘配置节等信息。

在生成了 /etc/X11/XF86Config(XF86Config-4)文件后,您就可以测试一下此配置文件是否正确了。例如,对于 XFree86 4.x,生成的配置文件为 /etc/X11/XF86Config.test,测试使用如下命令:

 XFree86 -xf86config /etc/X11/XF86Config.test :9

 

-xf86config /etc/X11/XF86Config.test 表示使用指定的配置文件启动 X 服务器
:9 表示在终端 9 上运行 X 服务器

一般而言,如果是编程实现 X 的配置过程的话,则要以子进程的方式(系统调用 fork)运行上述命令,在成功启动 X 服务器之后,运行一个小的图形化程序,让用户选择配置是否成功。

当然,如果您不能得到显卡的详细的设备参数的话,您也可以使用 probeonly 选项获得显示卡的详细信息。例如,对于 XFree86 4.x 测试使用如下命令:

 XFree86 -probeonly :9

 

对于正常的启动 XFree86 之后,系统输出的信息,您可以通过读取 /var/log/XFree86.x.log 获得。x 是指 XFree86 启动的终端,一般设置此 x 为 0。

在 XF86Config 文件配置之后,您可以使用 startx 启动 XFree86。这个文件会运行您的登录目录下的 .xinitrc 文件来修改 X Window 系统的初始显示状态。这个文件是一个脚本文件。如果这个文件不存在,系统就会默认使用 /usr/X11R6/lib/X11/xinit/xinitrc。同时,startx 还要查找 /etc/X11/X,这个文件是一个链接文件,它指向真正的 X 服务程序,现在这个程序一般都指向 Xwrappers,它是对 X 服务程序的封装。当然,这个文件也可以直接指向 X 服务程序 XFree86。

6.4 支持 FrameBuffer 方式的显卡的配置过程

帧缓冲 (FrameBuffer) 设备是指一种不带视频加速的 X11 支持设备。启动此方式的优点主要有三点:其一是在控制台方式工作时,您能设置更大的控制台显示区,比如设置 1024x768 分辨率大小的控制台;其二是可以在其上启动 XF86_FBDev(对于 XFree86 4.x 下,使用启动模块 fbdev);其三是可以在启动时显示启动徽标(一只胖胖的企鹅)。

在有时显示卡对应的 XFree86 驱动程序不能正常工作时,而您又需要比较丰富的色彩时,启动 FrameBuffer 往往是必须的选择。启动 FrameBuffer 时,XFree86 启动的分辨率由 FrameBuffer 的启动模式决定。

能够启动 FrameBuffer 的设备是 intel 结构下与 vesa 2.0 标准兼容显卡的帧缓冲设备,但是现在不能在支持 vesa 1.2 的显卡上支持 FrameBuffer。这是因为 vesa 1.2 不支持线性帧缓冲(线性帧缓冲意味着 CPU 能访问显卡的每一位)。您可以下载补丁,以使 vesafb 支持 vesa 1.2 的显卡,比如一些较老的 s3 系列显卡。

现在支持 vesa 2.0 的显卡主要有:

 ATI PCI VideoExpression 2MB (max. 1280x1024 @ 8bit) 
ATI PCI All-in-Wonder
Matrox Millennium PCI - BIOS v3.0
Matrox Millennium II PCI - BIOS v1.5
Matrox Millennium II AGP - BIOS v1.4
Matrox Millennium G200 AGP - BIOS v1.3
Matrox Mystique & Mystique 220 PCI - BIOS v1.8
Matrox Mystique G200 AGP - BIOS v1.3
Matrox Productiva G100 AGP - BIOS v1.4
All Riva 128 based cards
Diamond Viper V330 PCI 4MB
Genoa Phantom 3D/S3 ViRGE/DX
Hercules Stingray 128/3D with TV output
Hercules Stingray 128/3D without TV output - needs BIOS upgrade (free from
[email protected])
SiS 6326 PCI/AGP 4MB
STB Lightspeed 128 (Nvida Riva 128 based) PCI
STB Velocity 128 (Nvida Riva 128 based) PCI
Jaton Video-58P ET6000 PCI 2MB-4MB (max. 1600x1200 @ 8bit)
Voodoo2 2000

 

主板集成显示卡:

 Trident Cyber9397 
SiS 5598

 

启动 FrameBuffer 必须设置内核的启动显示模式,设置这个参数是通过内核参数 vga= 实现的。比如,设置启动之后的分辨率为 640x480 下的 16 位色时,传递的参数为 vga=785(十进制数)。您也可以在 /etc/lilo.conf 文件中设置此参数,由 lilo 传递内核参数。

内核支持的 FrameBuffer 显示模式如下表:

表 6-2

显示深度 640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
4 bits 0x302
8 bits 0x300 0x301 0x303 0x305 0x161 0x307 0x31C
15 bits 0x310 0x313 0x316 0x162 0x319 0x31D
16 bits 0x311 0x314 0x317 0x163 0x31A 0x31E
24 bits 0x312 0x315 0x318 0x31B 0x31F
32 bits 0x164

向内核传递 vesa 选项还包括:
video=vesa:option,多个选项之间可用逗号隔开;

可接受的选项:
ypan
使用 vesa 保护模式接口显示,可视屏幕是视频内存的一个窗口。

pro
快速的整屏卷滚,允许回滚。

kontra
部分卷滚,可产生一些闪动效果。

ywrap
比 ypan 速度快,但是兼容性差。

redraw
缺省使用,通过重绘受影响的屏幕区进行重画。

vgapal
缺省使用,标准的 vga 调色版寄存器。

pmipal
使用保护模式的调色版接口。

例如,下面的操作设置 FrameBuffer 设备的显示:

 export FRAMEBUFFER=/dev/fb1 
fbset -fb /dev/fb1 -vyres 600
fbset -fb $FRAMEBUFFER 1024x768@60
startx -- :0 -bpp 16 vt06

 

在虚拟控制终端 6 以 16 为颜色深度启动 X 服务器。

如果您要对帧缓冲设备编程,则可以象使用 /dev/mem 一样,读、写、定位以及 mmap()此设备。不同的是,您此时操作的设备内存位于视频设备内存中。/dev/fb* 设备也支持几种 ioctl 操作,由此可以获得或设置设备信息。颜色表的处理使用 ioctl()。

6.5 XF86Config 文件格式 ( 版本为 4.x 系列 )

6.5.1 文件的基本组成

文件的每节都是由下述的部分组成:

				Section
"SectionName"
SectionEntry

EndSection

SectionName 包括:

 Files                  文件路径名
ServerFlags 服务器标志
Module 动态模块加载
InputDevice 输入设备描述
Device 图形设备描述
VideoAdaptor Xv 视频卡描述
Monitor 监视器描述
Modes 视频模式描述
Screen 屏幕配置
ServerLayout 全面的层叠
DRI DRI 特定的配置
Vendor 供应商特定的配置

出于向下兼容的目的,下列项虽已废除但是配置文件仍能识别。在新的配置文件中,应使用新的 InputDevice 项。
Keyboard 键盘配置
Pointer 指针 / 鼠标配置
老的 XInput 节已经被废除。

ServerLayout 在最高层。它们绑定的输入输出设备会在这一节里使用。输入设备由 InputDevice 描述,输出设备通常有多个独立的组件组成。多个组件组成 Screen 节。每个 Screen 节将图形板和监视器绑定在一起。显示卡由 Device 节描述,监视器由 Monitor 节描述。

6.5.2 Files 节

Files 节指定 X 服务器的字体路径、调色板路径和模块路径。

  • FontPath "path"
    设置字体的查询路径。对于字体服务器的表示采用下述的形式:
     <trans>/<hostname>:<port-number>


    <trans> 指定与字体服务器连接的传输类型(unix,tcp)。
    若此节不指定,则缺省的字体路径是:
     /usr/X11R6/lib/X11/fonts/misc/ 
    /usr/X11R6/lib/X11/fonts/Speedo/
    /usr/X11R6/lib/X11/fonts/Type1/
    /usr/X11R6/lib/X11/fonts/CID/
    /usr/X11R6/lib/X11/fonts/75dpi/
    /usr/X11R6/lib/X11/fonts/100dpi/

    一般而言,推荐的字体路径是:
     /usr/X11R6/lib/X11/fonts/local/ 
    /usr/X11R6/lib/X11/fonts/misc/
    /usr/X11R6/lib/X11/fonts/75dpi/:unscaled
    /usr/X11R6/lib/X11/fonts/100dpi/:unscaled
    /usr/X11R6/lib/X11/fonts/Type1/
    /usr/X11R6/lib/X11/fonts/CID/
    /usr/X11R6/lib/X11/fonts/Speedo/
    /usr/X11R6/lib/X11/fonts/75dpi/
    /usr/X11R6/lib/X11/fonts/100dpi/
  • RGBPath "path"
    rgb 颜色数据库的路径,缺省值为:/usr/X11R6/lib/X11/rgb。
  • ModulePath "path"
    设置可加载的 X 服务器模块的查找路径。

6.5.3 ServerFlags 节

ServerFlags 节用于指定全局的 X 服务器选项,在一般情况下这个部分是空的。

  • Option "NoTrapSignals" "boolean"
    此选项可以阻止 X 服务器捕获未期待的致命信号并干净的退出。X 服务器退出并擦除 core 文件。
  • Option "DontZap" "boolean"
    打开此选项之后,可以禁止 Ctrl+Alt+Backspace 的使用。
  • Option "DontZoom" "boolean"
    打开此选项,可以禁止键 Ctrl+Alt+Keypad-Plus and Ctrl+Alt+Keypad-Minus 来切换视频模式。
  • Option "DisableVidModeExtension" "boolean"
    可以用来禁止 VidMode 扩展。
  • Option "AllowNonLocalXvidtune" "boolean"
    打开允许 xvidtune 客户从其他的主机连接。
  • Option "DisableModInDev" "boolean"
    关闭可以禁止 XFree86-Misc 扩展(可用于动态修改输入设备的设置)。
  • Option "AllowNonLocalModInDev" "boolean"
    允许客户连接另一台主机并且在运行的服务器上改变键盘和鼠标的设置。
  • Option "AllowMouseOpenFail" "boolean"
    即使鼠标设备不能被打开 / 初始化也允许 X 服务器启动。
  • Option "VTInit" "command"
    在服务器所用的 VT 被打开之后运行命令。此命令被传到"/bin/sh -c",以与此 VT 设置的 stdin 和 stdout 相同的真正用户 id 运行。
  • Option "VTSysReq" "boolean"
    使非 SYSV 系统的 VT 能支持 SYSV 风格的切换序列。这意味着在 Alt-SysRq 之后紧接着功能键(Fn)。这阻止 X 服务器捕获用于缺省 VT 的切换序列键(已使客户能够存取它们)。
  • Option "BlankTime" "time"
    设置黑屏屏保的超时时间。time 以分钟为单位,缺省 10 分钟。(xset 进行动态设置)
  • Option "StandbyTime" "time"
  • Option "SuspendTime" "time"
  • Option "OffTime" "time"
    设置进入 DPMS 的等待状态的时间,这仅适于支持 VESA DPMS 兼容方式的监视器。缺省时间是 20 分钟。(屏幕设置有 DPMS 选项设置)
  • Option "Pixmap" "bpp"
    设置象素格式使用深度为 24 的格式。
  • Option "NoPM" "boolean"
    禁止电源管理
  • Option "Xinerama" "boolean"
    使能或禁止 XINERAMA 扩展

6.5.4 Module 节

此节用于指定加载的 X 服务器模块。此节在 X 服务器以静态方式建立时是被忽略的。在此节中加载的模块一般为 X 服务器扩展模块和光栅字体模块。大多数其他模块在需要时自动加载。

 Load "modulename"

 

例如:Type 1 光栅字体模块由下列入口加载:

 Load "type1"
SubSection "modulename"
Option "moduleoption"
EndSubSection

 

6.5.5 Inputdevice 节

这一节写入的信息是从 /etc/sysconfig/mouse 和 /etc/sysconfig/keyboard 中读出的,并且要求两者的设置基本保持一致。一般而言,都存在两种输入设备:其一是核心键盘,另一是核心指针,指针设备主要是指鼠标,但也可以是触摸屏等 其他设备。

 Section "InputDevice"
Identifier "name"
Driver "InputDriver"
options
...
EndSection

 

最常见的 InputDriver 是"keyboard"和"mouse"。
  • Option "CorePointer"
    设备被作为核心指针安装。系统必须要有一个核心指针。
  • Option "CoreKeyboard"
    在这一选项被设置时,设备被作为核心键盘安装。系统中有且只有一个核心键盘。
  • Option "AlwaysCore" "boolean"
  • Option "SendCoreEvents" "boolean"
    上面的两个选项是等价的,它引起输入设备总是报告核心事件。它可以用于附加的指针设备生成核心事件。
  • Option "HistorySize" "number"
    设置移动历史的大小,缺省是 0。

6.5.6 Device 节

这一节描述显示卡对应的信息,它的内容一般从 CardDB 文件中显示卡对应的描述中获得。若此设备节被 Screen 节引用,则认为此节是可用的。

				Section
"Device"
Identifier "name"
Driver "driver"
entries
… …
EndSection
  • BusID "bus-id"
    指定图形卡的总线位置。对于 PCI/AGP 卡,bus-id 串具有 PCI:bus:device:function 的格式。XFree86 支持多个显示卡的同时显示
  • Screen number
  • VideoRam mem
    此选项指定图形卡的 RAM 数量,以 KB 为单位。X 服务程序会自动探测显示卡,所以此字段一般并不需要指定。
  • Chipset "chipset"
    图形卡上的芯片组类型。
  • Ramdac "ramdac-type"
  • DacSpeed speed
  • DacSpeed speed-8 speed-16 speed-24 speed-32
  • ClockChip "clockchip-type"
  • BiosBase baseaddress
  • MemBase baseaddress
  • IOBase baseaddress
  • ChipID id
  • ChipRev rev
  • TextClockFreq freq

6.5.7 Monitor 节

Monitor 节描述显示器的信息,至少有一个显示器节。在显示器支持 vbe 和 edid 扩展时,它的所有信息都可以从显示器上读出。

 Section "Monitor"
Identifier "name"
entries

EndSection

VendorName "vendor"
显示器的制造商

ModelName "model"
监视器的型号

HorizSync horizsync-range
监视器支持的水平刷新频率范围。单位是 kHz,缺省范围是 28-33kHz。

VertRefresh vertrefresh-range 监视器支持的垂直刷新频率范围。单位是 Hz,缺省范围是 43-72Hz。

Gamma gamma-value
Gamma red-gamma green-gamma blue-gamma
用于 gamma 校正,范围从 0.1 到 10.0,缺省值是 1.0。并非所有的驱动程序具有使用此信息的能力。

UseModes "modesection-id"
包括 Modes 节称为 modesection-id 列出的模式集合。这使得这些模式可用于此显示器。

Mode "name"
设置视频模式的详细定义。以 EndMode 关键字结束。

DotClock clock
此模式下的点时钟速率。

HTimings hdisp hsyncstart hsyncend htotal
指定模式的水平定时。

VTimings vdisp vsyncstart vsyncend vtotal
指定模式的垂直定时。

Flags "flag" ...
flag 指定模式的选项设置。"Interlace"设置模式是交错的。"DoubleScan"指定每个扫描行是双次的。"+HSync"和"-HSync"指 定 HSync 信号的极性。"+VSync"和"-VSync"指定 VSync 信号的极性。"Composite"指定复合同步信号。"+CSync"和"-CSync"指定复合同步信号的极性。

HSkew hskew
指定像素数

VScan vscan
每根扫描线绘制的次数。"DoubleScan"加倍这个值。

ModeLine "name" mode-description
Mode 项的紧凑版本。大多数情况下,X 服务程序内含的 VESA 显示模式已经足够,您无需另外指定。

6.5.8 Screen 节

一个配置文件中可以有多个 Screen 节,但至少要有一个。这一节表示了显示卡和监视器联结在一起的信息。当它出现在 ServerLayout 中时,这一节所表示的信息就是激活的,否则系统选择第一个出现的 Screen 节作为活动的。这一节描述了显示分辨率,缺省深度等信息。它必须包含至少一个 Display 子节,这些子节提供了与显示深度相关的信息。

				Section
"Screen"
Identifier "name"
Device "devid"
Monitor "monid"
entries

SubSection "Display"
entries

EndSubSection

EndSection

Device "device-id"
指定这一节所使用的 Device 节,device-id 和 Device 节的 Identifier 相同。

Monitor "monitor-id"
指定这一节所使用的 Monitor 描述

VideoAdaptor "xv-id"
指定可选的 Xv 适配器描述

DefaultDepth depth
指定缺省显示深度。

DefaultFbBpp bpp
指定缺省时使用的帧缓冲深度。

Display 子节

 SubSection "Display"
Depth depth
entries

EndSubSection

Depth depth
指定此节表示的深度。

FbBpp bpp
指定此节表示的帧缓冲格式。

Weight red-weight green-weight blue-weight
指定 16 位显示时,RGB 三种颜色所占的权重

Virtual xdim ydim
设置逻辑虚屏的大小,xdim 一般要求为 8 或 16 的整数倍。注意:有的驱动程序不允许设置虚屏。

ViewPort x0 y0
设置初始显示的左上角。

Modes "mode-name" ...
设置此深度下的视频模式列表。所指定没个模式必须被双引号括起来。这必须和 Monitor 节指定的信息相对应,也就是说,Monitor 节指定的扫描频率范围一定要包含对应的模式。

Visual "visual-name"
visual-name 可用的类型是 StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor

Black red green blue

White red green blue
分别可以指定黑色和白色的颜色

6.5.9 ServerLayout 节

每个配置文件可以有多个 ServerLayout 节,一个 ServerLayout 表示多个 Screen 和一个或多个输入设备(InputDevice 节)的组合。

				Section
"ServerLayout"
Identifier "name"
Screen "screen-id"

InputDevice "idev-id"

options

EndSection

Screen screen-num "screen-id" position-information

screen-id 是强制的,指定引用的 Screen 节
InputDevice "idev-id" "option" ...
idev-id 也是强制的,指定被引用的 InputDevice 节,可以指定多个选项,它们之间由引号隔开,这些选项也是 InputDevice 节支持的,包括:"CorePointer","CoreKeyboard","SendCoreEvents"。

例如,指定两个鼠标:

 Section "ServerLayout"
Identifier "Layout 1"
Screen "MGA 1"
Screen "MGA 2" RightOf "MGA 1"
InputDevice "Keyboard 1" "CoreKeyboard"
InputDevice "Mouse 1" "CorePointer"
InputDevice "Mouse 2" "SendCoreEvents"
Option "BlankTime" "5"
EndSection


关于作者

于辰涛,联想(北京)电脑公司软件工程师。目前主要从事Linux系统安装程序的开发工作,主要研究兴趣是操作系统的工作机制和开发底层系统程序。您可以通过电子邮件 [email protected] 跟他联系。

你可能感兴趣的:(如何在 Linux 下实现设备的配置(下))