Old:Wireless Support: differenze tra le versioni

m
nessun oggetto della modifica
mNessun oggetto della modifica
Riga 1: Riga 1:
=SystemV: il boot di Debian=
== Introduzione ==
==Struttura==
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).


Esaminiamo nel dettaglio la struttura di questo interessante sistema, cos� da capire meglio cosa avviene esattamente al boot della macchina.
Penso che anche se non sono particolarmente diffuse, l'uso delle stampanti bluetooth andr� progressivamente diffondendosi vista la loro utilit� per i possessori di computer notebook. L'idea stessa di scrivere questo wiki sull'installazione di una stampante bluetooth non � nato dal nulla: io stesso ho dovuto installarne una e ho trovato difficolt� a reperire informazioni.  
==Gli script di init.d==
Spero quindi che questo mio contributo possa essere utile anche ad altri utenti di Debian e GNU/Linux.
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)


a questi si aggiungono, poi:
== Preparazione del sistema ==


; reload : permette la rilettura del file di configurazione
Prima di configurare la stampante occorrer� fare delle verifiche preventive. Iniziamo subito verificando:
; force-reload : come sopra, ma in maniera forzata
; status : mostra a video lo stato del demone
; stats : visualizza delle statistiche sul lavoro del demone...


==== La versione del kernel ====
apriamo una console e logghiamoci come root, quindi digitiamo il comando '''uname -a''';


Sapere come funziona uno script contenuto in /etc/init.d � utile, in quanto ci permette di utilizzarli anche da shell...
==== Installazione dei programmi bluez-x necessari ====
Infatti, se ad esempio volessimo far partire apache, sarebbe necessario lanciare un semplice
Verifichiamo che siano installati i programmi '''bluez-utils''', '''bluez-sdp''' e la '''kernel-patch-2.x-bluez''' (corrispondente al kernel che in uso). Per fare questo possiamo usare '''Synaptic''' o '''apt-get'''.
<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:


==="0" Shutdown===
==== L'elenco dei moduli attivi ====
Quando la macchina viene messa in questo stato, vengono arrestati tutti i demoni, smontate le periferiche e la macchina viene preparata per lo spegnimento.
E' importante che sia attivo il modulo '''hci_usb''' che di fatto carica automaticamente anche i moduli necessari al bluetooth. Diamo quindi il comando '''# lsmod''' e vediamo se il modulo � attivo altrimenti attiviamolo con '''modprobe hci_usb''' e modifichiamo '''/etc/modules''' in modo che carichi di nuovo questo modulo ai successivi avvii del sistema.


==="1" Single User===
==== Recuperare l'URI Device ====
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
A questo colleghiamo e accendiamo la stampante. Da console - sempre come root - digitiamo il comando '''# hcitool scan'''. l'output sar� del tipo:
'''xx:xx:xx:xx:xx:xx ''nome della stampante'' xxxxxxxxxxxx'''
Prendiamo il valore del primo campo (quello separato dai duepunti) e segnamocelo da qualche parte.


==="2-5" Modalit� Normali===
== Configurazione ==
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.
A questo punto configuriamo CUPS. Apriamo konqueror e nella barra degli indirizzi scriviamo '''localhost:631/admin''' e logghiamoci come root. Selezioniamo quindi '''Add new printer''' e seguiamo progressivamente la procedura. Inseriremo quindi prima il nome e i dati della stampante, quindi selezioneremo stampante bluetooth. Alla succesiva richiesta URI Device scriviamo: '''bluetooth://xxxxxxxxxx''' dove al posto delle '''x''' occorre mettere il numero che ci siamo segnati prima, ma ''senza duepunti''.
A questo punto la configurazione di CUPS diventa estremamente intuitiva, sar� quindi sufficiente andare avanti indicando il tipo di stampante (marca e modello, in due pagine successive), e poco altro.


==="6" Reboot===
==Conclusioni==
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.
A questo punto la vostra stampante dovrebbe funzionare anche con collegamento bluetooth. In ogni caso mi scuso delle eventuali imprecisioni, ma io sono solo un newbie ben disposto ad imparare e a mettere a disposizione il poco che so.
Ringrazio anticipatamente quanti dovessero decidere di apportare modifiche o correzioni a questa ''introduzione'' che non ha alcuna pretesa di perfezione o completezza, ma che intende solo essere un contributo modesto e spero utile a favore di quanti si troveranno ad installare una stampante bluetooth.


==="S" Boot===
----
Runlevel speciale, che viene eseguito sempre al boot della macchina, prima di passare al runlevel di default (in Debian � il 2).
Autore: tux75 x http://guide.debianizzati.org/
 
[[Categoria:Hardware]]
==Configurazione manuale dei runlevel==
===Configurazione del sistema===
Il sistema di gestione dei runlevel � configurabile tramite il file '''/etc/inittab''' (� presente una guida a questo file, accessibile tramite il comando ''man inittab'').
 
In questo file vengono definiti i comportamenti principali del sistema.
 
La struttura delle istruzioni � la seguente:
<pre>
id:runlevel:azione:comando
</pre>
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'';
 
; 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 760

contributi