歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> 基礎知識 - 在linux下實現設備的配置

基礎知識 - 在linux下實現設備的配置

日期:2017/2/27 10:15:05   编辑:Linux基礎知識
在linux下實現設備的配置
2004-04-23 15:18 pm
來自:Linux文檔
現載:Www.8s8s.coM
地址:無名

linux下設備的配置過程是指在檢測到設備類型、設備當前工作參數等信息之後,使用這些信息來配置設備的驅動程序,工作方式等,(設備的檢測過程參見 《如何在Linux下實現硬件的自動檢測》)。要完成這樣的任務,需要做兩方面的工作:

其一是需要一個詳盡的設備信息文件,這個文件描述了設備標識、與設備標識對應的設備驅動程序、設備配置參數(設備選項)、設備設置的詳細描述、設備配置方法描述、設備對應的別名、設備的主設備號等信息。

現在的linux內核中使用kmod來完成設備模塊的自動加載,它的一般工作機制是:在第一次引用設備模塊時,內核使用系統命令/sbin/modprobe加載這個設備模塊。為了使這種機制正常工作,您首先需要使用depmod -a建立表述模塊之間依賴關系的文件modules.dep,然後在/etc/modules.conf中設置正確的設備別名(關於/etc/modules.conf的詳細介紹參見本文附錄A),如果還需要設置設備對應的參數。舉例來說,在設置網卡時網卡的驅動程序是ne2k-pci,網卡的設備別名是eth0,則在文件/etc/modules.conf中加入別名alias eth0 ne2k-pci,就設置了ne2000兼容的PCI網卡,這樣當有程序要嘗試訪問網絡時,內核會自動加載網卡驅動程序ne2k-pci。

其二是需要根據設備的類型,以及安裝的linux系統版本(不同的Linux發行版對於同一設備的配置腳本文件存在差異),設置設備對應的配置腳本文件。

1 配置鍵盤
1.1 配置鍵盤的設備模塊
對於我們常見的鍵盤一般有三種類型,其一為老式的五針鍵盤,其二為ps/2鍵盤,其三是usb鼠標。對於前兩種鍵盤,一般現在的linux發行版都把它們需要的設備模塊打包入內核,所以無需進行附加的模塊插入操作,鍵盤就能夠正常工作。而對於usb類型的鍵盤,一般而言,要使它正常工作必須先插入對應的設備模塊。

對於usb類型的鍵盤,您若是要通過手動加載模塊的方式使其工作,必須首先插入usb橋接器模塊,然後您還必須插入鍵盤模塊usbkbd.o,以及keybdev.o,這樣usb鍵盤才能夠正常工作。此時,運行的系統命令:
/sbin/modprobe usbkbd
/sbin/modprobe keybdev

對於2.2.x系列的內核若要內核的kmod在需要時自動加載則必須在/etc/modules.conf文件中設置別名usb-interface,它對應您所使用的橋接器模塊。例如,當橋接器的類型為UHCI時,在/etc/modules.conf中加入設備別名:
alias usb-interface usb-uhci

對於2.4.x系列的內核,此設備別名則變為:
alias usb-controller usb-uhci
在設置了此別名之後,系統啟動時會自動進行usb設備檢測。當檢測過程發現連結的設備是系統支持的,那麼系統會自動插入所需的模塊。

1.2 鍵盤配置文件
鍵盤的配置文件/etc/sysconfig/keyboard,它的內容很簡單,可選配置項為KEYTABLE(隨著發行版本的不同這個文件的內容會有所差異,但是這個字段是最重要的)。例如,當設置KEYTABLE = "us"時,表示系統使用美式鍵盤。

然後,為了正確的使用鍵盤上的功能鍵,您還需要調用命令dumpkeys生成文件/etc/sysconfig/console/default.kmap。
/usr/bin/dumpkeys > /etc/sysconfig/console/default.kmap
這個文件描述了鍵盤的鍵盤掃描碼和加入鍵盤修飾之後的鍵盤的相應的鍵盤掃描碼。

同樣,為了鍵盤能在X系統環境下正常工作,您可能也需要在X系統下對鍵盤進行設置,這時您就必須使用xmodmap來設置正確的鍵盤映射。例如,
/usr/X11R6/bin/xmodmap /usr/share/xmodmap/xmodmap.fr
設置您的X系統下的鍵盤為法語鍵盤。

在正確的配置了/etc/sysconfig/keyboard文件之後,X系統的配置程序會根據此文件的信息配置X中關於鍵盤配置的小節。當此文件內容不正確或者是此文件不存在時,X系統是無法啟動和配置的。

