|
发表于 2002-7-31 09:12:32
|
显示全部楼层
我试了一下,在我的红旗3.0上,可以用内核驱动,也可以用alsa驱动,用alsa驱动时,ntsysv里有个叫alsasound服务的选项可以钩上,这样每次启动后如果运行kmix,就会发现多了一个叫mixer00的标签(原来用内核驱动时只有一个STAC9708的标签)可以选择,而原来的STAC9708的标签变成了空白。在mixer00的标签上选好音量后保存为默认,下次开机也就ok了
(在红旗上,无论怎么是用内核驱动还是alsa驱动,无法playmidi,我的声卡是SBPCI28D)
我将我的alsasound脚本贴上来,大家试试有没有用:(新建一个叫alsasound的文本,将下面的内容复制粘贴进去,保存,然后将这个alsasound文件拷贝进/etc/init.d目录下,同时用命令chmod +x alsasound给它添加可执行属性,用右键添加可执行属性也可以;然后运行ntsysv,应该就可以见到有alsasound的选项,试试将它选上,重起一下再进系统看kmix有没有其他标签出来)
#!/bin/bash
#
# alsasound This shell script takes care of starting and stopping
# the ALSA sound driver.
#
# This script requires /usr/sbin/alsactl and /usr/bin/aconnect programs
# from the alsa-utils package.
#
# Copyright (c) by Jaroslav Kysela <[email protected]>
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#
# For RedHat 5.0+:
# chkconfig: 2345 87 14
# description: ALSA driver
#
# modified to visually fit into SuSE 6.0+ by Philipp Thomas <[email protected]>
# further improvements by Bernd Kaindl, Olaf Hering and Takashi Iwai.
#
### BEGIN INIT INFO
# Provides: alsasound
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 5
# Default-Stop:
# Description: Loading ALSA drivers and store/restore the current setting
### END INIT INFO
if [ -r /etc/rc.config ]; then
. /etc/rc.config
rc_warning="\033[m33m\033[1m"
else
rc_done="done"
rc_warning=""
rc_reset=""
fi
if [ x$START_ALSA != xno ]; then
START_ALSA=yes
fi
if [ x$START_ALSA_SEQ != xno ]; then
START_ALSA_SEQ=yes
fi
# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}
# Force execution if not called by a runlevel directory.
test $link = $base && START_ALSA=yes
test "$START_ALSA" = yes || exit 0
alsactl=/usr/sbin/alsactl
asoundcfg=/etc/asound.state
aconnect=/usr/bin/aconnect
alsascrdir=/etc/alsa.d
function start() {
#
# insert all sound modules
#
drivers=`/sbin/modprobe -c | \
grep -E "^[[:space:]]*alias[[:space:]]+snd-card-[[:digit:]]" | \
awk '{print $3}'`
for i in $drivers; do
echo -n "Starting sound driver: $i "
/sbin/modprobe $i
echo -e "$rc_done"
done
#
# insert sequencer modules
#
if [ x"$START_ALSA_SEQ" = xyes -a -r /proc/asound/seq/drivers ]; then
t=`cut -d , -f 1 /proc/asound/seq/drivers`
if [ "x$t" != "x" ]; then
/sbin/modprobe $t
fi
fi
#
# restore driver settings
#
if [ -d /proc/asound ]; then
if [ ! -r $asoundcfg ]; then
echo "No mixer config in $asoundcfg, you have to unmute your card!"
else
if [ -x $alsactl ]; then
$alsactl -f $asoundcfg restore
else
echo -e "${rc_warning}ERROR: alsactl not found${rc_reset}"
fi
fi
fi
#
# run card-dependent scripts
for i in $drivers; do
t=`echo $i | sed -e 's/snd-card-\(.*\)/\1/'`
if [ -x $alsascrdir/$t ]; then
$alsascrdir/$t
fi
done
}
function terminate() {
#
# Kill processes holding open sound devices
#
# DEVS=`find /dev/ -follow -type c -maxdepth 1 -print 2>/dev/null | xargs ls -dils | grep "1*1[46]," | cut -d: -f2 | cut -d" " -f2; echo /proc/asound/dev/*`
ossdevs="/dev/admmidi? /dev/adsp? /dev/amidi? /dev/audio* /dev/dmfm* \
/dev/dmmidi? /dev/dsp* /dev/dspW* /dev/midi0? /dev/mixer? /dev/music \
/dev/patmgr? /dev/sequencer* /dev/sndstat"
alsadevs="/proc/asound/dev/*"
fuser -k $ossdevs $alsadevs 2> /dev/null 1>/dev/null
#
# remove all sequencer connections if any
#
if [ -f /proc/asound/seq/clients -a -x $aconnect ]; then
$aconnect --removeall
fi
}
function stop() {
#
# store driver settings
#
if [ -x $alsactl ]; then
$alsactl -f $asoundcfg store
else
echo -n -e "${rc_warning}!!!alsactl not found!!!${rc_reset} "
fi
#
# remove all sound modules
#
/sbin/lsmod | grep -E "^snd" | grep -v "snd-rme9652_mem" | while read line; do \
/sbin/rmmod `echo $line | cut -d ' ' -f 1`; \
done
# remove the 2.2 soundcore module (if possible)
/sbin/rmmod soundcore 2> /dev/null
}
# See how we were called.
case "$1" in
start)
# Start driver if it isn't already up.
if [ ! -d /proc/asound ]; then
start
else
echo "ALSA driver is already running."
fi
;;
stop)
# Stop daemons.
if [ -d /proc/asound ]; then
echo -n "Shutting down sound driver: "
terminate
stop
echo -e "$rc_done"
fi
;;
restart|reload)
$0 stop
$0 start
;;
status)
if [ -d /proc/asound ]; then
echo -n "ALSA sound driver loaded."
else
echo -n "ALSA sound driver not loaded."
fi
echo
;;
*)
echo "Usage: alsasound {start|stop|restart|status}"
exit 1
esac
exit 0 |
|