自己编译alsa驱动该选哪些包?

CPU/显卡/打印机/USB设备等硬件问题
回复
mech
帖子: 466
注册时间: 2007-09-06 16:07

自己编译alsa驱动该选哪些包?

#1

帖子 mech » 2009-03-11 18:55

alsa的网站上有如下的包:
Current versions
* alsa-driver-1.0.19 这个肯定是要的
* alsa-lib-1.0.19 这个是否要?
* alsa-utils-1.0.19 可要可不要
* alsa-tools-1.0.19 可要可不要
* alsa-firmware-1.0.19 这个是否要?
* alsa-plugins-1.0.19 可要可不要
* alsa-oss-1.0.17 可要可不要
* pyalsa-1.0.17 可要可不要
hitly
帖子: 391
注册时间: 2006-02-20 0:27

Re: 自己编译alsa驱动该选哪些包?

#2

帖子 hitly » 2009-03-12 6:56

我是在LFS上面装ALSA时边做边做的笔记,可能有点乱,特别是后面的,可以将就看看。。。。


#ALSA Library
wget -c http://alsa.cybermirror.org/lib/alsa-lib-1.0.19.tar.bz2
tar xvf alsa-lib-1.0.19.tar.bz2
cd alsa-lib-1.0.19
./configure
make
make install &&
install -v -m644 -D doc/asoundrc.txt \
/usr/share/doc/alsa-lib-1.0.19/asoundrc.txt
cd ..
rm -rf alsa-lib-1.0.19

#ALSA Plugins
wget http://alsa.cybermirror.org/plugins/als ... 19.tar.bz2
tar xvf alsa-plugins-1.0.19.tar.bz2
cd alsa-plugins-1.0.19
./configure
make
make install &&
install -v -m755 -d /usr/share/doc/alsa-plugins-1.0.19 &&
install -v -m644 doc/{README*,*.txt} \
/usr/share/doc/alsa-plugins-1.0.19
cd ..
rm -rf alsa-plugins-1.0.19


#ALSA Utilities
wget http://alsa.cybermirror.org/utils/alsa- ... 19.tar.bz2
tar xvf alsa-utils-1.0.19.tar.bz2
cd alsa-utils-1.0.19
sed -i -e 's/^\(man_MANS[ \t]*=[ \t]*\).*$/\1/' alsactl/Makefile.*
./configure &&
make
make install
cd ..
rm -rf alsa-utils-1.0.19

#ALSA Tools 里面有很多个,一个一个的安装,可以选择性的吧,应是?ld10k1 must be built before ql10k1
wget http://alsa.cybermirror.org/tools/alsa- ... 19.tar.bz2
tar xvf alsa-tools-1.0.19.tar.bz2
每个包的安装用:
./configure --prefix=/usr &&
make
make install

#ALSA Firmware
wget -c http://alsa.cybermirror.org/firmware/al ... 19.tar.bz2
tar xvf alsa-firmware-1.0.19.tar.bz2
cd alsa-firmware-1.0.19
./configure --prefix=/usr &&
make
make install
cd ..
rm -rf alsa-firmware-1.0.19

#ALSA OSS
wget http://alsa.cybermirror.org/oss-lib/als ... 17.tar.bz2
tar xvf alsa-oss-1.0.17.tar.bz2
cd alsa-oss-1.0.17
./configure &&
make
make install
cd ..
rm -rf alsa-oss-1.0.17

#ALSA Driver
wget http://gd.tuwien.ac.at/opsys/linux/alsa ... 19.tar.bz2
tar xvf alsa-driver-1.0.19.tar.bz2
cd alsa-driver-1.0.19
./configure --with-kernel=/lib/modules/$(uname -r)/source \
--with-cards=intel8x0 \
--with-oss=yes \
--with-isapnp=no
make &&
make install
./snddevices #如果这是你第一次安装ALSA驱动,你必须到ALSA驱动的源代码目录,用下面的命令在/dev下创建音频设备.
cd ..
rm -rf alsa-driver-1.0.19
上面的intel8x0 ,是我的机子这样,找出自己是什么的才好哟。。下同。
配置文件:
cat >> /etc/modules.conf << "EOF"
alias char-major-14 soundcore
alias char-major-116 snd

alias snd-card-0 snd-intel8x0