2 配置鼠標
2.1 鼠標的基本信息
linux支持四種不同的總線鼠標硬件接口:Inport(Microsoft),Logitech,PS/2和ATI-XL。2.4內核也支持IBM PC110數字化板和Apple Desktop鼠標。

* Inport mice
Inport mice包含大多數舊類型的微軟鼠標。Inport mice通常連接到主板的接口卡上。假如鼠標線連接頭是圓的,有9針,則可能是Inport mice。
* Logitech mice
* PS/2 mice
* ATI combo video/mice
* IBM PC110 palmtop digitizer
* Apple Desktop Mouse
* Hybrid Mice

對於鼠標協議,大多數總線鼠標使用BusMouse協議,一些古老的Logitech鼠標使用MouseSystems協議,而一些更老的微軟鼠標使用Logitech協議。PS/2鼠標總是使用PS/2協議。

不同類型的鼠標對應的設備文件:
接口類型 設備 主設備號 次設備號
Logitech /dev/logibm 10 0
PS/2 /dev/psaux 10 1
Inport /dev/inportbm 10 2
ATI-XL /dev/atibm 10 3
USB mouse /dev/input/mice 13 63
表2-1

創建對應設備的命令:

mknod /dev/logimm c 10 0
mknod /dev/psaux c 10 1
mknod /dev/inportbm c 10 2
mknod /dev/atibm c 10 3
mknod /dev/input/mice c 13 63



在創建了鼠標對應的設備文件之後,因為現在很多程序都使用/dev/mouse作為缺省的鼠標設備文件,所以為了使鼠標正常工作你還要創建一個符號連接/dev/mouse指向真實的鼠標設備文件。例如,對於ps/2鼠標,/dev/mouse指向/dev/psaux,對於usb鼠標,/dev/mouse/指向/dev/input/mice,對於串口鼠標/dev/mouse指向/dev/ttyS0。對於不同的linux發行版本,這些文件可能有所不同,上述介紹主要是基於Redhat發布的配置。

對於現在最常見的三種鼠標:串口鼠標、PS/2鼠標和USB鼠標而言,由於對PS/2鼠標支持一般都打在內核中,所以您也不需要在鼠標工作之前插入設備模塊。但對於其他的兩種鼠標,插入模塊的操作一般是必須的。對於串口鼠標而言,您必須先插入模塊serial.o,
/sbin/modprobe serial

成功的插入模塊之後,如果串口鼠標支持即插即用的串口協議,您可以從串口(/dev/ttyS*)讀到鼠標的類型信息,然後由此信息,完成鼠標的配置文件。對於USB鼠標,為了使其正常工作,您必須先插入模塊usbmouse.o和mousedev.o
/sbin/modprobe usbmouse
/sbin/modprobe mousedev
同樣,為了使鼠標驅動程序能夠自動加載,您也需要在/etc/modules.conf文件中創建usb-interface(usb-controller)別名。

2.2 鼠標配置文件
正確配置鼠標必須生成配置文件/etc/sysconfig/mouse,它包括下列選項:MOUSETYPE、XMOUSETYPE、FULLNAME、XEMU3、DEVICE。該鼠標配置文件也是X配置文件中鼠標配置節的基礎。如果沒有這個文件,很多X配置程序將無法工作。

MOUSETYPE=
配置鼠標的類型,包括ps/2、Busmouse、imps2、netmouse、Microsoft、Logitech、MouseMan、MMHitTab、MouseSystems、pnp、logim、ms3、MMSeries等。

XMOUSETYPE=
X系統下配置的鼠標的類型,包括MouseMan、IntelliMouse、MMSeries、MMHittab、Logitech、MouseMan、Microsoft、MouseSystems、PS/2、BusMouse等。

FULLNAME=
描述鼠標設備的全名。例如,對於普通PS/2鼠標,其全名為PS/2|Standard。

XEMU3=
是否仿真三鍵鼠標,可選參數為yes或no。

DEVICE=
描述鼠標對應的設備文件。例如。對於普通PS/2鼠標,設備文件為psaux。

2.3 鼠標的配置技巧
通過gpm能在命令行方式下使用鼠標。這樣在控制台方式下,就可以使用鼠標進行剪貼等操作了。例如,對於ps/2鼠標,它的配置方式是:
gpm -t ps/2 -m /dev/psaux
如果不指定-m選項,那麼系統會去查找文件/dev/mouse。

