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
Nessun oggetto della modifica
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''.
=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>$ uname -r
linux-image-2.6.18-3-686</pre>
questo significa che dobbiamo procurarci gli headers relativi a questa release del kernel:
<pre># apt-get install kernel-headers-2.6.18-3-686</pre>


== '''Creare una Configurazione''' ==
= Software Occorrente =
* [http://bughost.org/ipw3945/ Microcode/Firmware]
* [http://bughost.org/ipw3945/ Binary Userspace Regulatory Daemon]
* [http://ieee80211.sourceforge.net/ Network Stack ieee80211 per kernel Linux]
* [http://ipw3945.sourceforge.net/ Drivers Intel PRO/Wireless 3945ABG per kernel Linux]
E' 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:
<pre>mkdir ipw3945</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.
== Compilazione e installazione del sottosistema ieee80211 ==
<pre>
tar xzvf ieee80211-1.1.14.tgz
cd ieee80211-1.1.14
make
</pre>
Potremmo essere avvisati del fatto che nel kernel installato siano già presenti componenti ieee80211:
<pre>
/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
</pre>
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)
<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 modprobe dobbiamo copiarlo nel path di depmod:
<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>


==='''Configurare dall'inizio'''===
= Caricamento del modulo =
Il modo pi� semplice per configurare un kernel � usare il metodo ''make config'':
Ora che compilazione e installazione sono completate possiamo procedere al caricamento del modulo nel kernel.
<pre>$ cd linux-2.6.17.10
Riportiamoci nella directory del driver ipw3945:
  $ make config
<pre>
make config
cd ipw3945-1.1.3
scripts/kconfig/conf arch/i386/Kconfig
</pre>
*
e carichiamo il modulo (ripulendo anche il log del kernel)
* Linux Kernel Configuration
<pre>
*
./load debug=0
*
</pre>
* Code maturity level option
Eseguendo iwconfig dovremmo poter essere in grado di vedere l'interfaccia associata al chip wifi:
*
<pre>
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?]
# ifconfig
Y
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>


*
= Automatizzare l'esecuzione del regulatory daemon mediante modprobe =
* General setup
Per farlo basta creare un file nella directory /etc/modprobe.d
*
<pre>nano /etc/modprobe.d/</pre>
Local version - append to kernel release (LOCALVERSION) []
contenente le seguenti due righe:
Automatically append version information to the version string
<pre>
(LOCALVERSION_AUTO) [Y/n/?] Y
install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet
...</pre>
remove ipw3945  /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945
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.
* <tt>n</tt>  Lasciare completamente al di fuori del kernel.
* <tt>m</tt>  Compilare come modulo, da caricare se necessario.
* <tt>?</tt>   Stampare un breve messaggio descrittivo e ripropone il quesito.
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.


==='''Opzioni della Configurazione predefinita'''===
= Predisporre un demone SysV per l'esecuzione del regulatory daemon=
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.
Come super utenti:
<pre>
nano /etc/init.d/ipw3945d
</pre>
Editiamo il file nel seguente modo:
<pre>
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/sbin/ipw3945d
NAME=ipw3945d
DESC=ipw3945d


Per creare questa configurazione predefinita, eseguite:
test -x $DAEMON || exit 0
<pre>$ cd linux-2.6.17.10
$ make defconfig</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.


==='''Modificare la configurazione'''===
# Include ipw3945d defaults if available
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.
if [ -f /etc/default/ipw3945d] ; then
        . /etc/default/ipw3945d
fi


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''.
set -e


==='''Configurazione tramite Terminale'''===
case "$1" in
Il metodo chiamato '''menuconfig''' per configurare un kernel � un programma per terminale che d� modo di muoversi nella configurazione del kernel usando i tasti freccia della tastiera. Per avviare questa modailt� di configurazione, digitate:
  start)
<pre>$ make menuconfig</pre>
        echo -n "Starting $DESC: "
Vi apparir� una schermata molto simile a quella di figura 4-1.
        start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
IMAGE 4-1
                --exec $DAEMON -- $DAEMON_OPTS
Le istruzioni per navigare attraverso il programma, e i significati dei diversi caratteri, sono mostrati in cima allo schermo. Il resto dello schermo contiene le diverse opzioni di configurazine.
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
              --exec $DAEMON
        echo "$NAME."
        ;;
  #reload)
        #
        #      If the daemon can reload its config files on the fly
        #      for example by sending it SIGHUP, do it here.
        #
        #      If the daemon responds to changes in its config file
        #      directly anyway, make this a do-nothing entry.
        #
        # echo "Reloading $DESC configuration files."
        # start-stop-daemon --stop --signal 1 --quiet --pidfile \
        #      /var/run/$NAME.pid --exec $DAEMON
  #;;
  restart|force-reload)
        #
        #      If the "reload" option is implemented, move the "force-reload"
        #      option to the "reload" entry above. If not, "force-reload" is
        #      just the same as "restart".
        #
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /var/run/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  *)
        N=/etc/init.d/$NAME
        # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac


La configurazione del kernel � divisa in sezioni. Ogni sezione contiene opzioni che corrispondo ad argomenti specifici. Al loro interno possono esserci sottosezioni per vari argomenti specifici. Per esempio tutti i driver per le periferiche possono essere trovati sotto l'opzione del menu principale <tt>Device Drivers ---></tt>. Per aprire questo menu, premete la freccia in basso nove volte, finch� la linea <tt>Device Drivers ---></tt> non � sottolineata, come mostrato in figura 4-2.
exit 0


Premete poi il tasto Invio. Vi porter� nel sotto-menu <tt>Device Drivers</tt> e lo mostrer� come mostrato nella figura 4-3.
</pre>
 
Salviamo (ctrl-o) e usciamo (ctrl-x).
Potete continuare a muovervi nella gerarchia dei menu allo stesso modo. Per visualizzare il sotto-menu <tt>Generic Driver Options</tt> premete Invio di nuovo, e vedrete se tre opzioni mostrate in figura 4-4.
Ora attribuiamo al file appena editato permessi di esecuzione:
 
<pre>chmod +x /etc/init.d/ipw3945d</pre>
Le prime due opzioni hanno un simbolo [*] vicino a esse. Questo significa che quest'opzione � selezionata (perch� il simbolo * sta al centro dei due caratteri []), e che questa � un'opzione del tipo s�-o-no. La terza opzione ha un segno < >, che mostra che questa opzione pu� essere inserita nel kernel (Y), compilata come modulo (M), o esclusa del tutto (N).
A questo punto possiamo aggiungere il demone al runlevel che fà al caso nostro. Vi rimando, a tal fine, alla seguente guida:
IMAGE 4-2
[http://guide.debianizzati.org/index.php/SysV SysV]
IMAGE 4-3
----
Se l'opzione � selezionata con Y, le parentesi ad angolo conterranno un *. Se � selezionata come modulo con una M, conterranno una lettera M. Se � disabilitata con N, mostreranno solo uno spazio bianco.
Autore: [[Utente:fulvio|fulvio]] Feb 06, 2007
 
[[Categoria:Hardware]][[Categoria:Wireless]]
Cos�, se desiderate cambiare queste tre opzioni per selezionare solo driver che non necessitano firmware esterno in tempo di compilazione, disabilitate l'opzione per impedire che il firmware sia compilato, e compilate il caricatore in spazio utente del firmware come modulo, digitando Y per la prima opzione, N per la seconda e M per la terza, rendendo la schermata come quella in figura 4-5.
 
Quando avete completato le vostre modifiche in questa schermata, premete il tasto Esc o la freccia destra seguita dal tasto Invio per lasciare questo sottomenu. Tutte le opzioni del kernel possono essere esplorate in questa maniera.
 
IMAGE 4-4
IMAGE 4-5
Quando avete finito di fare tutte le modifiche che desideriate apportare alla configurazione del kernel, uscite dal programma premendo il tasto Esc quando siete nel menu principale. Vi sar� mostrata la schermata in figura 4-6, che vi chiede se desiderate salvare la vostra modificata configurazione.
IMAGE 4-6
Premete Invio per salvare la configurazione, o se eliminare ogni modifica fatta, digitate la freccia destra per selezionare la voce <tt>< No ></tt> e premete Invio.
 
==='''Metodi grafici di configurazione'''===
I metodi di configurazione del kernel ''gconfig'' e ''xconfig'' usano un programma grafico per permettervi di modificare la configurazione. I due metodi sono pressoch� identici, l'unica differenza risiedendo nei diversi strumenti grafici attraverso i quali sono scritti. ''gconfig'' � scritto uasndo GTK+ e ha uno schermo diviso in due regioni, come mostrato in figura 4-7.
IMAGE 4-7
Il metodo ''xconfig'' � scritto usando le QT e ha uno schermo diviso in tre regioni, come in figura 4-8.
 
Usate il mouse per navigare i sottomenu e selezionare le opzioni. Per esempio, potete usarlo nella figura 4-8 per selezionare il sottomenu <tt>Generic Driver Options</tt> del menu <tt>Device Drivers</tt>. Questo cambier� la schermata di ''xconfig'' e la render� quella dell'immagine 4-9. La corrispondente immagine di ''gconfig'' � la figura 4-10.
 
Modificare questo sottomenu per disabilitare la seconda opzione e rendere la terza opzione compilata come modulo genera le schermate apparire come nelle figure 4-11 e 4-12.
 
Notate che nel metodo ''gconfig'', un riquadro con il segno di visto significa che l'opzione sar� compilata nel kernel, laddove una linea nel riquadro significa che l'opzione sar� compilata come modulo. Nel metodo ''xconfig'' un'opzione compilata come modulo sar� mostrata con un punto nel riquadro.
 
Entrambi questi metodi vi chiedono di salvare la configurazione quando uscite dal programma, e offrono la possibilit� di scrivere quella configurazione in un altro file. Potete cos� creare molteplici, diverse configurazioni.
IMAGE 4-8
 
=='''Compilazione del Kernel'''==
Ora che avete creato la configurazione che intendete usare, dovete compilare il kernel. Questo � semplice come digitare un comando di un parola:
<pre>$ make
CHK include/linux/version.h
UPD include/linux/version.h
SYMLINK include/asm -> include/asm-i386
SPLIT include/linux/autoconf.h -> include/config/*
CC arch/i386/kernel/asm-offsets.s
GEN include/asm-i386/asm-offsets.h
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost.o
HOSTCC scripts/kallsyms
HOSTCC scripts/conmakehash
HOSTCC scripts/bin2c
CC init/main.o
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
CC init/do_mounts.o
...</pre>
IMAGE 4-9
IMAGE 4-10
IMAGE 4-11
IMAGE 4-12
Eseguire ''make'' fa s� che il sistema di compilazione del kernel usi il file di configurazione che avete selezionato affinch� compilasse un kernel e tutti i moduli necessari per supportare tale configurazione. Mentre il kernel � in compilazione, ''make'' mostra i singoli nomi dei file di cosa sta correntemente succedendo, insieme a tutti gli avvertimenti ("warnings", N.d.T.) e gli errori di compilazioni.
 
Se la compilazione del kernel termina senza errori, avete creato con successo un'immagine di un kernel. Comunque deve essere propriamente installata prima che proviate ad avviarla. Leggete il Capitolo 5 per sapere come fare questo.
 
� molto raro avere errori di compilaizone quando state compilando una versione del kernel rilasciata. Se vi capita, riportatili agli sviluppatori del kernel Linux coscch� possano essere corretti.

Versione delle 08:52, 7 feb 2007

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:

$ uname -r
linux-image-2.6.18-3-686

questo significa che dobbiamo procurarci gli headers relativi a questa release del kernel:

# apt-get install kernel-headers-2.6.18-3-686

Software Occorrente

E' 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

Predisporre un demone SysV per l'esecuzione del regulatory daemon

Come super utenti:

nano /etc/init.d/ipw3945d

Editiamo il file nel seguente modo:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/sbin/ipw3945d
NAME=ipw3945d
DESC=ipw3945d

test -x $DAEMON || exit 0

# Include ipw3945d defaults if available
if [ -f /etc/default/ipw3945d] ; then
        . /etc/default/ipw3945d
fi

set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
               --exec $DAEMON
        echo "$NAME."
        ;;
  #reload)
        #
        #       If the daemon can reload its config files on the fly
        #       for example by sending it SIGHUP, do it here.
        #
        #       If the daemon responds to changes in its config file
        #       directly anyway, make this a do-nothing entry.
        #
        # echo "Reloading $DESC configuration files."
        # start-stop-daemon --stop --signal 1 --quiet --pidfile \
        #       /var/run/$NAME.pid --exec $DAEMON
  #;;
  restart|force-reload)
        #
        #       If the "reload" option is implemented, move the "force-reload"
        #       option to the "reload" entry above. If not, "force-reload" is
        #       just the same as "restart".
        #
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /var/run/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  *)
        N=/etc/init.d/$NAME
        # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0

Salviamo (ctrl-o) e usciamo (ctrl-x). Ora attribuiamo al file appena editato permessi di esecuzione:

chmod +x /etc/init.d/ipw3945d

A questo punto possiamo aggiungere il demone al runlevel che fà al caso nostro. Vi rimando, a tal fine, alla seguente guida: SysV


Autore: fulvio Feb 06, 2007