在FreeBSD中要使用声卡,首先要将声卡的驱动程序加载进系统,但是机器究竟需要使用什么样的声卡驱动程序却是一个问题,按照相关手册中的介绍,我们可以输入这样的命令:
- # kldload snd_driver &
然后您会发现,声卡确实能够工作了,可一旦重启机器后,仍然得要输入这个命令才能让声卡继续工作,怎么才能够不用这么麻烦呢?如果您已经能够听到声卡发出的声音了,那么在终端下输入下面命令:
- # cat /dev/sndstat
然后观察输出,也许您的输出格式和我的比较相似:
FreeBSD Audio Driver (newpcm: 32bit 2007061600/i386)
Installed devices:
pcm0: <Acer Labs M5451> at io 0x1800 irq 9 kld snd_t4dwave [GIANT]
(1p:1v/1r:1vchannels duplex default)
上面信息中的kld snd_t4dwave向我们揭示了驱动的名称,在我这里是snd_t4dwave,好了,接下来我们要更改配置文件 /boot/loader.conf , 让系统启动能够自动加载这个驱动。首先我们在默认的启动配置文件(/boot/defaults/loader.conf )加载项中找到关于这个驱动的配置,因为这个配置文件内容比较多,我们可以用gawk来抽取我们需要的信息:
- # gawk '$0 ~ /snd_t4dwave/ {print $1}' /boot/defaults/loader.conf
snd_t4dwave_load="NO"
输出信息顾名思义,就是加载snd_t4dwave这个驱动程序的开关,将上面的这句改为
snd_t4dwave_load="YES"
后,添加到/boot/loader.conf中,那么再次重启机器,声卡将会被自动加载进系统。
上面说了这么多,其实步骤还是挺繁琐的,这里有一个script,能够自动帮助您完成上面所有的工序:
- #! /bin/sh
- ################################################################################
- # Program: sndConfig
- #
- # FreeBSD默认不加载声卡驱动,这个程序能够自动检测您的声卡类型,并修改
- # 这一默认行为
- #
- # Author: hailongchang@163.com
- #
- # Date: 2008/05/10
- ################################################################################
- snd_pos=/dev/sndstat
- if [ ! -e $snd_pos ]; then
- `kldload snd_driver &`
- fi
- snd_driver=`cat /dev/sndstat | gawk '$0 ~ /kld/ {print}' |
- gawk 'match($0,/snd_[a-zA-Z0-9]+/,dname) {print dname[0]}' `
- snd_tag=`gawk '$0 ~ /' "$snd_driver" '/ {print $1}' /boot/defaults/loader.conf`
- snd_change=`echo $snd_tag | sed 's/NO/YES/' `
- echo "I will write this sentence: " `echo $snd_change` " to your /boot/loader.conf."
- `echo $snd_change >> /boot/loader.conf`