小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

linuxeden.com---自由文檔 - 如何在linux下實現(xiàn)設(shè)備的配置(上)

 accesine 2005-08-09
2001-09-17    
于辰濤 (scu_yct@263.net) 
聯(lián)想(北京)電腦公司軟件工程師 
2001 年 8 月 

本文是《如何在Linux下實現(xiàn)硬件的自動檢測》的姊妹篇。將為您介紹在進(jìn)行了設(shè)備檢測,通過設(shè)備信息文件獲得了設(shè)備對應(yīng)的驅(qū)動程序,工作參數(shù)等信息后,如何對于幾種最常見的設(shè)備進(jìn)行配置、生成正確的配置腳本,以使設(shè)備正常工作。 
Linux下設(shè)備的配置過程是指在檢測到設(shè)備類型、設(shè)備當(dāng)前工作參數(shù)等信息之后,使用這些信息來配置設(shè)備的驅(qū)動程序,工作方式等,(設(shè)備的檢測過程參見《如何在Linux下實現(xiàn)硬件的自動檢測》)。要完成這樣的任務(wù),需要做兩方面的工作: 

其一是需要一個詳盡的設(shè)備信息文件,這個文件描述了設(shè)備標(biāo)識、與設(shè)備標(biāo)識對應(yīng)的設(shè)備驅(qū)動程序、設(shè)備配置參數(shù)(設(shè)備選項)、設(shè)備設(shè)置的詳細(xì)描述、設(shè)備配置方法描述、設(shè)備對應(yīng)的別名、設(shè)備的主設(shè)備號等信息。 

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

其二是需要根據(jù)設(shè)備的類型,以及安裝的Linux系統(tǒng)版本(不同的Linux發(fā)行版對于同一設(shè)備的配置腳本文件存在差異),設(shè)置設(shè)備對應(yīng)的配置腳本文件。 

1 配置鍵盤 
1.1 配置鍵盤的設(shè)備模塊 
對于我們常見的鍵盤一般有三種類型,其一為老式的五針鍵盤,其二為ps/2鍵盤,其三是usb鼠標(biāo)。對于前兩種鍵盤,一般現(xiàn)在的Linux發(fā)行版都把它們需要的設(shè)備模塊打包入內(nèi)核,所以無需進(jìn)行附加的模塊插入操作,鍵盤就能夠正常工作。而對于usb類型的鍵盤,一般而言,要使它正常工作必須先插入對應(yīng)的設(shè)備模塊。 

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

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

對于2.4.x系列的內(nèi)核,此設(shè)備別名則變?yōu)椋?nbsp;
alias usb-controller usb-uhci 
在設(shè)置了此別名之后,系統(tǒng)啟動時會自動進(jìn)行usb設(shè)備檢測。當(dāng)檢測過程發(fā)現(xiàn)連結(jié)的設(shè)備是系統(tǒng)支持的,那么系統(tǒng)會自動插入所需的模塊。 

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

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

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

在正確的配置了/etc/sysconfig/keyboard文件之后,X系統(tǒng)的配置程序會根據(jù)此文件的信息配置X中關(guān)于鍵盤配置的小節(jié)。當(dāng)此文件內(nèi)容不正確或者是此文件不存在時,X系統(tǒng)是無法啟動和配置的。 

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

Inport mice 
Inport mice包含大多數(shù)舊類型的微軟鼠標(biāo)。Inport mice通常連接到主板的接口卡上。假如鼠標(biāo)線連接頭是圓的,有9針,則可能是Inport mice。 
Logitech mice 
PS/2 mice 
ATI combo video/mice 
IBM PC110 palmtop digitizer 
Apple Desktop Mouse 
Hybrid Mice 
對于鼠標(biāo)協(xié)議,大多數(shù)總線鼠標(biāo)使用BusMouse協(xié)議,一些古老的Logitech鼠標(biāo)使用MouseSystems協(xié)議,而一些更老的微軟鼠標(biāo)使用Logitech協(xié)議。PS/2鼠標(biāo)總是使用PS/2協(xié)議。 

不同類型的鼠標(biāo)對應(yīng)的設(shè)備文件:接口類型 設(shè)備 主設(shè)備號 次設(shè)備號 
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 

創(chuàng)建對應(yīng)設(shè)備的命令: 
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 




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

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

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

2.2 鼠標(biāo)配置文件 
正確配置鼠標(biāo)必須生成配置文件/etc/sysconfig/mouse,它包括下列選項:MOUSETYPE、XMOUSETYPE、FULLNAME、XEMU3、DEVICE。該鼠標(biāo)配置文件也是X配置文件中鼠標(biāo)配置節(jié)的基礎(chǔ)。如果沒有這個文件,很多X配置程序?qū)o法工作。 

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

