glug:Ancora la scheda audio...

Ugo Tartaglino tartagli@golem.cm.sissa.it
Wed, 25 Jul 2001 11:29:07 +0200


On Sat, 21 Jul 2001, Andrea Ungaro wrote:

> Ho allora pensato di andare a vedere /etc/rc.d/rc.sysinit e puntualmente =
l=EC=20
> dentro ho trovato quanto sotto. Come si vede, ci sono un po' di if che=20
> condizionano il comando isapnp...
> Il punto =E8: dato che se io levo gli if commentandoli via e lasciando so=
lo il=20
> comando isapnp mi fa la configurazione e trova i moduli del kernel e poi=
=20
> funge (sperimentato), qualcuno saprebbe spiegarmi cosa significano quegli=
 if=20
> e come mai si presenta il problema? (Cio=E8 come mai quegli if mi escludo=
no il=20
> comando isapnp?)
> Potrei sistemare la cosa mettendo un po' di commenti e via, ma non sarebb=
e=20
> elegante! E soprattutto, voglio capire perch=E8. Help!
>=20

Nota: la descrizione del comando if si trova nella man page della shell
(man bash), perche` e` un comando implementato dentro la shell.
if ha questa sintassi:
if istruzioni
 altre eventuali istruzioni
then
 istruzioni
else
 istruzioni
fi
(si termina con un if al contrario!)



> # check for arguments
> if grep -iq nopnp /proc/cmdline >/dev/null 2>&1 ; then

Si esegue il comando "grep -iq nopnp /proc/cmdline >/dev/null 2>&1"
Se il comando da exit value 0 (cioe` se grep ha trovato la stringa
nopup nel file /proc/cmdline), allora si definisce

>     PNP=3D

altrimenti si definisce

> else
>     PNP=3Dyes
> fi


> # set up pnp
> if [ -x /sbin/isapnp -a -f /etc/isapnp.conf -a ! -f /proc/isapnp ]; then

Si esegue un test ( [ ... ] , vedi "man bash" e cerca test). Nel test si=20
controlla se:
 - il file /sbin/isapnp esiste ed e` eseguibile ( -x /sbin/isapnp )
    e ( -a )
 - esiste il file regolare /etc/isapnp.conf ( -f /etc/isapnp.conf )
    e ( -a )
 - non esiste il file regolare /proc/isapnp ( ! -f /proc/isapnp )
Quando queste condizioni sono verificate si passa al nuovo ciclo if:

>     if [ -n "$PNP" ]; then

Se il contenuto della stringa $PNP non ha lunghezza 0 (-n "$PNP"), cioe`
se prima si era definito PNP=3Dyes

> =09action "Setting up ISA PNP devices: " /sbin/isapnp /etc/isapnp.conf

E questo action che comando e`? Sara` mica un alias o una function
definito dagli script della Mandrake? Probabilmente con un po' di ricerche
dovresti capire cosa fa il comando "action"; immagino che sia una function
che scrive sullo schermo il messaggio contenuto nel primo parametro e usa
i parametri successivi per costruire il comando da eseguire. Probabilmente
si poteva scrivere qualcosa come
echo "Setting up ISA PNP devices: "
/sbin/isapnp /etc/isapnp.conf

>     else
> =09action "Skipping ISA PNP configuration at users request: " /bin/true

come sopra ...
/bin/true non fa nulla ed esce con successo. C'e` solo un comando piu`
stupido di questo: /bin/false, che non fa niente e` lo sbaglia
sistematicamente (!), terminando con exit value 1  :P

>     fi
> fi

Basta


Vedi tu cosa fare ... chi ha preparato tutti quei controlli e i vari
script deve avere sbagliato qualcosa da qualche parte ... forse l'errore
e` all'inizio: PNP deve essere impostato a yes. Ma non capisco il senso
del comando
 grep -iq nopnp /proc/cmdline >/dev/null 2>&1
anche perche' non so cosa debba contenere il file /proc/cmdline.
Chi ha preparato lo script riteneva che se in /proc/cmdline con compare la
stringa nopnp, la scheda isa non andasse inizializzata a causa della
richiesta dell'utente ("Skipping ISA PNP configuration at users
request: "), ma tu non avevi chiesto nulla, immagino ...

  Ugo