alias sound-slot-0 snd-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-midi
EOF

这个配置文件好像可以由alsaconf自动配置的,但我运行了找不到任何的东西,算了,就手动配置/etc/modules.conf文件。
其实我在DEBIAN里面的是这样的
alias snd-card-0 snd-intel8x0
options snd-intel8x0 index=0


在编辑完 /etc/modules.conf 文件后,你需要运行 depmod. 如果你是为你目前在运行的内核编译的声卡驱动,那么你只需要运行一下
depmod
,如果你编译的声卡不是为你现在运行的内核版本编译的, 你就要运行以下代码
depmod -a 2.6.19 -F /boot/System.map-2.6.19

加载模板:modprobe snd-intel8x0
注意:有时第一次执行alsa模块加载操作后,会出现一些出错信息,此时可重启一次系统,再加载一次模块看是否能解决问题。

使用下列命令检验声卡驱动:
#cat /proc/asound/cards
我的显示为:
0 [ICH ]: NFORCE - Intel ICH
Intel ICH with ALC655 at irq 10
加载成功了。。

用命令alsamixer来打开声音调节。用M来打开声音,因为默认是静音的。
我装好了XMMS,再试一下,能听到声音了。
保存音量配置,执行:alsactl store

搞定了。

在DRIVER这一段里,一开始我./configure时说我把声音编译进内核了,You have built-in ALSA in your kernel.不让我make,那个时候alsamixer能运行,应该就可以用,不用装DRIVER都行。
我一开始也不懂嘛,其实现在也是不懂的。就重新编译过内核,尝试声音部分的都去掉,安了ALSA的DRIVER之后以为就大吉了,结果还是有问题出来,没法加载我的声卡的模块。。把原来SOUND CARD SURPORT是编译进内核的,改成了编成模片,就是Y改成了M了,在make menuconfig下改的,有两个怎么样都是×的,没法变成M。


补充说一下/etc/modules.conf的东西。关于参数ac97_quirk=6,有时可能会用得上的。
卸载内核模块
rmmod snd_intel8x0
如果提示
ERROR: Module snd_intel8x0 is in use
请找关闭所有你正在使用声卡的程序,一个小tip就是你在面板删除那个小喇叭,应该就好了。
然后再运行上面的命令。
加载内核模块,这里要加上ac97_quirk=*的参数
modprobe snd_intel8x0 ac97_quirk=6
测试有没有声音,如果不行,再把6换成7,重复上面动作。。。到可以为止
找到ac97_quirk的值后,在/etc/modules.conf 中添加一个选项
options snd-intel8x0 ac97_quirk=6

其他几点补充说明
1.ALSA的安装一般没有什么困难,但如果出现错误,请多执行lsmod,因为alsa是以模块形式加载的,可通过lsmod的输出信息得知alsa的加载情况,从而判断出错原因。
其中:
snd为alsa的核心模块,为声卡驱动模块及其它alsa的模块所调用,首先载入。如果没有它,alsa将不能工作。
soundcore为linux内核声音支持模块。snd需要它。
2.如果alsa成功编译,模块成功加载,音量调节也没错的话,所以步骤都正确执行却依然无声的话,请参考alsa的文档,看看是否该声卡需要附加特定参数。例如es1988芯片的声卡便可能需要加特定的参数才能发声。笔记本的用户特别需要注意这一点。

这一篇是写得相当的乱,没办法,不好整理呀。
可以去LinuxSir.org的硬件版块看置顶文章,里面可以学很多东西。
我就是对着那里搞定的。
Linux mylinux 2.6.37.3-mylinux #1 SMP Fri Feb 18 19:52:03 CST 2011 i686 GNU/Linux

==
境由心造,事在人为!
==
http://www.open2l.com
==
hitly
帖子: 391
注册时间: 2006-02-20 0:27

Re: 自己编译alsa驱动该选哪些包?

#3

帖子 hitly » 2009-03-12 6:59

可以看看BLFS,或者CBLFS上面的东西,都有依赖关系的,DRIVER不一定要的,可以编出内核。LIB肯定是要的,算是基础来的。。。
Linux mylinux 2.6.37.3-mylinux #1 SMP Fri Feb 18 19:52:03 CST 2011 i686 GNU/Linux