XMOUSETYPE= 
X系統(tǒng)下配置的鼠標(biāo)的類型,包括MouseMan、IntelliMouse、MMSeries、MMHittab、Logitech、MouseMan、Microsoft、MouseSystems、PS/2、BusMouse等。 

FULLNAME= 
描述鼠標(biāo)設(shè)備的全名。例如,對于普通PS/2鼠標(biāo),其全名為PS/2|Standard。 

XEMU3= 
是否仿真三鍵鼠標(biāo),可選參數(shù)為yes或no。 

DEVICE= 
描述鼠標(biāo)對應(yīng)的設(shè)備文件。例如。對于普通PS/2鼠標(biāo),設(shè)備文件為psaux。 

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

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

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

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

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

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

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

對于/etc/sysconfig/network腳本文件,最常用的可設(shè)置項包括NETWORKING,F(xiàn)ORWARD_IPV4,HOSTNAME,DOMAINNAME,GATEWAY,GATEWAYDEV。注意:在沒有配置網(wǎng)卡時,也要設(shè)置此文件,以使得本機(jī)的回環(huán)設(shè)備(lo)能夠正常工作,此設(shè)備是很多l(xiāng)inux內(nèi)部通訊的基礎(chǔ)。 

NETWORKING= 
表示系統(tǒng)是否使用網(wǎng)絡(luò),一般設(shè)置為yes。如果設(shè)為no,則不能使用網(wǎng)絡(luò),而且很多系統(tǒng)服務(wù)程序?qū)o法啟動。 

FORWARD_IPV4= 
表示是否支持ipv4的自動轉(zhuǎn)發(fā)。一般在只有一塊網(wǎng)卡時,設(shè)置此項為false。 

HOSTNAME= 
設(shè)置本機(jī)的主機(jī)名,這里設(shè)置的主機(jī)名要和/etc/hosts中設(shè)置的主機(jī)名對應(yīng)。 

DOMAINNAME= 
設(shè)置本機(jī)的域名。 

GATEWAY= 
設(shè)置本機(jī)連接的網(wǎng)關(guān)的IP地址。例如,網(wǎng)關(guān)為10.0.0.2 

GATEWAYDEV= 
與此網(wǎng)關(guān)進(jìn)行通訊時,所使用的網(wǎng)卡設(shè)備別名。例如,當(dāng)使用了一塊網(wǎng)卡,并連接了網(wǎng)關(guān)時,此時的值為eth0。 

缺省沒有網(wǎng)卡時的設(shè)置為: 
NETWORKING="yes" 
FORWARD_IPV4="false" 
HOSTNAME="localhost.localdomain" 
DOMAINNAME="localdomain" 




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

DEVICE= 
描述網(wǎng)卡對應(yīng)的設(shè)備別名,例如ifcfg-eth0的文件中它為eth0。 

BOOTPROTO= 
設(shè)置網(wǎng)卡獲得ip地址的方式,可能的選項為static,dhcp或bootp,分別對應(yīng)靜態(tài)指定的ip地址,通過dhcp協(xié)議獲得的ip地址,通過bootp協(xié)議獲得的ip地址。 

IPADDR= 
如果設(shè)置網(wǎng)卡獲得ip地址的方式為靜態(tài)指定,此字段就指定了網(wǎng)卡對應(yīng)的ip地址。 

NETMASK= 
網(wǎng)卡對應(yīng)的網(wǎng)絡(luò)掩碼。 

NETWORK= 
網(wǎng)卡對應(yīng)的網(wǎng)絡(luò)地址。 

BROADCAST= 
對應(yīng)的子網(wǎng)廣播地址。 

ONBOOT= 
系統(tǒng)啟動時是否設(shè)置此網(wǎng)絡(luò)接口,設(shè)置為yes時,系統(tǒng)啟動時激活此設(shè)備。 

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

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

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

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

例如,對于一款聯(lián)想射雕外置式Modem,在啟動minicom之后,輸入ATI9的返回值為: 
(1.0AKY1010\\Modem\AKY1010\56K DATA FAX VOICE MODEM)FF 

4.2 內(nèi)置的Linmodem 
Linmodem是winmodem的Linux實現(xiàn)。關(guān)于Linmodem的進(jìn)一步信息您可以訪問www.?,F(xiàn)在的Linmodem一般都是PCI類型的,您也可以通過PCI檢測過程,獲得設(shè)備設(shè)備描述信息。在獲得描述信息之后,您可以比較一下您的Modem是否屬于下面列出的Modem類型?,F(xiàn)在支持的Linmodem包括: 