鼠標移動不規則可能是因為對鼠標設置了錯誤的協議。如新的Logitech鼠標不使用Logitech協議,而用微軟協議(MouseMan)。如果您的鼠標移動不規則,那您可能首先需要嘗試更換一下MouseType(XMouseType)指定的值。
在X系統下,您如果需要更換鼠標的左、右鍵,那麼可以執行xmodmap -e "pointer = 3 2 1"。

3 網卡配置過程
3.1 配置網卡的設備模塊
按照總線類型來分,現在的以太網卡主要有PCI網卡、ISA網卡和PCMCIA網卡。為使這些網卡正常工作,要在/etc/modules.conf中設置設備別名eth0,以及要傳遞給驅動程序的設備參數。這樣內核在需要使用驅動程序時,會由內核服務kmod使用系統命令modprobe(insmod)自動裝載需要的設備模塊。

在配置網卡時,如果此網卡能夠自動檢測,那麼您只需要通過設備標識,在設備描述信息文件中查得它對應的設備驅動程序,然後再由此信息配置網卡。但是這種方法對於普通isa總線的ne2000兼容網卡就不適合了,因為它們在設計時一般不滿足isapnp規范,因此無法讀出它們的設備信息。但是這種類型的網卡一般使用ne作為設備驅動程序,但是為使其正常工作還須指定io地址和占用的irq。

例如,對於ne2000兼容的isa網卡,比如DE220X,它們的驅動程序為ne。此時要使這種網卡正常工作,需要在/etc/modules.conf文件中加入:
alias eth0 ne
options ne io=0x300 irq=5

一般而言,對於這種網卡,只有指定了正確的I/O地址空間,網卡才能正常工作。這個地址是和此網卡在DOS下使用的端口地址完全相同的。如果端口地址0x300上不能找到網卡,那麼您可以試試0x240等其他地址。

3.2 網卡配置文件
要正確的配置網卡必須生成如下腳本文件,/etc/sysconfig/network,/etc/sysconfig/network-scripts/ifcfg-eth0(對於只有一個網卡時,多個網卡為ifcfg-eth1、ifcfg-eth2以此類推)和/etc/hosts。若您還需要配置域名解析服務,那麼還要生成文件/etc/resolv.conf。

對於/etc/sysconfig/network腳本文件,最常用的可設置項包括NETWORKING,FORWARD_IPV4,HOSTNAME,DOMAINNAME,GATEWAY,GATEWAYDEV。注意:在沒有配置網卡時,也要設置此文件,以使得本機的回環設備(lo)能夠正常工作,此設備是很多linux內部通訊的基礎。

NETWORKING=
表示系統是否使用網絡,一般設置為yes。如果設為no,則不能使用網絡,而且很多系統服務程序將無法啟動。

FORWARD_IPV4=
表示是否支持ipv4的自動轉發。一般在只有一塊網卡時,設置此項為false。

HOSTNAME=
設置本機的主機名,這裡設置的主機名要和/etc/hosts中設置的主機名對應。

DOMAINNAME=
設置本機的域名。

GATEWAY=
設置本機連接的網關的IP地址。例如,網關為10.0.0.2

GATEWAYDEV=
與此網關進行通訊時,所使用的網卡設備別名。例如,當使用了一塊網卡,並連接了網關時,此時的值為eth0。

缺省沒有網卡時的設置為:

NETWORKING="yes"
FORWARD_IPV4="false"
HOSTNAME="localhost.localdomain"
DOMAINNAME="localdomain"



/etc/sysconfig/network-scripts/ifcfg-*,描述網絡接口的信息。每個不同的網絡接口對應不同的文件。例如,ifcfg-eth0對應第一塊網卡eth0可能出現的配置信息。常見的配置選項包括DEVICE、BOOTPROTO、IPADDR、NETMASK、NETWORK、BROADCAST、ONBOOT。

DEVICE=
描述網卡對應的設備別名,例如ifcfg-eth0的文件中它為eth0。

BOOTPROTO=
設置網卡獲得ip地址的方式,可能的選項為static,dhcp或bootp,分別對應靜態指定的ip地址,通過dhcp協議獲得的ip地址,通過bootp協議獲得的ip地址。

IPADDR=
如果設置網卡獲得ip地址的方式為靜態指定,此字段就指定了網卡對應的ip地址。

NETMASK=
網卡對應的網絡掩碼。

NETWORK=
網卡對應的網絡地址。

BROADCAST=
對應的子網廣播地址。

