Vraag & Antwoord
bash / script vraagje
3 antwoorden
- Kan iemand mij uitleggen hoe de code werkt om te checken of Alsa al is gestart. Ofwel, door wat wordt dit geinterpreteerd?
[code:1:bd49ea7586]
alsactl=/usr/sbin/alsactl
asoundcfg=/etc/asound.state
aconnect=/usr/bin/aconnect
alsascrdir=/etc/alsa.d
depend() {
need bootmisc localmount
before modules
after isapnp
provide alsa-modules
}
start() {
# Start driver if it isn't already up.
if [ -d /proc/asound ]
then
eerror "ALSA driver is already running."
return 1
fi
[/code:1:bd49ea7586]
Tweede vraag, hoe kom ik achter de waarde van i, met welk commando?
[code:1:bd49ea7586]
if [ "$i" != off ]; then
einfon "Starting sound driver: $i "
/sbin/modprobe $i
eend 0
fi
[/code:1:bd49ea7586] - Dit scriptje test met de 'if' regel na 'start()' of de drivers al gestart zijn. Alsa draait al als '/proc/asound' een bestaande directory.
Als $i een string is. kun je hem vergelijken zoals je gedaan hebt. Aan beide kanten verwacht 'test' (de vierkante haken) een string. Zijn het getallen, dan moet je ze vergelijken met '-eq' (equals) en '-ne' (not equals).
Voor meer informatie: typ [code:1:ea223794b2]man bash[/code:1:ea223794b2]Zoek vervolgens op '==' totdat er[code:1:ea223794b2]string1 == string2[/code:1:ea223794b2] in beeld staat. Rond die tekst staan alle commando's van 'test' of '[]'. - Ik ben er nog niet uit. Het feitelijk probleem is dat Alsa voor 8 kaarten de driver probeert te laden, hetgeen resulteert in zeven foutmeldingen, niet erg maar wel irritant.
Dit is de volledige inhoud van /etc/init.d/alsa
[code:1:d4bf264269]
alsactl=/usr/sbin/alsactl
asoundcfg=/etc/asound.state
aconnect=/usr/bin/aconnect
alsascrdir=/etc/alsa.d
depend() {
need bootmisc localmount
before modules
after isapnp
provide alsa-modules
}
start() {
# Start driver if it isn't already up.
if [ -d /proc/asound ]
then
eerror "ALSA driver is already running."
return 1
fi
#
# insert all sound modules
#
ebegin "Initialising ALSA."
drivers="`/sbin/modprobe -c | \
grep -E "^[[:space:]]*alias[[:space:]]+snd-card-[[:digit:]]" | \
awk '{print $3}'`"
for i in $drivers; do
if [ "$i" != off ]; then
einfon "Starting sound driver: $i "
/sbin/modprobe $i
eend 0
fi
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
ewarn "No mixer config in $asoundcfg, you have to unmute your card!"
else
if [ -x $alsactl ]; then
$alsactl -f $asoundcfg restore
else
eerror -e "ERROR: alsactl not found!"
fi
fi
fi
#
# run card-dependent scripts
for i in $drivers; do
t=${i##snd-}
if [ -x $alsascrdir/$t ]; then
$alsascrdir/$t
fi
done
}
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
}
stop() {
if [ ! -d /proc/asound ]
then
eerror "ALSA driver is not loaded."
return 0
fi
ebegin "Shutting down ALSA modules."
# Call terminate function first to kill the processes, holding the drivers.
terminate
#
# store driver settings
#
if [ -x $alsactl ]; then
$alsactl -f $asoundcfg store
else
ewarn -n "WARNING: !!!alsactl not found!!! "
fi
#
# remove all sound modules
#
/sbin/lsmod | grep -E "^snd" | grep -v "snd-hammerfall-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
/sbin/rmmod gameport 2> /dev/null
eend 0
}
[/code:1:d4bf264269]
De foutmelding is: modprobe: can't load soundcard 1 (enz)
Ik vraag mij af of dit uit dit script afkomstig is, of komt het ergens anders vandaan?
BTW: for i in $driver > i = snd-cmipci
Beantwoord deze vraag
Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.