Old:Intel PRO/Wireless 3945ABG : Installazione dei moduli senza kernel patching: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
 
(18 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
Ora che avete scaricato i sorgenti della versione del kernel che avete scelto e che li avete installati in una cartella locale, � giunto il momento di compilare il codice. Il primo passo � di configurare il kernel con le opzioni appropriate; in seguito il kernel potr� essere compilato. Entrambe le operazioni sono portate a termine attraverso lo strumento standard ''make''.
{{Old}}
== Versioni aggiornate di Debian ==
Per versioni di Debian da Debian Lenny (5.0) in poi si veda la guida aggiornata [[Intel PRO/Wireless 3945, 3945ABG e 4965: installazione e configurazione]]. Questa guida è compatibile fino '''fino al kernel 2.6.23'''.
== Installazione moduli da repository ufficiali Debian (consigliato) ==
Con l'avvento sui repository Debian (stable, testing e unstable) dei pacchetti contenenti moduli, firmware e regulatory daemon, installazione e configurazione possono essere risolte mediante un semplice <code>apt-get</code>.
Se stiamo usando un kernel precompilato (ad esempio quello installato durante il setup di Debian, oppure scaricato tramite APT) basterà scaricare i moduli <code>ipw3945</code> compilati appositamente per la versione corrente del kernel:
<pre>
# apt-get install firmware-ipw3945 ipw3945d ipw3945-modules-`uname -r`
</pre>


== '''Creare una Configurazione''' ==
=== Caricamento del modulo ===
Il regulatory daemon, installato di default nei runlevel 2, 3, 4, 5, gestisce anche il caricamento del modulo ipw3945 nel kernel Linux; eseguendo iwconfig (come super utenti) dovremmo poter essere in grado di vedere l'interfaccia associata al chip wifi:
<pre>
eth2      unassociated  ESSID:off/any
          Mode:Managed  Channel=0  Access Point: 00:00:00:00:00:00
          Bit Rate=0 kb/s  Tx-Power=20 dBm
          RTS thr:off  Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0  Missed beacon:0
</pre>


La configurazione del kernel risiede in un file chiamato ''.config'' nella cartella principale dell'albero dei sorgenti del kernel. Se avete appena estratto il codice sorgente del kernel, non vi sar� alcun file ''.config'', dovr� quindi essere creato. Pu� essere creato dall'inizio, creato sulla "configurazione predefinita", preso da una versione funzionante del kernel, o preso da quello rilasciato da una distribuzione. Copriremo i primi due metodi adesso, gli ultimi due metodi nel Capitolo 7.
== Installazione mediante compilazione sorgenti (sconsigliato) ==
=== Prerequisiti ===
Prima di seguire quanto riportato nella guida, assicuriamoci di avere a nostra disposizioni gli headers per il nostro kernel. Se abbiamo compilato noi stessi il kernel, allora possiamo essere tranquilli, ma se stiamo usando un kernel precompilato (ad esempio quello installato durante il setup di Debian, oppure scaricato tramite APT) allora dobbiamo necessariamente scaricare il pacchetto Debian contenente gli headers.
Ecco come procedere:
<pre># apt-get install kernel-headers-`uname -r`</pre>


==='''Configurare dall'inizio'''===
=== Software Occorrente ===
Il modo pi� semplice per configurare un kernel � usare il metodo ''make config'':
* [http://bughost.org/ipw3945/ Microcode/Firmware]
<pre>$ cd linux-2.6.17.10
* [http://bughost.org/ipw3945/ Binary Userspace Regulatory Daemon]
  $ make config
* [http://ieee80211.sourceforge.net/ Network Stack ieee80211 per kernel Linux]
make config
* [http://ipw3945.sourceforge.net/ Drivers Intel PRO/Wireless 3945ABG per kernel Linux]
scripts/kconfig/conf arch/i386/Kconfig
È consigliabile scaricare le versioni stabili (quelle con numero di versione che termina con .0) dei sorgenti del driver per Intel PRO/Wireless 3945ABG e dello stack ieee80211.
*
Creiamoci uno spazio di lavoro in cui scaricare e compilare i sorgenti:
* Linux Kernel Configuration
<pre># mkdir ipw3945</pre>
*
*
* Code maturity level option
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?]
Y


*
==== Compilazione e installazione del sottosistema ieee80211 ====
* General setup
<pre>
*
# tar xzvf ieee80211-1.1.14.tgz
Local version - append to kernel release (LOCALVERSION) []
# cd ieee80211-1.1.14
Automatically append version information to the version string
# make
(LOCALVERSION_AUTO) [Y/n/?] Y
</pre>
...</pre>
Potremmo essere avvisati del fatto che nel kernel installato siano già presenti componenti ieee80211:
Il programma di configurazione del kernel proceder� attraverso ogni opzione di configurazione e vi chieder� se la si vuole abilitare o meno. Tipicamente, le possibilit� per ogni opzione sono presentate nella forma <tt>[Y/m/n/?]</tt>. La lettera maiuscola � la scelta predefinita, e pu� essere selezionata semplicemente premendo il tasto Invio. Le quattro scelte sono:
<pre>
* <tt>Y</tt>   Compilare direttamente nel kernel.
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211.ko
* <tt>n</tt>   Lasciare completamente al di fuori del kernel.
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt.ko
* <tt>m</tt>   Compilare come modulo, da caricare se necessario.
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_wep.ko
* <tt>?</tt>   Stampare un breve messaggio descrittivo e ripropone il quesito.
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_ccmp.ko
Il kernel contiene quasi duemila opzioni di configurazioni differenti, quindi rispondere a una domanda su ognuna di esse richiede un notevole dispendio di tempo. Fortunatamente, vi � un modo pi� facile di configurare un kernel: basare la configurazione su una configurazione pre-costruita.
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_tkip.ko
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_wep.mod/lib/modules/2.6.18-suspend2/net/ieee80211/.tmp_versions/ieee80211_crypt_ccmp.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_tkip.mod
/lib/modules/2.6.18-3-686/include/net/ieee80211.h
/lib/modules/2.6.18-3-686/include/net/ieee80211_crypt.h
/lib/modules/2.6.18-3-686/include/net/ieee80211_radiotap.h
Above files found.  Remove? [y],n
</pre>
Rispondendo affermativamente i componenti verranno eliminati e il successivo comando <code>make install</code> provvederà a installare i componenti ieee80211 che stiamo compilando.
Infine (questa istruzione potrebbe necessitare dei diritti di super utente):
<pre>
# make install
# cd ..
</pre>
==== Compilazione e installazione del modulo ipw3945 ====
<pre>
# tar xzvf ipw3945-1.1.3.tgz
# cd ipw3945-1.1.3
# make
</pre>
Per rendere il modulo compilato visibile al tool <code>modprobe</code> dobbiamo copiarlo nel path di <code>depmod</code>:
<pre>
# cp ipw3945.ko  /lib/modules/$(uname -r)/kernel/drivers/net/wireless
# depmod -a
</pre>
Ora possiamo utilizzare:
<pre># modprobe ipw3945</pre>
per caricare il modulo nel kernel e:
<pre># modprobe ipw3945 -r</pre>
per rimuoverlo.
=== Installazione del firmware ===
<pre>
# tar xzvf ipw3945-ucode-1.13.tgz
# cp ipw3945-ucode-1.13/ipw3945.ucode /usr/local/lib/firmware/
</pre>
==== Installazione del regulatory daemon ====
<pre>
# tar xzvf ipw3945d-1.7.22.tgz
</pre>
* Per sistemi a 32 bit:
<pre>
# cp ipw3945d-1.7.22/x86/ipw3945d /sbin
</pre>
* Per sistemi a 64 bit:
<pre>
# cp ipw3945d-1.7.22/x86_64/ipw3945d /sbin
</pre>


==='''Opzioni della Configurazione predefinita'''===
=== Caricamento del modulo ===
Ogni versione del kernel ha una configurazione "predefinita". Questa configurazione � in parte basata sulle scelte che il responsabile di quella architettura crede siano le opzioni migliori da essere usate. In alcuni casi, � la configurazione usata dal responsabile stesso sulle proprie macchine. Questo � vero per l'architettura i386, dove la configurazione predefinita corrisponde strettamente a quella che Linus Torvalds usa per la sua macchina di sviluppo principale.
Ora che compilazione e installazione sono completate possiamo procedere al caricamento del modulo nel kernel.
Riportiamoci nella directory del driver ipw3945:
<pre>
# cd ipw3945-1.1.3
</pre>
e carichiamo il modulo (ripulendo anche il log del kernel)
<pre>
# ./load debug=0
</pre>
Eseguendo iwconfig dovremmo poter essere in grado di vedere l'interfaccia associata al chip wifi:
<pre>
# ifconfig
eth2      unassociated  ESSID:off/any
          Mode:Managed  Channel=0  Access Point: 00:00:00:00:00:00
          Bit Rate=0 kb/s  Tx-Power=20 dBm
          RTS thr:off  Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0  Missed beacon:0
</pre>


Per creare questa configurazione predefinita, eseguite:
=== Automatizzare l'esecuzione del regulatory daemon mediante modprobe ===
<pre>$ cd linux-2.6.17.10
Per farlo basta creare un file nella directory <code>/etc/modprobe.d</code>
$ make defconfig</pre>
<pre># nano /etc/modprobe.d/</pre>
Una grande quantit� di configurazioni scorrer� velocemente sullo schermo, e un file ''.config'' sar� creato e piazzato nella cartella del kernel. Il kernel � ora correttamente configurato, ma dovrebbe essere adattato alla vostra macchina per assicurarsi che funzioni correttamente.
contenente le seguenti due righe:
 
<pre>
==='''Modificare la configurazione'''===
install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet
Ora che abbiamo un file di configurazione di base, dovrebbe essere modificato per supportare l'hardware presente nel vostro sistema. Per ulteriori dettagli su come individuare quali opzioni vi siano necessarie per ottenere ci�, potete leggere il Capitolo 7. Qui mostreremo come selezionare le opzioni che potete voler cambiare.
remove ipw3945  /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945
 
</pre>
Ci sono tre differenti strumenti interattivi per la configurazione del kernel: uno basato su terminale chiamato ''menuconfig'', uno grafico basato sulle GTK+ chiamato ''gconfig'', e un altro grafico basato sulle QT chiamato ''xconfig''.

Versione attuale delle 16:17, 30 nov 2019

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.


Versioni aggiornate di Debian

Per versioni di Debian da Debian Lenny (5.0) in poi si veda la guida aggiornata Intel PRO/Wireless 3945, 3945ABG e 4965: installazione e configurazione. Questa guida è compatibile fino fino al kernel 2.6.23.

Installazione moduli da repository ufficiali Debian (consigliato)

Con l'avvento sui repository Debian (stable, testing e unstable) dei pacchetti contenenti moduli, firmware e regulatory daemon, installazione e configurazione possono essere risolte mediante un semplice apt-get. Se stiamo usando un kernel precompilato (ad esempio quello installato durante il setup di Debian, oppure scaricato tramite APT) basterà scaricare i moduli ipw3945 compilati appositamente per la versione corrente del kernel:

# apt-get install firmware-ipw3945 ipw3945d ipw3945-modules-`uname -r`

Caricamento del modulo

Il regulatory daemon, installato di default nei runlevel 2, 3, 4, 5, gestisce anche il caricamento del modulo ipw3945 nel kernel Linux; eseguendo iwconfig (come super utenti) dovremmo poter essere in grado di vedere l'interfaccia associata al chip wifi:

eth2      unassociated  ESSID:off/any
          Mode:Managed  Channel=0  Access Point: 00:00:00:00:00:00
          Bit Rate=0 kb/s   Tx-Power=20 dBm
          RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Installazione mediante compilazione sorgenti (sconsigliato)

Prerequisiti

Prima di seguire quanto riportato nella guida, assicuriamoci di avere a nostra disposizioni gli headers per il nostro kernel. Se abbiamo compilato noi stessi il kernel, allora possiamo essere tranquilli, ma se stiamo usando un kernel precompilato (ad esempio quello installato durante il setup di Debian, oppure scaricato tramite APT) allora dobbiamo necessariamente scaricare il pacchetto Debian contenente gli headers. Ecco come procedere:

# apt-get install kernel-headers-`uname -r`

Software Occorrente

È consigliabile scaricare le versioni stabili (quelle con numero di versione che termina con .0) dei sorgenti del driver per Intel PRO/Wireless 3945ABG e dello stack ieee80211. Creiamoci uno spazio di lavoro in cui scaricare e compilare i sorgenti:

# mkdir ipw3945

Compilazione e installazione del sottosistema ieee80211

# tar xzvf ieee80211-1.1.14.tgz
# cd ieee80211-1.1.14
# make

Potremmo essere avvisati del fatto che nel kernel installato siano già presenti componenti ieee80211:

/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211.ko
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt.ko
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_wep.ko
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_ccmp.ko
/lib/modules/2.6.18-3-686/net/ieee80211/ieee80211_crypt_tkip.ko
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_wep.mod/lib/modules/2.6.18-suspend2/net/ieee80211/.tmp_versions/ieee80211_crypt_ccmp.mod
/lib/modules/2.6.18-3-686/net/ieee80211/.tmp_versions/ieee80211_crypt_tkip.mod
/lib/modules/2.6.18-3-686/include/net/ieee80211.h
/lib/modules/2.6.18-3-686/include/net/ieee80211_crypt.h
/lib/modules/2.6.18-3-686/include/net/ieee80211_radiotap.h
Above files found.  Remove? [y],n

Rispondendo affermativamente i componenti verranno eliminati e il successivo comando make install provvederà a installare i componenti ieee80211 che stiamo compilando. Infine (questa istruzione potrebbe necessitare dei diritti di super utente):

# make install 
# cd ..

Compilazione e installazione del modulo ipw3945

# tar xzvf ipw3945-1.1.3.tgz
# cd ipw3945-1.1.3
# make

Per rendere il modulo compilato visibile al tool modprobe dobbiamo copiarlo nel path di depmod:

# cp ipw3945.ko  /lib/modules/$(uname -r)/kernel/drivers/net/wireless
# depmod -a

Ora possiamo utilizzare:

# modprobe ipw3945

per caricare il modulo nel kernel e:

# modprobe ipw3945 -r

per rimuoverlo.

Installazione del firmware

# tar xzvf ipw3945-ucode-1.13.tgz
# cp ipw3945-ucode-1.13/ipw3945.ucode /usr/local/lib/firmware/

Installazione del regulatory daemon

# tar xzvf ipw3945d-1.7.22.tgz
  • Per sistemi a 32 bit:
# cp ipw3945d-1.7.22/x86/ipw3945d /sbin
  • Per sistemi a 64 bit:
# cp ipw3945d-1.7.22/x86_64/ipw3945d /sbin

Caricamento del modulo

Ora che compilazione e installazione sono completate possiamo procedere al caricamento del modulo nel kernel. Riportiamoci nella directory del driver ipw3945:

# cd ipw3945-1.1.3

e carichiamo il modulo (ripulendo anche il log del kernel)

# ./load debug=0

Eseguendo iwconfig dovremmo poter essere in grado di vedere l'interfaccia associata al chip wifi:

# ifconfig
eth2      unassociated  ESSID:off/any
          Mode:Managed  Channel=0  Access Point: 00:00:00:00:00:00
          Bit Rate=0 kb/s   Tx-Power=20 dBm
          RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Automatizzare l'esecuzione del regulatory daemon mediante modprobe

Per farlo basta creare un file nella directory /etc/modprobe.d

# nano /etc/modprobe.d/

contenente le seguenti due righe:

install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet
remove ipw3945  /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945