Vraag & Antwoord

OS Linux

bash / script vraagje

Anoniem
water
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.