ONBOOT=
系統啟動時是否設置此網絡接口,設置為yes時,系統啟動時激活此設備。

/etc/resolv.conf,系統生成這個文件進行域名解析。否則,安裝過程的反向名查詢無法工作。可能出現的選項:
search domainName指定的域名
nameserver dnsServer 域名服務器,可以指定多個。
/etc/hosts,將主機名列表加入此文件。

4 Modem配置過程
對於Modem的配置過程而言,我們現在一般使用kppp進行撥號,使用這個程序整個撥號過程將變得非常簡單。因此本文就不再介紹使用pppd和chat進行的手工撥號過程了。本文僅介紹一下如何設置基本的設備驅動模塊和底層設備文件的配置。在配置這些文件之後,您就可以使用kppp撥號了。

4.1 外置Modem
在配置外置Modem時,因為大部分的Modem都是通過串口連接到計算機上的,所以在配置Modem之前,您必須插入串口驅動模塊serial.o。在成功插入串口通訊模塊之後,這時只要將設備/dev/modem連接到相應的串口設備上就可以了。例如,在/dev/ttyS0(對應Windows下的COM1)上連接了Modem,則建立連接:
ln -sf /dev/ttyS0 /dev/modem

在這之後,外置的串口modem就可以正常工作了。您可以通過使用minicom向串口發送AT命令,來檢測和配置modem的工作方式。經常使用的命令:
AT命令 命令描述
ATDT(ATDP) 使用語音(脈沖)進行撥號
ATZ 復位調制解調器
ATH 掛起電話
ATI0 返回調制解調器的狀態
ATI1 執行ROM校驗和檢查並返回值
ATI2 驗證ROM校驗,返回OK或ERROR
ATI3 返回ROM部件的軟件版本號。
ATI4 查詢調制解調器的狀態信息,包括波特率、奇偶校驗位長度,字長度、撥號方式、寄存器狀態等信息。
ATI5 查詢調制解調器的ram中的狀態信息。
ATI6 查詢調制解調器的鏈路狀態信息,包括已傳送(接收、丟失)的字符數、傳送的數據塊數目、鏈路連接狀態、最後一次撥號時間等。
ATI7 獲得配置的序言文件,此文件描述的信息包括:modem支持的通訊協議,Fax版本號,EPROM的版本號。
ATI8 獲得連接時間
ATI9 獲得調制解調器的描述名稱
表 4-1

例如,對於一款聯想射雕外置式Modem,在啟動minicom之後,輸入ATI9的返回值為:
(1.0AKY1010ModemAKY101056K DATA FAX VOICE MODEM)FF

4.2 內置的Linmodem
Linmodem是winmodem的linux實現。關於Linmodem的進一步信息您可以訪問www.linmodems.org。現在的Linmodem一般都是PCI類型的,您也可以通過PCI檢測過程,獲得設備設備描述信息。在獲得描述信息之後,您可以比較一下您的Modem是否屬於下面列出的Modem類型。現在支持的Linmodem包括:

* Conexant/Rockwell HSF
它的驅動程序在http://www.olitec.com/pci56kv2.html或http://linmodems.org。
* Ambient Technology (formerly Cirrus Logic)
驅動程序在http://linmodems.org/CLModem-0.3.0.tar.gz。
* Lucent LT
http://linmodems.org/linux568.zip
* PCTel
PCI、AMR和Zoltrix Phantom類型的二進制驅動程序:http://www.kcdata.com/~gromitkc/winmodem.html#drivers。
* ESS
ES56T-PI (PCI) and ES56V-I (ISA)的二進制驅動程序:
ISA: ftp://ftp.esstech.com/pub/modem/isa/unsupported/56v-i/linux/kernel61/linux111.zip。
PCI: ftp://ftp.esstech.com/pub/modem/pci/unsupported/56t-pi/linux/Kernel61/111.zip。
* 3Com Mini-PCI
無可用驅動程序。



Linmodem為了在某種程度上和外置調制解調器的編程接口一致,所以一般都要生成一個仿真的串口設備。為了生成這些設備文件,一般可以使用命令mknod。

* Lucent LT:
mknod /dev/ttyS14 c 62 78
* PCTel:
mknod /dev/ttyS15 c 62 79
* Esscom:
mknod /dev/esscom c 127 1。esscom用戶希望連接/dev/ttyS14到/dev/esscom,以使得僅識別ttyS*的ppp撥號程序能正常使用。

