#!/bin/sh # (c) Mandrakesoft, Chmouel Boudjnah # $Id$ # # sound: This shell script launch the sound on your system. # # chkconfig: 2345 18 69 # description: This shell script launch the sound on your system. . /etc/rc.d/init.d/functions PKLVL=$(cut -f1 /proc/sys/kernel/printk) sysctl -n -w kernel.printk=0 function start_mixer () { # ALSA if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ]; then # is ALSA already configured ? if [[ ! -r /etc/asound.state ]]; then # provide decent default sound level for alsa drivers if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ];then MIXER_SETTINGS=/root/tmp/asound.state_tmp alsactl -f $MIXER_SETTINGS store # set some sane default volume and unmute needed channels: /usr/bin/alsa_default.pl $MIXER_SETTINGS action "Setting mixer settings" alsactl -f $MIXER_SETTINGS restore rm -f $MIXER_SETTINGS return 0 fi # if we've not alsa-utils, we'll fallback on OSS initialization below else # Not first boot: # Done by alsa service but only if sound service is not # enabled (hance this code path). # We'll merge in back aksa service once mdk9.2 is released. # [but we'll still handle both aumix & alsactl in order # to manage packages removing / driver switch] action "Loading mixer settings" /usr/sbin/alsactl restore return 0 fi fi # OSS if egrep -q '(sparcaudio|sound)' /proc/devices 2>/dev/null && \ [ "$retval" -eq 0 ] && [ -x /usr/bin/aumix ];then if [ ! -r /etc/.aumixrc ];then action "Setting mixer settings" /usr/bin/aumix -v80 -w80 -c80 else action "Loading mixer settings" /usr/bin/aumix -f /etc/.aumixrc -L fi fi } function stop_mixer () { if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ];then # done by alsa service (to merge back after mdk9.2 release) #action "Saving mixer settings" /usr/sbin/alsactl store return 0; fi if egrep -q '(sparcaudio|sound)' /proc/devices 2>/dev/null && [ -x /usr/bin/aumix ];then action "Saving mixer settings" /usr/bin/aumix -f /etc/.aumixrc -S fi } function module () { opt="" phrase=$1 alias=$2 [ -n "$3" ] && opt="-r" module=`/sbin/modprobe -c | egrep -s "^alias( |\t)+"$alias"( |\t)+" | awk '{ print $3 }'` if [ -n "$module" ] && [ "$module" != "off" ];then action "$phrase ($module)" modprobe "$opt" $module return $? fi } case $1 in start) retval=0 if [ ! -d /proc/asound ];then module "Loading sound module" sound || retval=1 /sbin/modprobe -c | awk '/^((alias)|(probe)) +sound-slot-[0-9]/ {print $2}' | ( \ while read line; do [[ $line = snd-card-* ]] && continue #we do it via alsa script module "Loading sound module" $line || retval=1 done ) module "Loading midi module" midi fi start_mixer; touch /var/lock/subsys/sound ;; stop) # i should have the same semantic of alsa script than oss script, # but i do not :-(, patches welcome. stop_mixer; rm -f /var/lock/subsys/sound ;; status) if egrep -q '(sparcaudio|sound)' /proc/devices;then gprintf "Sound loaded" echo fi ;; reload) ;; restart) $0 stop $0 start ;; *) echo "Usage: %s\n" "$(basename $0) {start|stop|restart|status}" exit 0 esac sysctl -n -w kernel.printk=$PKLVL exit 0