Old:Wireless Support: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
Riga 1: Riga 1:
{{stub}}
=SystemV: il boot di Debian=
=Introduzione=
==Struttura==
I dispositivi per l'accesso a reti [[Glossario:Wireless | Wireless]] sono relativamente nuovi sul mercato e rappresentano, spesso, un ostacolo per gli utenti del pinguino. Questo è dovuto ad un comportamento poco corretto da parte dei produttori, che non specificano il chipset utilizzato e/o lo cambiano senza notificarlo.
Debian ha scelto, come proprio sistema di boot, il SysV, che si distingue per la propria semplicit� e potenza...
Infatti, � basata su degli script sensibili a determinate azioni, che vengono linkati in delle directory predefinite (rappresentanti determinati init (ovvero livelli o stati a cui si trova la macchina).


I driver per queste periferiche, infatti, fanno riferimento al chipset utilizzato dal dispositivo, e se questo viene cambiato... il driver non funziona più.
Esaminiamo nel dettaglio la struttura di questo interessante sistema, cos� da capire meglio cosa avviene esattamente al boot della macchina.
==Gli script di init.d==
Nella directory /etc/init.d sono presenti degli script particolari: il loro compito � quello di gestire i demoni (o servizi, che dir si voglia), quindi di avviarli, fermarli, far rileggere i file di configurazione, controllare lo stato, ... nel modo pi� semplice e comodo.
Di default, infatti, sono sempre presenti 3 opzioni:
; start : che lancia in esecuzione il demone
; stop : che si occupa di fermare correttamente il demone
; restart : che si occupa di riavviare il demone (stop + start)


In questa pagina viene raccolta una lista di driver per le periferiche wireless con i relativi siti ufficiali e le liste dell'hardware supportato (sono indicati i link ai siti ufficiali che riportano queste liste, in modo da averle sempre aggiornate).
a questi si aggiungono, poi:


=Come Acquistare=
; reload : permette la rilettura del file di configurazione
Il momento dell'acquisto è il più problematico: nessuno vorrebbe acquistare un dispositivo che poi non è compatibile con linux. Per evitare questo (o almeno ridurre le possibilità che accada) consiglio i seguenti passi:
; force-reload : come sopra, ma in maniera forzata
* recarsi nel negozio (oppure visitare un negozio online) ed annotare i modelli presenti (in particolare '''Marca''', '''Modello''', '''Versione''' (se presente))
; status : mostra a video lo stato del demone
* cercare con [http://www.google.it Google] o [http://www.google.it/linux Google Linux] il prodotto, avendo cura di inserire (nel caso si utilizzi Google ''normale'') la parola '''linux'''.
; stats : visualizza delle statistiche sul lavoro del demone...
* controllare con cura i risultati, per verificare se il dispositivo è compatibile o no con linux. Consiglio di controllare più pagine, verificare lo stato dei driver (quando è stata rilasciata l'ultima versione, commenti nei vari forum...).
* eventualmente, se si è ancora indecisi, chedere sul [http://www.debianizzati.org/modules/newbb/ forum di Debianizzati.Org].


Un'altra cosa da non sottovalutare è il potere degli utenti. Se possibile preferire sempre i produttori che indicano sulla scatola '''Linux Ready'''. Anche se potrebbe portare a spendere qualche cosina in più, questo è uno degli strumenti in nostro possesso per ''aiutare'' chi cerca di supportare Linux.


=Dove trovare informazioni=
Sapere come funziona uno script contenuto in /etc/init.d � utile, in quanto ci permette di utilizzarli anche da shell...
==Hardware Database==
Infatti, se ad esempio volessimo far partire apache, sarebbe necessario lanciare un semplice
È in corso di sperimentazione un database dei device wireless compatibili con linux. Il progetto è accessibile all'indirizzo http://linux-wless.passys.nl/ .
<pre>
# /etc/init.d/apache start
</pre>
ed il gioco � fatto!!!
==I vari rcX.d==
Come scrivevo nell'introduzione, gli script sono linkati in alcune directory 'speciali', che ora analizzeremo:
I nomi di queste directory sono sempre nella forma 'rcX.d', dove X rappresenta uno stato tra quelli seguenti:


==google==
==="0" Shutdown===
[http://www.google.it Google] rimane il miglior posto dove trovare informazioni riguardo i chipset usati nelle schede wireless e la loro compatibilità con Linux.
Quando la macchina viene messa in questo stato, vengono arrestati tutti i demoni, smontate le periferiche e la macchina viene preparata per lo spegnimento.


=Driver=
==="1" Single User===
Una lista di Driver per le periferiche Wireless.<br/>
In questo stato, � consentito l'accesso ad un utente solo, e gran parte dei servizi non vengono avviati; � usato prevalentemente per la manutenzione straordinaria della macchina
La presenza di una http://guide.debianizzati.org/images/swirl.png alla Destra del nome indica la presenza in Debian dei driver per l'installazione (eventualmente viene specificata la release in cui sono presenti).


==="2-5" Modalit Normali===
In Debian non esistono distinzioni tra gli stati 2, 3, 4 e 5 e viene lasciata all'utente la possibilit di modificarli... Di default viene utilizzato il 2.


==Aironet==
==="6" Reboot===
HomePage del Progetto: http://airo-linux.sourceforge.net/ <br/>
Quando la macchina viene portata in questo stato, viene preparata per un riavvio; avvengono tutte le cose indicate per rc0.d, ma viene inviato un segnale di reboot invece che di shutdown.
Documentazione installazione Debian: ND <br/>


==Atmel http://guide.debianizzati.org/images/swirl.png==
==="S" Boot===
HomePage del Progetto: http://atmelwlandriver.sourceforge.net <br/>
Runlevel speciale, che viene eseguito sempre al boot della macchina, prima di passare al runlevel di default (in Debian � il 2).
Documentazione installazione Debian: ND <br/>
Debian: Unstable<br/>
Hardware Supportato: [http://atmelwlandriver.sourceforge.net/usbtable.html Lista Ufficiale Periferiche Usb]


==Madwifi http://guide.debianizzati.org/images/swirl.png==
==Configurazione manuale dei runlevel==
HomePage del progetto: http://madwifi.sourceforge.net/ <br/>
===Configurazione del sistema===
Documentazione installazione Debian: http://www.marlow.dk/site.php/tech/madwifi <br/>
Il sistema di gestione dei runlevel � configurabile tramite il file '''/etc/inittab''' (� presente una guida a questo file, accessibile tramite il comando ''man inittab'').
Debian: Non ufficialmente; il repository è indicato nella guida all'installazione<br/>
Hardware Supportato: [http://madwifi.sourceforge.net/dokuwiki/doku.php?id=compatibility_list&DokuWiki=0eeb579be25b30b3929f5f50dec10f72 Lista Ufficiale]


==Marvell==
In questo file vengono definiti i comportamenti principali del sistema.
Non sono attualmente disponibili driver Linux.<br/>
Alcuni chipset Marvell sono supportati da NdisWrapper mediante l'utilizzo dei driver (file .INF reperibili nei cd di installazione) per sistemi operativi Microsoft.<br/>
HomePage del progetto NdisWrapper: http://ndiswrapper.sourceforge.net/mediawiki/index.php/Main_Page<br/>
Documentazione Installazione Debian: http://ndiswrapper.sourceforge.net/mediawiki/index.php/InstallDebian<br/>


==Prism http://guide.debianizzati.org/images/swirl.png==
La struttura delle istruzioni � la seguente:
HomePage del Progetto: http://www.prism54.org/ <br/>
<pre>
Documentazione Installazione Debian: ND <br/>
id:runlevel:azione:comando
Debian: a partire da Sarge<br/>
</pre>
Hardware Supportato: [http://www.prism54.org/supported_cards.php Lista ufficiale ]
con le seguenti informazioni:
; id : rappresenta una voce specifica dell'inittab. Per quanto riguarda la configurazione delle console, viene solitamente usato il numero della console;
; runlevel : viene usato per indicare in quali runlevel deve essere analizzata l'istruzione. Possono essere specificati uno o pi� runlevel:
::*''123'' indica che l'istruzione verr� considerata nei runlevel 1, 2 e 3;
::*''1'' indica che verr� presa in considerazione solo nel runlevel 1.
; azione : indica l'azione da compiere. Le pi� usate sono:
:; wait : il sistema attende il termine dell'esecuzione del comando;
:; respawn : il comando indicato viene eseguito ciclicamente ogni volta che esso termina;
:; boot : il comando viene eseguito durante il boot (il contenuto di ''runlevel'' viene ignorato);
:; initdefault : usato per indicare il runlevel di default;
:; sysinit : il comando viene eseguito durante il boot del sistema, prima di ogni comando con azione uguale a ''boot'';
;: ctrlaltdel : cosa deve essere fatto quando si riceve il segnale ''SIGINT'';


Nota: il driver è stato incluso nel tree ufficiale del Kernel a partire dalla versione 2.6.7-bk3. Per il kernel della famiglia 2.4.X è disponibile, sul sito ufficiale, una patch per abilitare i driver.
; comando : il comando da eseguire.
 
====Runlevel di Default====
<pre>
# The default runlevel.
id:2:initdefault:
</pre>
In questo esempio (preso da una Debian Box) il runlevel di default � il '''2'''. <br/>
Per modificarlo � sufficiente modificare il numero racchiuso tra i caratteri '':''.
 
====Script di inizializzazione del sistema====
<pre>
# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS
</pre>
Specifica cosa fare durante l'avvio del sistema (a meno che non venga avviato in modalit� di emergenza).
; si : sta per ''sistem initialization''.
 
Lo script '''/etc/init.d/rcS''' ha la funzione di invocare tutti gli script '''S*''' contenuti in '''/etc/rcS.d/''' in ordine numerico/alfabetico.
 
====Comportamento in Modalit� Singolo Utente====
<pre>
# What to do in single-user mode.
~~:S:wait:/sbin/sulogin
</pre>
 
 
====Comportamento per ogni Runlevel====
<pre>
# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
 
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
</pre>
 
In questa parte del file di configurazione vengono specificati gli script da lanciare per ogni runlevel:
'''lX''', con ''X'' un numero rappresentante il runlevel, indica il runlevel (lo stesso numero deve essere indicato anche nel campo ''runlevel'').
 
Lo script '''/etc/init.d/rc''' si occupa di lanciare, in ordine numerico/alfabetico, gli script presenti in '''/etc/rcX.d/''', partendo per quelli '''K*''' per passare a quelli '''S*'''; accetta come parametro il numero del runlevel.
 
====Pressione di CTRL + ALT + CANC====
<pre>
# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
</pre>
 
Il comando da eseguire alla pressione della combinazione di tasti '''CTRL + ALT + CANC''' � facilmente personalizzabile tramite l'istruzione sopra riportata. In questo caso viene chiamato il comando ''/sbin/shutdown'' che con quelle opzioni controlla il contenuto di '''/etc/shutdown.allow''' per gli utenti abilitati all'esecuzione del comando (''-a''), esegue un reboot (''-r''), aspetta un secondo prima di iniziare tutta la procedura di spegnimento (''-t1''), esegue il comando subito (''now''). Per maggiori informazioni riguardo la personalizzazione del comando si rimanda alla pagina di manuale di shutdown (''man shutdown'').
 
� possibile disattivare questa caratteristica commentando la riga.
 
====Gestione delle Console====
<pre>
# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  <id>:<runlevels>:<action>:<process>
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6
 
# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
</pre>
 
Il numero di console attive in un sistema viene gestito in questa sezione del file di configurazione.  
 
Ricordando quanto imparato in precedenza capiamo che abbiamo 6 console virtuali nei runlevel 2, 3, 4 e 5 e una sola nei 4 e 5. Se la nostra macchina non ha molta ram e vogliamo risparmiarne un po', possiamo commentare le console 2-6.
 
Se, invece, volessimo abilitare una console virtuale sulla porta seriale, � sufficiente decommentare la riga che inizia con ''T0'' (per averne una in ascolto sulla prima porta seriale).
 
Per maggiori informazioni sulla personalizzazione delle console virtuali, ''man getty''.
 
===Gestione dei runlevel (update-rc.d)===
La gestione ''manuale'' dei runlevel (per gestione intendo, ovviamente, la modifica degli script assegnati ad ogni runlevel) � estremamente semplice, soprattutto con l'ausilio di '''update-rc.d'''.
 
Il suo utilizzo � estremamente semplice.
 
====Sintassi====
La sintassi del comando � suddivisibile in tre varianti:
 
<pre>
update-rc.d [-n] [-f] name remove
</pre>
consente la rimozione di tutti i link nei runlevel relativi al demone ''name''
 
; -n : non esegue il comando, ma mostra cosa verrebbe svolto;
; -f : forza l'eliminazione dei link anche se � ancora presente lo script in '''/etc/init.d/'''.
 
<pre>
update-rc.d [-n] name defaults [NN | NN-start NN-stop]
</pre>
crea il link di avvio allo script '''/etc/init.d/''name''''' secondo i [[#Valori di default | valori di default]]. � possibile sovrascrivere l'ordine con cui verr� eseguito lo script specificando le due cifre (''NN''), inoltre � possibile fornire valori deversi sia per l'avvio (''NN-start'') che per l'arresto (''NN-stop'').
 
 
<pre>
update-rc.d [-n] name start|stop NN runlevel runlevel ...  .  start|stop NN runlevel runlevel ...  . ...
</pre>
crea il link di avvio|arresto allo script ''name'' specificando l'ordine (''NN'') e il/i runlevel. Il carattere ''.'' separa dichiarazioni multiple.
 
 
Vengono riportati alcuni esempi pratici (script ''xdm''):
 
====Aggiunta di un link====
Link per l'avvio
<pre>
update-rc.d xdm start 99 2 3 4 5
</pre>
Link per l'arresto
<pre>
update-rc.d xdm stop 01 0 1 6
</pre>
 
Concatenati
<pre>
update-rc.d xdm start 99 2 3 4 5 . stop 01 0 1 6
</pre>
 
====Rimozione di un link====
<pre>
update-rc.d -f xdm remove
</pre>
 
====Aggiunta di link secondi i Valori di Default====
Valori di default:
<pre>
update-rc.d xdm defaults
</pre>
 
Valori di Default solo relativamente ai runlevel (impostando l'ordine di avvio a 99 e di arresto a 01)
<pre>
update-rc.d xdm defaults 99-start 01-stop
</pre>
 
====Valori di Default====
I valori di default utilizzati sono i seguenti:
* lo script viene lanciato con l'opzione ''start'' nei runlevel 2, 3, 4 e 5;
* lo script viene lanciato con l'opzione ''stop'' nei runlevel 0, 1 e 6
* l'ordine � impostato a 20
 
==Tool per la configurazione dei runlevel==
===sysv-rc-conf===
sysv-rc-conf � una utility basata sulle librerie [[ncurses]] utile per semplificare la gestione dei [[runlevel]] ed avere una panoramica sullo stato di tutti i runlevel.
 
[[Immagine:Sysv-rc-conf.png|thumb|center|Screenshot di sysv-rc-conf]]
 
Il suo utilizzo � semplice quanto immediato: nella schermata di gestione appare una matrice dove sulle righe sono presenti i servizi (� possibile spostarsi coi tasti cursore oppure scorrere la lista con CTRL + n e CTRL + p), la presenza di una '''X''' (modificabile tramite la barra spaziatrice) indica che il servizio verr� avviato per il runlevel indicato nella colonna. Come si nota subito, l'interfaccia non permette di specificare l'ordine con cui verranno lanciati i servizi, inoltre non � possibile specificare eventuali servizi da terminare all'ingresso in un determinato runlevel.
 
Un'altra funzione degna di nota � la possibilit� di avviare e terminare direttamente da questa schermata i servizi. � possibile, infatti, farlo tramite i tasti '''+''' (start, avvio) e '''-''' (stop, arresto) dopo essersi posizionati sulla riga relativa al servizio.
 
===sysvconfig===
Sysvconfig � un tool molto comodo e funzionale, che permette di moficare i vari runlevel visualizzandoli in una comodagriglia. Una volta posizionati sulla casella da modificare � sufficiente cancellarne il contenuto con il tasto [canc] e inserire l'indicazione (Sxx o Kxx (dove il numero ''xx'' rappresenta l'ordine con il quale deve essere eseguito lo script)).
 
[[Immagine:Sysvconfig.png|thumb|center|Screenshot di sysvconfig]]
 
===rcconf===
Rcconf � forse il pi� semplice programma per la gestione dei demoni che vengono lanciati all'avvio del sistema...
 
� in grado, infatti, di generare automaticamente una lista degli script che verranno lanciati all'avvio del sistema, lasciando all'utente solo la possibilit� di attivarli o disattivarli.
 
[[Immagine:rcconf.png|thumb|center|Screenshot di rcconf]]
 
===ksysv===
Un programma di gestione dei runlevel basato sulle librerie qt ed integrato in Kde.
 
Al primo avvio viene chiesto di specificare il sistema sul quale viene eseguito (Linux -> Debian GNU/Linux).
 
La schermata che ci viene proposta � comoda e ben organizzata: a sinistra abbiamo la lista dei servizi disponibili. A seguire la lista dei runlevel (colonne) suddivisi in due celle: in alto i servizi da avviare, in basso quelli da arrestare. Clickando su un servizio in un runlevel si possono modificare le impostazioni. Per inserire un servizio � sufficiente trascinarlo nel runlevel designato, come per cancellarlo da un runlevel � sufficiente spostarlo nel cestino ;) .
 
[[Immagine:Ksysv.png|thumb|center|Screenshot di KsysV]]
1 487

contributi

Menu di navigazione