chgrp uucp /dev/ttyS14
chmod 666 /dev/ttyS14
可允許非根用戶使用此服務撥號。
ln -s /dev/devicefile /dev/modem

您也可以使用setserial,修改串口配置,比如設置串口的波特率,同樣也可以設置/etc/serial.conf設置串口的工作參數。
setserial -agv /dev/ttyS*

5 聲卡配置過程
5.1 內核聲卡驅動程序的配置
現在正在使用的聲卡主要有PCI和ISA兩種。在linux系統下,對這兩種類型聲卡的配置過程實際上是生成配置文件/etc/modules.conf,建立正確的設備別名和聲卡設備驅動程序的對應關系。在正確的設置驅動模塊之後,使用混音器程序設置聲卡的輸出音量。

若您的聲卡是ISA PnP類型的,那麼如果這塊聲卡在dos(windows)系統下也工作良好,那麼您可以先記住聲卡的工作參數,包括IRQ、DMA和I/O。一般而言,在linux系統下應該使用和DOS下一樣的參數。

如果您不知道它的工作參數,您可以通過/proc/isapnp獲得聲卡的配置空間,它包括dma、ioport和irq等信息。然後您可以通過檢查/proc/interrupts,/proc/ioports和/proc/dma文件獲知系統中空閒的irq、ioports和dma等信息,由此您可以選擇合適的聲卡配置參數。

在2.4.x內核中,實現了ISA PnP支持,同時一部分聲卡驅動程序現在也支持無需使用isapnp工具完成自動檢測和配置了。關於聲卡設備的詳細信息您也可以查看內核文檔/usr/src/linux/Documentation/sound/中的文件。

對於PCI聲卡而言,它們的驅動程序包含了自動檢測過程,所以您只需要插入正確的驅動模塊,聲卡一般就能正常工作了。

在聲卡模塊被第一次引用時,內核會要求加載相應的驅動模塊。與聲卡模塊對應的設備別名是sound-slot-0(0表示系統中的一個聲卡,以此類推)。例如,在/etc/modules.conf中加入:
alias sound-slot-0 esssolo1
就配置了ESS Solo-1聲卡。這條語句表示在需要聲卡時,自動加載模塊esssolo1。

有時加載了sound-slot-0對應的設備模塊之後,並不能使聲卡的所有功能生效。這時設備就會請求訪問sound-service-0-n別名。n代表了不同的設備:
編號 對應的設備
0 混音器(Mixer)
2 MIDI
3,4 DSP
表 5-1

這時就要求您設置正確的聲卡服務模塊別名,這樣聲卡才能夠正常工作。聲卡對應的設備文件:
設備文件名 設備描述
/dev/audio 正常連接到/dev/audio0
/dev/audio0 sun工作站兼容的聲音設備(僅部分實現,不支持sun ioctl接口,僅支持u-law編碼)
/dev/audio1 第二個聲音設備(安裝多個聲卡時使用)
/dev/dsp 正常連接到/dev/dsp0
/dev/dsp0 第一個數字采樣設備
/dev/dsp1 第二個數字采樣設備
/dev/mixer 正常連接到/dev/mixer0
/dev/mixer0 第一個聲音混音器
/dev/mixer1 第二個聲音混音器
/dev/music 高級序列化接口
/dev/sequencer 底層MIDI,FM和GUS存取
/dev/sequencer2 正常連接到/dev/music
/dev/midi00 第一個原MIDI端口
/dev/midi01 第二個原MIDI端口
/dev/midi02 第三個原MIDI端口
/dev/midi03 第四個原MIDI端口
/dev/sndstat 顯示聲音驅動程序的狀態
表 5-2

pc揚聲器提供下列設備:

/dev/pcaudio 等價於/dev/audio
/dev/pcsp 等價於/dev/dsp
/dev/pcmixer 等價於/dev/mixer



您可以直接將聲音文件送入對應的設備,比如,將.au聲音文件通過將其送入/dev/audio中播放,原始采樣也可被送入/dev/dsp。
cat sample.su > /dev/audio

但是這樣做一般效果較差,播放時應采用play命令。對於wavplay和vplay(snd-util包)會以最好的效果播放wav文件,但是它們不能識別微軟adpcm壓縮的wav文件。若手動設置爭取正確的參數之後,splay用於播放大多數聲音文件。

讀/dev/audio和/dev/dsp返回的采樣數據可以重定向到一個文件。vrec可以使這個過程更容易。可能需要一個混音器程序選擇適當的輸入設備。

