于辰濤 (scu_yct@263.net)
聯(lián)想(北京)電腦公司軟件工程師
2001 年 8 月
本文是《
如何在Linux下實現(xiàn)硬件的自動檢測》的姊妹篇。將為您介紹在進行了設備檢測,通過設備信息文件獲得了設備對應的驅動程序,工作參數(shù)等信息后,如何對于幾種最常見的設備進行配置、生成正確的配置腳本,以使設備正常工作。
Linux下設備的配置過程是指在檢測到設備類型、設備當前工作參數(shù)等信息之后,使用這些信息來配置設備的驅動程序,工作方式等,(設備的檢測過程參見《如何在Linux下實現(xiàn)硬件的自動檢測》)。要完成這樣的任務,需要做兩方面的工作:
其一是需要一個詳盡的設備信息文件,這個文件描述了設備標識、與設備標識對應的設備驅動程序、設備配置參數(shù)(設備選項)、設備設置的詳細描述、設備配置方法描述、設備對應的別名、設備的主設備號等信息。
現(xiàn)在的Linux內(nèi)核中使用
kmod來完成設備模塊的自動加載,它的一般工作機制是:
在第一次引用設備模塊時,內(nèi)核使用系統(tǒng)命令/sbin/modprobe加載這個設備模塊。為了使這種機制正常工作,
您首先需要使用depmod -a建立表述模塊之間依賴關系的文件modules.dep,然后在/etc/modules.conf中設置正確的設備別名(關于/etc/modules.conf的詳細介紹參見本文附錄A),如果還需要設置設備對應的參數(shù)。舉例來說,在設置網(wǎng)卡時網(wǎng)卡的驅動程序是ne2k-pci,網(wǎng)卡的設備別名是eth0,則在文件/etc/modules.conf中加入別名alias eth0 ne2k-pci,就設置了ne2000兼容的PCI網(wǎng)卡,這樣當有程序要嘗試訪問網(wǎng)絡時,內(nèi)核會自動加載網(wǎng)卡驅動程序ne2k-pci。
其二是需要根據(jù)設備的類型,以及安裝的Linux系統(tǒng)版本(不同的Linux發(fā)行版對于同一設備的配置腳本文件存在差異),設置設備對應的配置腳本文件。
1 配置鍵盤
1.1 配置鍵盤的設備模塊
對于我們常見的鍵盤一般有三種類型,其一為老式的五針鍵盤,其二為ps/2鍵盤,其三是usb鼠標。對于前兩種鍵盤,一般現(xiàn)在的Linux發(fā)行版都把它們需要的設備模塊打包入內(nèi)核,所以無需進行附加的模塊插入操作,鍵盤就能夠正常工作。而對于usb類型的鍵盤,一般而言,要使它正常工作必須先插入對應的設備模塊。
對于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文件中設置別名usb-interface,它對應您所使用的橋接器模塊。例如,當橋接器的類型為UHCI時,在/etc/modules.conf中加入設備別名:
alias usb-interface usb-uhci
對于2.4.x系列的內(nèi)核,此設備別名則變?yōu)椋?nbsp;
alias usb-controller usb-uhci
在設置了此別名之后,系統(tǒng)啟動時會自動進行usb設備檢測。當檢測過程發(fā)現(xiàn)連結的設備是系統(tǒng)支持的,那么系統(tǒng)會自動插入所需的模塊。
1.2 鍵盤配置文件
鍵盤的配置文件/etc/sysconfig/keyboard,它的內(nèi)容很簡單,可選配置項為KEYTABLE(隨著發(fā)行版本的不同這個文件的內(nèi)容會有所差異,但是這個字段是最重要的)。例如,當設置KEYTABLE = "us"時,表示系統(tǒng)使用美式鍵盤。
然后,為了正確的使用鍵盤上的功能鍵,您還需要調用命令dumpkeys生成文件/etc/sysconfig/console/default.kmap。
/usr/bin/dumpkeys > /etc/sysconfig/console/default.kmap
這個文件描述了鍵盤的鍵盤掃描碼和加入鍵盤修飾之后的鍵盤的相應的鍵盤掃描碼。
同樣,為了鍵盤能在X系統(tǒng)環(huán)境下正常工作,您可能也需要在X系統(tǒng)下對鍵盤進行設置,這時您就必須使用xmodmap來設置正確的鍵盤映射。例如,
/usr/X11R6/bin/xmodmap /usr/share/xmodmap/xmodmap.fr
設置您的X系統(tǒng)下的鍵盤為法語鍵盤。
在正確的配置了/etc/sysconfig/keyboard文件之后,X系統(tǒng)的配置程序會根據(jù)此文件的信息配置X中關于鍵盤配置的小節(jié)。當此文件內(nèi)容不正確或者是此文件不存在時,X系統(tǒng)是無法啟動和配置的。
2 配置鼠標
2.1 鼠標的基本信息
Linux支持四種不同的總線鼠標硬件接口:Inport(Microsoft),Logitech,PS/2和ATI-XL。2.4內(nèi)核也支持IBM PC110數(shù)字化板和Apple Desktop鼠標。
Inport mice
Inport mice包含大多數(shù)舊類型的微軟鼠標。Inport mice通常連接到主板的接口卡上。假如鼠標線連接頭是圓的,有9針,則可能是Inport mice。
Logitech mice
PS/2 mice
ATI combo video/mice
IBM PC110 palmtop digitizer
Apple Desktop Mouse
Hybrid Mice
對于鼠標協(xié)議,大多數(shù)總線鼠標使用BusMouse協(xié)議,一些古老的Logitech鼠標使用MouseSystems協(xié)議,而一些更老的微軟鼠標使用Logitech協(xié)議。PS/2鼠標總是使用PS/2協(xié)議。
不同類型的鼠標對應的設備文件:接口類型 設備 主設備號 次設備號
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)建對應設備的命令:
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)建了鼠標對應的設備文件之后,因為現(xiàn)在很多程序都使用/dev/mouse作為缺省的鼠標設備文件,所以為了使鼠標正常工作你還要創(chuàng)建一個符號連接/dev/mouse指向真實的鼠標設備文件。例如,對于ps/2鼠標,/dev/mouse指向/dev/psaux,對于usb鼠標,/dev/mouse/指向/dev/input/mice,對于串口鼠標/dev/mouse指向/dev/ttyS0。對于不同的linux發(fā)行版本,這些文件可能有所不同,上述介紹主要是基于Redhat發(fā)布的配置。
對于現(xiàn)在最常見的三種鼠標:串口鼠標、PS/2鼠標和USB鼠標而言,由于對PS/2鼠標支持一般都打在內(nèi)核中,所以您也不需要在鼠標工作之前插入設備模塊。但對于其他的兩種鼠標,插入模塊的操作一般是必須的。對于串口鼠標而言,您必須先插入模塊serial.o,
/sbin/modprobe serial
成功的插入模塊之后,如果串口鼠標支持即插即用的串口協(xié)議,您可以從串口(/dev/ttyS*)讀到鼠標的類型信息,然后由此信息,完成鼠標的配置文件。對于USB鼠標,為了使其正常工作,您必須先插入模塊usbmouse.o和mousedev.o
/sbin/modprobe usbmouse
/sbin/modprobe mousedev
同樣,為了使鼠標驅動程序能夠自動加載,您也需要在/etc/modules.conf文件中創(chuàng)建usb-interface(usb-controller)別名。
2.2 鼠標配置文件
正確配置鼠標必須生成配置文件/etc/sysconfig/mouse,它包括下列選項:MOUSETYPE、XMOUSETYPE、FULLNAME、XEMU3、DEVICE。該鼠標配置文件也是X配置文件中鼠標配置節(jié)的基礎。如果沒有這個文件,很多X配置程序將無法工作。
MOUSETYPE=
配置鼠標的類型,包括ps/2、Busmouse、imps2、netmouse、Microsoft、Logitech、MouseMan、MMHitTab、MouseSystems、pnp、logim、ms3、MMSeries等。
XMOUSETYPE=
X系統(tǒng)下配置的鼠標的類型,包括MouseMan、IntelliMouse、MMSeries、MMHittab、Logitech、MouseMan、Microsoft、MouseSystems、PS/2、BusMouse等。
FULLNAME=
描述鼠標設備的全名。例如,對于普通PS/2鼠標,其全名為PS/2|Standard。
XEMU3=
是否仿真三鍵鼠標,可選參數(shù)為yes或no。
DEVICE=
描述鼠標對應的設備文件。例如。對于普通PS/2鼠標,設備文件為psaux。
2.3 鼠標的配置技巧
通過gpm能在命令行方式下使用鼠標。這樣在控制臺方式下,就可以使用鼠標進行剪貼等操作了。例如,對于ps/2鼠標,它的配置方式是:
gpm -t ps/2 -m /dev/psaux
如果不指定-m選項,那么系統(tǒng)會去查找文件/dev/mouse。
鼠標移動不規(guī)則可能是因為對鼠標設置了錯誤的協(xié)議。如新的Logitech鼠標不使用Logitech協(xié)議,而用微軟協(xié)議(MouseMan)。如果您的鼠標移動不規(guī)則,那您可能首先需要嘗試更換一下MouseType(XMouseType)指定的值。
在X系統(tǒng)下,您如果需要更換鼠標的左、右鍵,那么可以執(zhí)行xmodmap -e "pointer = 3 2 1"。
3 網(wǎng)卡配置過程
3.1 配置網(wǎng)卡的設備模塊
按照總線類型來分,現(xiàn)在的以太網(wǎng)卡主要有PCI網(wǎng)卡、ISA網(wǎng)卡和PCMCIA網(wǎng)卡。為使這些網(wǎng)卡正常工作,要在/etc/modules.conf中設置設備別名eth0,以及要傳遞給驅動程序的設備參數(shù)。這樣內(nèi)核在需要使用驅動程序時,會由內(nèi)核服務kmod使用系統(tǒng)命令modprobe(insmod)自動裝載需要的設備模塊。
在配置網(wǎng)卡時,如果此網(wǎng)卡能夠自動檢測,那么您只需要通過設備標識,在設備描述信息文件中查得它對應的設備驅動程序,然后再由此信息配置網(wǎng)卡。但是這種方法對于普通isa總線的ne2000兼容網(wǎng)卡就不適合了,因為它們在設計時一般不滿足isapnp規(guī)范,因此無法讀出它們的設備信息。但是這種類型的網(wǎng)卡一般使用ne作為設備驅動程序,但是為使其正常工作還須指定io地址和占用的irq。
例如,對于ne2000兼容的isa網(wǎng)卡,比如DE220X,它們的驅動程序為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。若您還需要配置域名解析服務,那么還要生成文件/etc/resolv.conf。
對于/etc/sysconfig/network腳本文件,最常用的可設置項包括NETWORKING,F(xiàn)ORWARD_IPV4,HOSTNAME,DOMAINNAME,GATEWAY,GATEWAYDEV。注意:在沒有配置網(wǎng)卡時,也要設置此文件,以使得本機的回環(huán)設備(lo)能夠正常工作,此設備是很多l(xiāng)inux內(nèi)部通訊的基礎。
NETWORKING=
表示系統(tǒng)是否使用網(wǎng)絡,一般設置為yes。如果設為no,則不能使用網(wǎng)絡,而且很多系統(tǒng)服務程序將無法啟動。
FORWARD_IPV4=
表示是否支持ipv4的自動轉發(fā)。一般在只有一塊網(wǎng)卡時,設置此項為false。
HOSTNAME=
設置本機的主機名,這里設置的主機名要和/etc/hosts中設置的主機名對應。
DOMAINNAME=
設置本機的域名。
GATEWAY=
設置本機連接的網(wǎng)關的IP地址。例如,網(wǎng)關為10.0.0.2
GATEWAYDEV=
與此網(wǎng)關進行通訊時,所使用的網(wǎng)卡設備別名。例如,當使用了一塊網(wǎng)卡,并連接了網(wǎng)關時,此時的值為eth0。
缺省沒有網(wǎng)卡時的設置為:
NETWORKING="yes"
FORWARD_IPV4="false"
HOSTNAME="localhost.localdomain"
DOMAINNAME="localdomain"
/etc/sysconfig/network-scripts/ifcfg-*,描述網(wǎng)絡接口的信息。每個不同的網(wǎng)絡接口對應不同的文件。例如,ifcfg-eth0對應第一塊網(wǎng)卡eth0可能出現(xiàn)的配置信息。常見的配置選項包括DEVICE、BOOTPROTO、IPADDR、NETMASK、NETWORK、BROADCAST、ONBOOT。
DEVICE=
描述網(wǎng)卡對應的設備別名,例如ifcfg-eth0的文件中它為eth0。
BOOTPROTO=
設置網(wǎng)卡獲得ip地址的方式,可能的選項為static,dhcp或bootp,分別對應靜態(tài)指定的ip地址,通過dhcp協(xié)議獲得的ip地址,通過bootp協(xié)議獲得的ip地址。
IPADDR=
如果設置網(wǎng)卡獲得ip地址的方式為靜態(tài)指定,此字段就指定了網(wǎng)卡對應的ip地址。
NETMASK=
網(wǎng)卡對應的網(wǎng)絡掩碼。
NETWORK=
網(wǎng)卡對應的網(wǎng)絡地址。
BROADCAST=
對應的子網(wǎng)廣播地址。
ONBOOT=
系統(tǒng)啟動時是否設置此網(wǎng)絡接口,設置為yes時,系統(tǒng)啟動時激活此設備。
/etc/resolv.conf,系統(tǒng)生成這個文件進行域名解析。否則,安裝過程的反向名查詢無法工作。可能出現(xiàn)的選項:
search domainName指定的域名
nameserver dnsServer 域名服務器,可以指定多個。
/etc/hosts,將主機名列表加入此文件。
4 Modem配置過程
對于Modem的配置過程而言,我們現(xiàn)在一般使用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向串口發(fā)送AT命令,來檢測和配置modem的工作方式。經(jīng)常使用的命令: AT命令 命令描述
ATDT(ATDP) 使用語音(脈沖)進行撥號
ATZ 復位調制解調器
ATH 掛起電話
ATI0 返回調制解調器的狀態(tài)
ATI1 執(zhí)行ROM校驗和檢查并返回值
ATI2 驗證ROM校驗,返回OK或ERROR
ATI3 返回ROM部件的軟件版本號。
ATI4 查詢調制解調器的狀態(tài)信息,包括波特率、奇偶校驗位長度,字長度、撥號方式、寄存器狀態(tài)等信息。
ATI5 查詢調制解調器的ram中的狀態(tài)信息。
ATI6 查詢調制解調器的鏈路狀態(tài)信息,包括已傳送(接收、丟失)的字符數(shù)、傳送的數(shù)據(jù)塊數(shù)目、鏈路連接狀態(tài)、最后一次撥號時間等。
ATI7 獲得配置的序言文件,此文件描述的信息包括:modem支持的通訊協(xié)議,F(xiàn)ax版本號,EPROM的版本號。
ATI8 獲得連接時間
ATI9 獲得調制解調器的描述名稱
表 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)。關于Linmodem的進一步信息您可以訪問www.?,F(xiàn)在的Linmodem一般都是PCI類型的,您也可以通過PCI檢測過程,獲得設備設備描述信息。在獲得描述信息之后,您可以比較一下您的Modem是否屬于下面列出的Modem類型?,F(xiàn)在支持的Linmodem包括:
Conexant/Rockwell HSF
它的驅動程序在http://www./pci56kv2.html或http://。
Ambient Technology (formerly Cirrus Logic)
驅動程序在http:///CLModem-0.3.0.tar.gz。
Lucent LT
http:///linux568.zip
PCTel
PCI、AMR和Zoltrix Phantom類型的二進制驅動程序:http://www./~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設置串口的工作參數(shù)。
setserial -agv /dev/ttyS*
5 聲卡配置過程
5.1 內(nèi)核聲卡驅動程序的配置
現(xiàn)在正在使用的聲卡主要有PCI和ISA兩種。在Linux系統(tǒng)下,對這兩種類型聲卡的配置過程實際上是生成配置文件/etc/modules.conf,建立正確的設備別名和聲卡設備驅動程序的對應關系。在正確的設置驅動模塊之后,使用混音器程序設置聲卡的輸出音量。
若您的聲卡是ISA PnP類型的,那么如果這塊聲卡在dos(windows)系統(tǒng)下也工作良好,那么您可以先記住聲卡的工作參數(shù),包括IRQ、DMA和I/O。一般而言,在Linux系統(tǒ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支持,同時一部分聲卡驅動程序現(xiàn)在也支持無需使用isapnp工具完成自動檢測和配置了。關于聲卡設備的詳細信息您也可以查看內(nèi)核文檔/usr/src/linux/Documentation/sound/中的文件。
對于PCI聲卡而言,它們的驅動程序包含了自動檢測過程,所以您只需要插入正確的驅動模塊,聲卡一般就能正常工作了。
在聲卡模塊被第一次引用時,內(nèi)核會要求加載相應的驅動模塊。與聲卡模塊對應的設備別名是sound-slot-0(0表示系統(tǒng)中的一個聲卡,以此類推)。例如,在/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工作站兼容的聲音設備(僅部分實現(xiàn),不支持sun ioctl接口,僅支持u-law編碼)
/dev/audio1 第二個聲音設備(安裝多個聲卡時使用)
/dev/dsp 正常連接到/dev/dsp0
/dev/dsp0 第一個數(shù)字采樣設備
/dev/dsp1 第二個數(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 顯示聲音驅動程序的狀態(tài)
表 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文件。若手動設置爭取正確的參數(shù)之后,splay用于播放大多數(shù)聲音文件。
讀/dev/audio和/dev/dsp返回的采樣數(shù)據(jù)可以重定向到一個文件。vrec可以使這個過程更容易。可能需要一個混音器程序選擇適當?shù)妮斎朐O備。
5.2 ALSA聲卡驅動程序的配置
對于聲卡驅動程序,除了內(nèi)核自帶的驅動程序之外,您還可以使用Advanced Linux Sound Architecture(ALSA,http://www./)提供的驅動程序。它支持一系列主流聲卡,同時它和內(nèi)核的聲音結構互相兼容,在某種程度上,可以說是內(nèi)核的聲卡驅動模塊的補充。
ALSA的聲卡驅動程序的一般命名規(guī)則是snd-card-。soundcard代表不同類型的聲卡。例如,對于所有的16位Soundblaster聲卡,它們對應的驅動程序模塊為snd-card-sb16。
若與需要linux內(nèi)核聲音驅動的向后兼容性,您還需要兩個模塊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,數(shù)字或left:right。amixer不帶參數(shù)運行時,返回聲卡上所有通道的設置情況。
為了在每次插入聲卡驅動模塊時,都打開靜音,您可以在/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)建的設備文件。
在您加載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混音器的兼容性。如果您插入了上述設備之后,聲音系統(tǒng)仍無法正常工作,您可以運行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
(待續(xù))
作者簡介
于辰濤,聯(lián)想(北京)電腦公司軟件工程師。目前主要從事Linux系統(tǒng)安裝程序的開發(fā)工作,主要研究興趣是操作系統(tǒng)的工作機制和開發(fā)底層系統(tǒng)程序。