|
Debian中用Alsa驱动声卡的方法
回应这篇文章回复
这是我在成功驱动了声卡后所写的一篇入门级文章,给与我同样的菜鸟。不过,可能我是最面的那种。如果有什么不入大侠法眼,请告诉我,我再改进,谢谢!
================================
如何用alsa驱动Debian中的声卡(v0.1版)
Debian作为GNU/Linux中的一员,在使用和配置上有很多与其它发行版所不同的特色。其中声卡的驱动往往成为很麻烦的工作,并无法像Redhat中一样在setup中就可以搞定一切。笔者也是刚刚接触Debian,在与Debian的第一次亲密接触中也头一次真正亲身体验了alsa的安装与配置。相比而言,在Debian中如何配置alsa并不是很难的事情,因为Debian中提供了alsaconf工具,可以较为方便的配置alsa,但其中还是有些地方需要进行一定的摸索。写作这篇文章就是为了给像笔者一样的菜鸟提供一条捷径,不用再像笔者一样摸索半天。
好了,废话少说,下面进入正题。在整个安装和配置alsa的过程中主要分为两步:制作包文件、安装及配置。下面分别予以说明。
一、包文件的制作
为什么要制作包文件?笔者认为这样做主要有两点好处:其一、自动化程度高,只要配置好,就可以利用Debian提供的工具自动完成整个编译过程,不许要自己一步一步的进行工作,这节省了时间和人力;其二、如果以后重新安装系统,这些包文件可以保留下来再利用,到时候就不需要再次重复工作了。
alsa在编译过程中要用到kernel源代码,而且其模块最好与相应的kernel配合使用,最关键的是Debian在安装过程中预装的kernel版本太低,只有2.2.20,一般大家都会重新编译kernel,正好可以同时进行。因此,在整个包的制作过程中也分为两部分:kernel包的制作和alsa包的制作。
在进行下面的步骤之前,首先我们要安装kernel-package这个包,其中包含的make-kpkg是我们在下面要使用的工具,在这里我们采用apt-get的方式安装它:apt-get install kernel-package。好了,现在我们可以开始制作我们的包文件了。
1. kernel包的制作
可以采用Debian下众多的包管理工具得到kernel的源代码包,也可以自己到www.kernel.org 上下载。在这里采用apt-get得到源代码包:apt-get install kernle-source-2.4.18。如果你没有安装bzip2的话,它还会自动安装bzip2。安装后,将在/usr/src下形成一个kernel-source-2.4.18.tar.bz2的文件,用命令:tar jxf kernel-source-2.4.18.tar.bz2将源代码树展开,同时为其建立一个链接:ln -s /usr/src/kernel-source-2.4.18 /usr/src/linux。这一步是非常必要的,因为alsa默认是到/usr/src/linux中寻找kernel的源代码的,这样就简化了以后的步骤。至此,我们已经完成了有关kernel的包的下载。在开始kernel包的制作之前,你需要了解一些有关编译kernel的知识,如果你是首次编译的话,建议到网上找一些文档学习一下。
准备工作完成后,进入kernel的源代码树(cd /usr/src/linux),配置你的kernel,可以根据你自己的爱好选择make config、make menuconfig或make xconfig(如果你已经安装了xwindow的话)。在选好自己需要的功能后,保存配置。在当前目录下(也就是/usr/src/linux)中运行:
make-kpkg --revision number kernel_image
这将根据你的kernel的设置编译一个kernel的image包出来。这里的number可以替换为任意你喜欢的东西,建议采用用户名.次数的格式,例如你的用户名为debian,第一次编译,可以这样写:make-kpkg --revision debian.1 kernel_image。这样写的最大好处,就是可以避免通过dselect方法得到的编译好的核心将你的覆盖掉。好了,下面等着吧。如果没有什么错误的话,将在/usr/src下产生一个名为kernel-images-2.4.18_debian.1_i386.deb的包(仍采用上面的例子);如果出错了,再仔细看看有关编译kernel的文章吧。
2. alsa包的制作
首先仍然是安装需要的包,主要是alsa-base、alsa-source、alsaconf这三个包,再次使用apt-get命令:apt-get install alsa-base alsa-source alsa-conf,当前sid中的alsa为0.9pre1。在安装过程中,会弹出一些对话框,主要是问一些有关声卡的问题,如果你的声卡是ISA的,那么就要启用ISA PNP功能;接着是问你是否需要将调试信息编入,默认是no,除非你要研究alsa,否则采用默认的;最后是选择声卡型号,选择你的声卡型号即可,以上配置保存在/etc/alsa/alsa-source.conf中,在后面要用到。展开后在/usr/src/下将出现一个名为alsa-driver.tar.gz的包和modules的一个目录,将alsa-driver包展开(用tar zxf命令),默认情况下是解压至/usr/src/modules/alsa-driver中。准备工作至此完成。
接下来需要设置一些环境变量,以更好的控制alsa包的生成。这里主要有四个环境变量:MODULE_LOC、ALSA_NOPNP、ALSA_DEBUG和ALSA_CARDS,其中ALSA_NONPNP、ALSA_DEBUG和ALSA_CARDS三个环境变量在/etc/alsa/alsa-source.conf存在的情况下也可以不加设置。下面分别对其进行说明。
MODULE_LOC:设置源代码的目录。需要注意的是,这里要设置为alsa源代码的上一层目录,即如果你的alsa源代码解压到了/usr/src/modules/alsa-driver/中,它的值应该是/usr/src/modules。如果你是按照上面一步一步的作到这里的,那么它的值就是/usr/src/modules。好了,确定之后执行下面的命令设置它:export MODULE_LOC=/usr/src/modules
ALSA_NOPNP:设置是否支持ISA即插即用声卡。如果你的声卡是ISA插槽的,那么你就需要将它设为n;反之,如果你的声卡是PCI或者其他方式(例如集成的)就将其设为y:export ALSA_NOPNP=y
ALSA_DEBUG:是否编译进调试代码。如果不想深入追究alsa或者改进它的话,设置为n:export ALSA_DEBUG=n
ALSA_CARDS:设置要编译的声卡型号。注意,这个变量很重要,一定要设置正确,否则你的声卡是不可能正常工作的。如果要编译一种以上的声卡,则要采用逗号将它们分开。例如,你要编译Sound Blaster 16和CS4232两种声卡的驱动,可以用命令:export ALSA_CARDS=sb16,cs4232设置。
在设置完成后,便可以进行包的制作了,与上面类似,在kernel的源代码树的顶端,即/usr/src/linux运行如下命令:
make-kpkg --revision number modules_image
需要注意的是这里的number要和你制作好的kernel包的revision number一致。下面可以休息一下,等编译完成后,在/usr/src/中会形成一个类似于alsa-modules-2.4.18_0.9.0rc1+2+p0+debian.1_i386.deb的包文件。
经过一番奋斗,你现在拿到了两个包文件,下面介绍安装和配置。
二、安装和配置
这里主要就是利用Debian自己提供的工具了。首先采用dkpg将两个包顺序安装上:
dpkg -i kernel-images-2.4.18_debian.1_i386.deb
dpkg -i alsa-modules-2.4.18_0.9.0rc1+2+p0+debian.1_i386.deb
然后运行alsaconf进行配置工作。在弹出的界面中一路确定,直到它让你选择你的声卡,选择相应的声卡,确定,这时可能会问一些问题,其中很多是有关声卡细节的,如果知道可以输入,如果不知道便可以像笔者一样一路回车即可。需要注意的是,可能这个alsaconf的脚本是较早时编辑的,因此它在/etc/alsa/modutils目录下产生了一个0.5的配置文件,但是用该文件无法正确驱动声卡,因此,到该目录下直接cp 0.5 0.9,生成相应于alsa版本的配置文件。重新启动,选择新的kernel进入系统。此时,声卡默认是静音的,而且音量为0,你可以用console下的amixer进行调节(请man amixer,因为笔者没有用过它,不知道使用方法, ),也可以进入xwindow后用gnome下的Audio Mixer或类似的程序调节即可。现在享受一个多姿多彩的Debian GNU/Linux吧。
注1:本文在写作过程中主要参考了随alsa-source一起发布的文件,原文见/usr/doc/alsa-source/README.Debian.gz,在此感谢作者Masato Taruishi <taru@debian.org>
注2:感谢kernel-pakcage和alsaconf以及其它Debian工具的制作者,他们的工作比商业公司的还要杰出。
注3:本文自由发布,可以任意复制、修改、转载,不需通知作者,但请将不妥之处通知作者(梁萌,<mengliang99@sohu.com>),以便改进,谢谢! |
|