5.2 ALSA聲卡驅動程序的配置
對於聲卡驅動程序,除了內核自帶的驅動程序之外,您還可以使用Advanced linux Sound Architecture(ALSA,http://www.alsa-project.org/)提供的驅動程序。它支持一系列主流聲卡,同時它和內核的聲音結構互相兼容,在某種程度上,可以說是內核的聲卡驅動模塊的補充。

ALSA的聲卡驅動程序的一般命名規則是snd-card-<soundcard>。soundcard代表不同類型的聲卡。例如,對於所有的16位Soundblaster聲卡,它們對應的驅動程序模塊為snd-card-sb16。

若與需要linux內核聲音驅動的向後兼容性,您還需要兩個模塊snd-pcm-oss和snd-mixer-oss。對於amixer設置的多個混音器,它們都是針對不同的設備的。比如CD通道的設置是針對CD播放器的。而很多應用程序,如象mpg123,xmms,realplayer,都要依賴PCM通道的設置。MIC代表麥克風。不同的Gain部分對於不同的使用能提供特別的增益。

缺省情況下ALSA靜音所有的輸出。為了獲得聲音,必須解除主音量和PCM音量的靜音。
amixer -c 0 sset 'Master',0 100%,100% unmute
amixer -c 0 sset 'PCM ',0 100% unmute

選項包括mute,unmute,capture,nocapture,rec,norec,數字或left:right。amixer不帶參數運行時,返回聲卡上所有通道的設置情況。

為了在每次插入聲卡驅動模塊時,都打開靜音,您可以在/etc/modules.conf加入下列語句:
post-install snd-card-sb16 amixer -c 0 sset 'Master',0 100%,100% unmute && amixer -c 0 sset 'PCM ',0 100% unmute
在成功插入了alsa聲卡模塊之後,系統會出現/proc/asound目錄,這個目錄描述了聲卡的工作情況,以及創建的設備文件。

在您加載snd-pcm-oss設備模塊之後,你也能使用與oss兼容的方式存取聲卡,這時如下的映射會被完成:
ALSA設備 OSS設備 次設備號
/dev/snd/pcmC0D0 /dev/audio0(/dev/audio) 4
/dev/snd/pcmC0D0 /dev/dsp0(/dev/dsp) 3
/dev/snd/pcmC0D1 /dev/adsp(/dev/adsp) 12
/dev/snd/pcmC1D0 /dev/audio1 20
/dev/snd/pcmC1D0 /dev/dsp1 19
/dev/snd/pcmC1D1 /dev/adsp1 28
/dev/snd/pcmC2D0 /dev/audio2 36
/dev/snd/pcmC2D0 /dev/dsp2 35
/dev/snd/pcmC2D1 /dev/adsp2 44
表 5-3

對於/dev/mixer設備,要加載snd-mixer-oss,可以保證和老的oss混音器的兼容性。如果您插入了上述設備之後,聲音系統仍無法正常工作,您可以運行snddevices命令,建立正確的設備文件。

由於為使ALSA正常工作,需要設置大量的設備別名,下面就給出一個/etc/modules.conf的例子,它能夠完成ESS Solo1聲卡的自動配置工作。其他的ALSA設備的設置也基本與此聲卡相同。

# 設置ALSA設備的主設備號,它固定為116
alias char-major-116 snd

# 設置OSS設備的主設備號,它固定為14,這使得ALSA復用OSS設備
alias char-major-14 soundcore

# ALSA設備別名
alias sound-card-0 snd-card-es1938

# OSS設備別名
alias sound-slot-0 sound-card-0

# 安裝不同的聲卡服務
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias snd-minor-oss-12 snd-pcm-oss

# 運行amixer命令,打開聲音輸出
post-install snd-card-es1938 amixer -c 0 sset 'Master',0 100%,100% unmute && amixer -c 0 sset 'PCM ',0 100% unmute

6 窗口系統(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的方式。不同顯示模式的掃描頻率:

顯示分辨率 垂直掃描頻率(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
表 6-1

從上表可以看出,您要設置顯示器達到某一分辨率,那麼與此相對應,它的掃描頻率范圍也要包含上表中此分辨率的最低掃描頻率。如果您的顯示器達不到這個范圍,那麼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顯示模式如下表:

顯示深度 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
表 6-2

向內核傳遞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

以上10個字段,它們表示一些具體的X配置參數。一般在配置X服務器時無需指定,而由自動檢測決定它們的值。

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

Copyright © Linux教程網 All Rights Reserved