Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 565

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>The Linux Linmodem-HOWTO   : Trucchi e suggerimenti per moduli precompilati utilizzati con kernel di versioni differenti</TITLE>
 <LINK HREF="Linmodem-HOWTO-5.html" REL=next>
 <LINK HREF="Linmodem-HOWTO-3.html" REL=previous>
 <LINK HREF="Linmodem-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="Linmodem-HOWTO-5.html">Avanti</A>
<A HREF="Linmodem-HOWTO-3.html">Indietro</A>
<A HREF="Linmodem-HOWTO.html#toc4">Indice</A>
<HR>
<H2><A NAME="s4">4. Trucchi e suggerimenti per moduli precompilati utilizzati con kernel di versioni differenti</A></H2>

<P>Molti dei drivers per linmodems sono disponibili solamente come moduli binari del kernel precompilati. Di norma, i moduli binari funzionano in modo trasparente solo con il kernel per il quale sono stati compilati. Per questo motivo, riuscire a far funzionare un driver precompilato con il vostro kernel particolare, pu&ograve; rivelarsi una vera sfida.
<P>Dato che il kernel di Linux &egrave; un animale in perpetuo cambiamento, &egrave; una vera sfortuna che molti venditori di modem/chip non abbiano ancora optato per il rilascio dei sorgenti dei loro drivers, cosa che assicurerebbe la vostra e nostra possibilit&agrave; di modificare appropriatamente detti drivers, man mano che i sorgenti del kernel si evolvono. Alcuni dei moduli binari sono stati forzati a funzionare sotto alcuni kernel pi&ugrave; recenti utilizzando vari trucchi, come verr&agrave; descritto sotto; comunque, anche se un modulo fosse reso funzionale, &egrave; buona cosa usarlo il meno possibile.
Citando una email da Mark Spieth, 
<P>"Un driver non potr&agrave; mai lavorare in maniera appropriata, se sono presenti dei simboli irrisolti, dato che ci&ograve; significa che c'&egrave; qualcosa che non funziona. In pi&ugrave; vuol dire che quel qualcosa che avrebbe dovuto essere chiamata chiamer&agrave; una cosa diversa nel kernel e ci&ograve; potrebbe essere qualsiasi cosa. Ci&ograve; &egrave; <EM>molto</EM> male."
<P>Quindi, siate cauti nell'utilizzare moduli binari con un kernel di versione differente; procedete a vostro rischio. Se reputate fondamentale che il vostro modem funzioni, considerate di tornare ad una versione precedente del kernel che corrisponda a quella del modulo - una prospettiva senza dubbio ridicola. Nonostante questi avvertimenti, comunque, molti hanno utilizzato kernel e moduli non corrispondenti, incontrando solo noie minori (occasionali kernel panic) usando i trucchi e strumenti come i seguenti.
<P>
<H2><A NAME="ss4.1">4.1 Fixscripting</A>
</H2>

<P>Mark Spieth ha contribuito ad una serie progressivamente migliorata di "fixscripts",
per editare un modulo binario in maniera tale da eliminare gli avvertimenti di discrepanza di versione. L'inserzione del modulo cos&igrave; "fissato" procede senza l'opzione -f, cio&egrave; semplicemente <CODE>insmod</CODE> <EM>nome_del_modulo</EM>. Le versioni pi&ugrave; recenti rinominano anche i simboli del modulo per farle corrispondere con quelle esportate dal kernel, in maniera tale che i messaggi di errore "Unresolved symbols" non vengano ritornati dal test <CODE>depmod -e</CODE>. Bisogna evidenziare che questi cambiamenti sono quasi esclusivamente cosmetici - &egrave; ancora raccomandabile utilizzare il modulo il meno possibile.
<P>Per usare il fixscript su, per esempio, il modulo binario Lucent ltmodem.o (che non &egrave; attualmente il modulo da utilizzare), create una directory di lavoro, per esempio <CODE>/root/modem</CODE>.  
Reperite l'ultima versione del fixscript da
<A HREF="http://www.test.dclabs.com.au/linmodem/fixscript">http://www.test.dclabs.com.au/linmodem/fixscript</A>. 
Salvate il file come <CODE>fixscript</CODE>.  
Esaminatelo con <CODE>less</CODE> o con il vostro editor preferito, per controllare che non siano stati aggiunti accidentalmente gli hard stops del DOS. Questi appaiono come M in grassetto oppure M sottolineate, oppure come ^M, a seconda del vostro viewer/editor. NOTA: il viewer <CODE>more</CODE> NON mostra gli hard stops del DOS.
<P>Rendete in file eseguibile con <CODE>chmod +x fixscript</CODE>.  
Generate un modulo "fissato" tramite, per esempio
<PRE>
    ./fixscript ltmodem.o ltmodem2217.o
