误区之一:看到论坛的好多弟兄,总认为只要在线升级了alsa-lib 和alsa-utils 或 alsa-tools 就能解决声卡不发声的问题;其实不是这样的;因为起关健作用的是内核,而内核中的声卡驱动也是来自alsa-driver ;所以我们要尝试升级 alsa-driver 才能解决问题,只升级alsa-lib和alsa-utils 有何用?声卡的驱动并没有更新;有时升级alsa-lib 和alsa-utils 或许也能让声卡发声;只能说明是alsa-lib或alsa-utils存在了问题才导致声卡不发声;
误区之二:也有弟兄认为驱动声卡是一定要重新从 kernel.org 下载内核,然后自己编译内核来解决声卡的问题;通过kernel.org 下载的内核,是能解决您的问题;但kernel.org 的内核集成声卡驱动也是来自于 alsa-project.org ;如果我们为了解决声卡驱动,没有在尝试用 alsa-driver 新版本的情况下,是没有必要重新编译内核的;
正确观点:只要内核中的soundcore 是以模块的形式编译的,并且通过modinfo soundcore查看版本信息输出,我们就没有太大必要重编内核;因为系统几乎对所有的声卡及设备都有编译进去;所以我们先不要重编内核;除非做了升级 alsa-driver后,还是不能解决问题,这时才能重编译核;alsa-driver 是和内核配置文件相关联的;也就是说,alsa-driver 是根据内核的配置文件来进行判断,对哪些声卡应该支持等;如果内核的配置文件没有配置对您的声卡进行支持;这时才需要我们来配置内核;另外内核中对声卡的支持的驱动也是来自于 alsa-driver ;
3、尝试编译安装ALSA ;
比如我下载了alsa 1.0.10rc1 版本,要下载配套的,比如 alsa-driver、alsa-lib、alsa-oss、alsa-utils 要下载同一系列的版本;我们先要安装alsa-lib;然后再安装其它的包;
警告: 在编译alsa所有包的时候,对于Fedora Core ,请不要卸载系统自带的alsa-lib 及alsa-utils 等;这样能欺骗系统,说明系统完整的;alsa是基础包之一,不是随便可以卸载的,因为有很多的包依赖这几个旧的包;比如xmms,如果您把alsa- lib系统自带的包卸掉了,xmms就不能用 alsa驱动,只能用oss驱动了,除非您在升级alsa-lib后重新编译xmms;另外最严重的后果,如果卸掉了这几个包,会破坏系统整体的依赖关系,yum和apt升级系统将无关正常运行;
代码:
[root@localhost alsa]# tar jxvf alsa-lib-1.0.10rc1.tar.bz2
[root@localhost alsa]# cd alsa-lib-1.0.10rc1
[root@localhost alsa-lib-1.0.10rc1]# ./configure ;make ;make install
[root@localhost alsa]# tar jxvf alsa-utils-1.0.10rc1.tar.bz2
[root@localhost alsa]# cd alsa-utils-1.0.10rc1
[root@localhost alsa-utils-1.0.10rc1]# ./configure ;make ;make install
[root@localhost alsa]# tar jxvf alsa-driver-1.0.10rc1.tar.bz2
[root@localhost alsa]# cd alsa-driver-1.0.10rc1
[root@localhost alsa-driver-1.0.10rc1]# ./configure ;make ;make install
[root@localhost alsa]# tar zxvf alsa-oss-1.0.10rc1.tar.bz2
[root@localhost alsa]# cd alsa-oss-1.0.10rc1
[root@localhost alsa-oss-1.0.10rc1]# ./configure ;make;make install
提示:其中alsa-driver 可以定义声卡来编译,这个对于老手还比较适用,如果您还不太会查看alsa的文档的话,就直接用通用的./configure;make;make install 来安装;这样所有的声卡都安装进去了;
4、尝试通过用新的ALSA驱动来配置声卡 ;
在这个时候,我们才用到前面讲的基础知识;呵。。。。。书到用时方恨少;不学习怎么也不行;
1)通过alsaconf 来配置声卡;
我们要通过alsaconf 来配置,看能否找到声卡;在运行alsaconf的时候,对于FC4请修改/etc/modprobe.conf 对其它的版本按前面的说,可能是 /etc/modules.conf ,把所有关于声卡的项目前面加#注掉,或者删除;
在选行alsaconf时,我们有必要运行一下如下的两个命令;目的是更新文件的索引数据库;
代码:
[root@localhost beinan]# rpm -rebuilddb 这个是针对RPM包的系统的;
[root@localhost beinan]# updatedb然后再来运行alsaconf
代码:
[root@localhost beinan]# /usr/sbin/alsaconf
我们用过alsaconf后,要查看 /etc/modprobe.conf 或/etc/modules.conf ;还要lsmod ,看声卡模块有没有加载进来。如果没有加载进来,我们还要会用 modprobe 加载模块,前面有说,请回头看看;
如果运行 alsaconf 后,配置文件 /etc/modprobe.conf 并没有发生变化,没有发现声卡的配置内容;您要到 alsa-project.org 上查看相应的信息,只看关于 /etc/modprobe.conf 的内容就行;比如他在上面说的是modules.conf 的,您可以直接写到 modprobe.conf (如果是Fedora 的话),各个系统的配置文件都差不多,如果不是modprobe.conf就是modules.conf ;
请参见:ALSA 声卡支持列表和文档
请根据文档所说的来加载模块和配置 modprobe.conf或 modules.conf ;
2) 调节音量;
我们可能已经把声卡驱动起来了,但没有声音,所要一定要打开音量;调节工具:kmix 、aumix 、alsamixer及system-config-soundcard等工具;
3)值得注意是的,如果您播放mp3时,要注意以下系统;
自从Redhat 8.0以后,也就是说 Redhat 9.0 ,Fedora 1.0,Fedora 2.0,Fedora 3.0 ,Fedora 4.0的媒体播放软件不再对mp3提供支持;究其原因是版权方面的原因;但这不是意味着我们不能在Fedora 系统中让播放软件支持 mp3;我们可以安装mp3支持补丁或者下载全新的播放器;而这一切都离不开在线安装工具 apt或yum ;
提示:测试。。。。能成功吗? 不成功接着看下面。。。。。。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
下半场:前半场下来,您还是不能解决声卡,只能用最后一招;重新编译内核~
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
五、重新编译内核;
1、为什么要编译内核?
因为您的声卡没有被当前所用的内核版本配置进去,所以我们要新编译内核;
2、我不会编内核怎么办?;
可能新手弟兄会说,我不会编内核怎么办?答曰:不会编内核,就得学习,谁也不是天生就会的;学习改变命运,不是吗?其实编译内核目前看来是极为简单的事,只是我们第一次接触到Linux,太习惯Windows的点鼠标,不太习惯Linux的命令行操作罢了。只要努力,没有什么做不成的;你看北南这水平都会写教程 。呵。。。坐在电脑前大侠如果认为北南写的这篇文章或许对你有所帮助的话,那您也能行;加油~~~~
3、内核的选择;
一般的情况下选择发行版所提供的内核升级包及源码包要好;您可以通过 apt+synaptic 来选择装,但不要把老内核删除,系统的完整性是很重要的;一般的情况下如果通过新内核的在线升级能解决问题的,我们也没有必要编译了;我们前面已经说过了;如果不能用新的内核来驱动,我们可以在新的内核的基础上进行编译,当然我们必须要下载kernel-devel 或者 kernel-source 包;
为什么要选择系统提供的内核及源码升级包呢?
一是主要是为了方便,对于大多数的选项,我们按默认就好了,我们只是针对比较重要的地方改一改;比如对于Fedora Core 4.0 ,目前在线升级源有很多版本可下载使用;我们要把同一版本的内核包及源码包都要安装;
二是如果我们用新编的内核启动不了系统,可以用老内核来引导,这是为了系统的安全。对新手和老手都是适用的;
当然您也能从 kernel.org 上下载最新最稳定的内核;目前最新版本是 2.6.13 ;kernel.org 下载的内核包含的声卡驱动也是来自 alsa-driver ;
4、编译内核参考文档;
《编译内核操作流程 ──为新手指南》
根据《编译内核操作流程 ──为新手指南》 中所说的,有针对性的来解决问题;编译好内核后,用alsaconf 来配置声卡;或者重新编译 alsa-lib 、alsa-oss、alsa-utils 等;经过我的测试,一般的情况下重新编译过内核后,用 alsaconf 配置一下就能用了;
后记:
至此,关于声卡的问题就算解决流程就算完工了;如果您认为我的这篇文档写的还不够详细,或者不能解决您的问题;问题无非是两种,一是您的声卡没有被ALSA所支持,请查相应的列表;二是如果ALSA已经支持了您的声卡,您看了我的文档还是不能解决您的问题(看与不看只是一个假设,就看我的文档值不值得您一看了);
对于第二种情况无非又是有两种原因,一是北南写的文档不行,您看不懂;二是您可能是真的初学者,可能需要更多的尝试和努力;
如果还是解决不了,或行您静下心仔细看一下本文档所提到的流程,或许能找到一点对您有所启示的内容;最好是... ...
再解决不了怎么办呢,如果您和北南在同一个城市的话,把机器抱到我这里,我感觉差不多能解决吧;哈哈。。。。。。。。。
