Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

bash / script vraagje

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
    mmod `echo $line | cut -d ' ' -f 1`; \
    done
    # remove the 2.2 soundcore module (if possible)
    /sbin
    mmod soundcore 2> /dev/null
    /sbin
    mmod 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.