</PRE>
<P>Nessun messaggio di errore dovrebbe apparire testando le dipendenze con
<PRE>
    depmod -e ltmodem2217.o
</PRE>
<P>l'inserimento dovrebbe avere successo con un semplice, non forzato,
<PRE>
    insmod ltmodem2217.o
</PRE>
<P>Il "codice sorgente" fornito con alcuni moduli PCTel (un piccolo file in C) esegue un simile mascheramento quando compilato e linkato con le librerie binarie in quei pacchetti; al contrario il driver parzialmente open-source Lucent <EM>non</EM> compensa nessun cambiamento dell'interfaccia del kernel.  
<P>
<P>
<P>
<H2><A NAME="ss4.2">4.2 Patchare <CODE>tty.h</CODE></A>
</H2>

<P>Nella sua ricerca di far funzionare con kernel successivi al 2.2.14 il driver originale del modem Lucent LT (versione 5.68), totalmente binario, Mark Spieth ha notato che una semplice modifica nel kernel di Linux risolveva le principali incompatibilit&agrave; occorse nel passaggio tra i kernels 2.2.14 e 2.2.16. 
Questo patch non &egrave; pi&ugrave; necessario utilizzando il driver parzialmente binario e parzialmente sorgente (versione 5.78), ma resta utile per coloro con altri modems i cui drivers sia stati compilati con kernels pre-2.2.15.  
<P>Il 2.2.17 <CODE>tty.h</CODE> patchato ed alcuni pacchetti kernel  2.2.17 compilati con questo patch sono disponibili presso 
<A HREF="http://walbran.org/sean/linux/stodolsk/">http://walbran.org/sean/linux/stodolsk/</A>.  
Se preferite editare da voi il file, la linea da spostare &egrave; nella struttura
<CODE>tty_struct</CODE> all'interno di <CODE>include/linux/tty.h</CODE>; questo ha un membro aggiuntivo 
<CODE>poll_wait</CODE> nei kernel pi&ugrave; recenti.
Muovete questo membro alla fine della struttura, cos&igrave; che i restanti offsets saranno gli stessi delle versioni precedenti alla 2.2.15, per cui compatibili con il modulo precompilato. Dopo questa modifica al sorgente sar&agrave; necessario ricompilare kernel e moduli.  
<P>
<P>
<H2><A NAME="ss4.3">4.3 Usare <CODE>ppp.o</CODE> dal Kernel 2.2.14</A>
</H2>

<P>Esiste un trucco per l'uso di moduli binari con kernels successivi al 2.2.15, che nonne richiede la ricompilazione; comunque, dopo la scoperta del patch <CODE>tty.h</CODE> descritto sopra, questo trucco non &egrave; pi&ugrave; necessario, n&eacute; raccomandato. Ci&ograve; consiste nel sostituire il modulo <CODE>/lib/modules/net/ppp.o</CODE> con uno proveniente dal kernel  2.2.14. Christoph Hebeisen (cth(at)sfu.ca) ha riferito che l'uso di ppp.o versione 2.2.14 al posto della versione 2.2.16 con il modulo Lucent, ha fatto s&igrave; che funzionasse con kernels 2.2.16. Willie Green (willjr(at)lcc.net) ha confermato che tale trucco funziona anche con il modulo ESS. Dopo il semplice inserimento di un modulo di supporto versione-corrispondente:
<PRE>
    insmod slhc
</PRE>

Si inserisce il ppp.o discrepante dal sorgente 2.2.14 
<PRE>
    insmod -f ppp.o 
</PRE>

Desideriamo enfatizzare il fatto che questo trucco dell'inserimento forzato &egrave; meno stabile della facile &egrave; pi&ugrave; efficace modifica al file sorgente del kernel  <CODE>tty.h</CODE>, come descritto sopra.
<P>
<P>
<HR>
<A HREF="Linmodem-HOWTO-5.html">Avanti</A>
<A HREF="Linmodem-HOWTO-3.html">Indietro</A>
<A HREF="Linmodem-HOWTO.html#toc4">Indice</A>
</BODY>
</HTML>