Conexant/Rockwell HSF 
它的驅(qū)動程序在http://www./pci56kv2.html或http://。 
Ambient Technology (formerly Cirrus Logic) 
驅(qū)動程序在http:///CLModem-0.3.0.tar.gz。 
Lucent LT 
http:///linux568.zip 
PCTel 
PCI、AMR和Zoltrix Phantom類型的二進(jìn)制驅(qū)動程序:http://www./~gromitkc/winmodem.html#drivers。 
ESS 
ES56T-PI (PCI) and ES56V-I (ISA)的二進(jìn)制驅(qū)動程序: 
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 
無可用驅(qū)動程序。 

Linmodem為了在某種程度上和外置調(diào)制解調(diào)器的編程接口一致,所以一般都要生成一個仿真的串口設(shè)備。為了生成這些設(shè)備文件,一般可以使用命令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 
可允許非根用戶使用此服務(wù)撥號。 
ln -s /dev/devicefile /dev/modem 

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

5 聲卡配置過程 
5.1 內(nèi)核聲卡驅(qū)動程序的配置 
現(xiàn)在正在使用的聲卡主要有PCI和ISA兩種。在Linux系統(tǒng)下,對這兩種類型聲卡的配置過程實際上是生成配置文件/etc/modules.conf,建立正確的設(shè)備別名和聲卡設(shè)備驅(qū)動程序的對應(yīng)關(guān)系。在正確的設(shè)置驅(qū)動模塊之后,使用混音器程序設(shè)置聲卡的輸出音量。 

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

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

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

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

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

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

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

pc揚聲器提供下列設(shè)備: 
/dev/pcaudio 等價于/dev/audio 
/dev/pcsp 等價于/dev/dsp 
/dev/pcmixer 等價于/dev/mixer 




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

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

讀/dev/audio和/dev/dsp返回的采樣數(shù)據(jù)可以重定向到一個文件。vrec可以使這個過程更容易??赡苄枰粋€混音器程序選擇適當(dāng)?shù)妮斎朐O(shè)備。 

5.2 ALSA聲卡驅(qū)動程序的配置 
對于聲卡驅(qū)動程序,除了內(nèi)核自帶的驅(qū)動程序之外,您還可以使用Advanced Linux Sound Architecture(ALSA,http://www./)提供的驅(qū)動程序。它支持一系列主流聲卡,同時它和內(nèi)核的聲音結(jié)構(gòu)互相兼容,在某種程度上,可以說是內(nèi)核的聲卡驅(qū)動模塊的補充。 

ALSA的聲卡驅(qū)動程序的一般命名規(guī)則是snd-card-。soundcard代表不同類型的聲卡。例如,對于所有的16位Soundblaster聲卡,它們對應(yīng)的驅(qū)動程序模塊為snd-card-sb16。 

若與需要linux內(nèi)核聲音驅(qū)動的向后兼容性,您還需要兩個模塊snd-pcm-oss和snd-mixer-oss。對于amixer設(shè)置的多個混音器,它們都是針對不同的設(shè)備的。比如CD通道的設(shè)置是針對CD播放器的。而很多應(yīng)用程序,如象mpg123,xmms,realplayer,都要依賴PCM通道的設(shè)置。MIC代表麥克風(fēng)。不同的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,數(shù)字或left:right。amixer不帶參數(shù)運行時,返回聲卡上所有通道的設(shè)置情況。 

為了在每次插入聲卡驅(qū)動模塊時,都打開靜音,您可以在/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聲卡模塊之后,系統(tǒng)會出現(xiàn)/proc/asound目錄,這個目錄描述了聲卡的工作情況,以及創(chuàng)建的設(shè)備文件。 

在您加載snd-pcm-oss設(shè)備模塊之后,你也能使用與oss兼容的方式存取聲卡,這時如下的映射會被完成: ALSA設(shè)備 OSS設(shè)備 次設(shè)備號 
/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設(shè)備,要加載snd-mixer-oss,可以保證和老的oss混音器的兼容性。如果您插入了上述設(shè)備之后,聲音系統(tǒng)仍無法正常工作,您可以運行snddevices命令,建立正確的設(shè)備文件。 

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

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

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

# ALSA設(shè)備別名 
alias sound-card-0 snd-card-es1938 

# OSS設(shè)備別名 
alias sound-slot-0 sound-card-0 

# 安裝不同的聲卡服務(wù) 
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 

(待續(xù)) 

作者簡介 
于辰濤,聯(lián)想(北京)電腦公司軟件工程師。目前主要從事Linux系統(tǒng)安裝程序的開發(fā)工作,主要研究興趣是操作系統(tǒng)的工作機(jī)制和開發(fā)底層系統(tǒng)程序。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多