==
境由心造,事在人为!
==
http://www.open2l.com
==
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 自己编译alsa驱动该选哪些包?

#4

帖子 eexpress » 2009-03-12 9:02

apt-get 的 source build-dep 这些参数,都看过?
别瞎折腾。
● 鸣学
mech
帖子: 466
注册时间: 2007-09-06 16:07

Re: 自己编译alsa驱动该选哪些包?

#5

帖子 mech » 2009-03-12 9:08

嘿嘿,就是想升级一下驱动。
现在装好了,用realtek的驱动,它里面有个install的脚本,打开看了下,它只装了driver、lib、utility这三样,然后是些设置。
下面就是它的内容,就是不知道我64位的系统,##for x86 到##for x86_64这段是不是要执行?看起来这段对32位和64位应当都是需要的,为何还特意注明是 for x86?

代码: 全选

#!/bin/sh

######## VERSION 1.0 ########

KERNEL_VER=`uname -r`

. ./version

echo ".....Decompress Driver source v1.0.19-$ver"
tar xvpfj alsa-driver-1.0.19-$ver.tar.bz2 > /dev/null 2>&1
echo ".....Decompress ALSA Library source v1.0.19"
tar xvpfj alsa-lib-1.0.19.tar.bz2 > /dev/null 2>&1
echo ".....Decompress ALSA Utility v1.0.19"
tar xvpfj alsa-utils-1.0.19.tar.bz2 >/dev/null 2>&1
#echo ".....Decompress XRealMixer v0.5"
#tar xvpfj xrmix-0.5.tar.bz2 > /dev/null 2>&1
sync

echo "Remove old sound driver"
if [ -d /lib/modules/$KERNEL_VER/kernel/sound ]; then
   rm -rf /lib/modules/$KERNEL_VER/kernel/sound/pci > /dev/null 2>&1
   rm -rf /lib/modules/$KERNEL_VER/kernel/sound/acore > /dev/null 2>&1
   rm -rf /lib/modules/$KERNEL_VER/kernel/sound/core > /dev/null 2>&1
fi

## remove driver modules
if [ -f /etc/rc.d/init.d/alsasound ]; then
   /etc/init.d/alsasound stop
   rmmod snd-page-alloc > /dev/null 2>&1 
   rmmod soundcore > /dev/null 2>&1
fi

sleep 2

echo "Compile Driver........"
cd alsa-driver-1.0.19-$ver
./configure --with-cards=hda-intel 
make
make install
./snddevices
cd ..

## for x86
echo "Remove old alsa library"
rm -rf /lib/libasound.* > /dev/null 2>&1 
rm -rf /lib64/libasound.* > /dev/null 2>&1 
rm -rf /usr/lib/libasound.* > /dev/null 2>&1 
rm -rf /usr/lib64/libasound.* > /dev/null 2>&1

echo "Compile ALSA Library....."
cd alsa-lib-1.0.19
./configure
make
make install
cd ..

echo "Compile ALSA Utility......"
cd alsa-utils-1.0.19
./configure
make
make install
cd ..

#echo "Comiple XrealMixer......"
#cd ./

## for x86_64
if [ -d /usr/lib64 ]; then
  cp -lf /usr/lib/libasound.* /usr/lib64
  cp -lf /usr/lib/pkgconfig/alsa.pc /usr/lib64/pkgconfig
  ldconfig -n /usr/lib64
fi

sleep 1

## del audio stat file
if [ -f /etc/asound.state ]; then
   rm -rf /etc/asound.state > /dev/null 2>&1
fi

## alsa driver sndstat file relink
rm -rf /dev/sndstat > /dev/null 2>&1
ln -s /proc/asound/oss/sndstat /dev/sndstat

## sample wave
if [ -d /usr/share/sounds/alsa ]; then
     bzip2 -d test.wav.bz2
     cp -f test.wav /usr/share/sounds/alsa
     bzip2 test.wav
else
     mkdir /usr/share/sounds/alsa
     bzip2 -d test.wav.bz2
     cp -f test.wav /usr/share/sounds/alsa
     bzip2 test.wav
fi

echo "Remove Folder....."
rm -rf alsa-driver-1.0.19-$ver > /dev/null
rm -rf alsa-lib-1.0.19 > /dev/null
rm -rf alsa-utils-1.0.19 > /dev/null
alsaconf
回复