Bash tips: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
→‎Bash Scripting: modificatori di stringa
(→‎Bash Scripting: aggiunto tip)
(→‎Bash Scripting: modificatori di stringa)
Riga 1: Riga 1:
{{stub}}
== Disclaimer ==
== Disclaimer ==


Riga 5: Riga 4:


Molte delle informazioni sono tratte (e tradotte) da <tt>/usr/share/doc/udev/</tt>. Si prega di correggere o segnalare ogni possibile (e probabile) inesattezza.
Molte delle informazioni sono tratte (e tradotte) da <tt>/usr/share/doc/udev/</tt>. Si prega di correggere o segnalare ogni possibile (e probabile) inesattezza.
== Il sottosistema hotplug ==
Il sottosistema hotplug (dall'inglese: connessione a caldo, cio a PC acceso) un servizio del kernel che provvede a notificare in user space l'avvenuta connessione di un nuovo dispositivo.
Nell'evoluzione del kernel Linux questo servizio ha subito diverse modificazioni, nel tentativo di migliorare ogni volta in termini di prestazioni e flessibilit.
Nei kernel 2.4 l'interfaccia tra i driver e i programmi era fornita assieme a tutte le configurazioni del kernel stesso tramite il filesystem virtuale <tt>/proc</tt>, e i file di dispositivo erano creati staticamente: nella directory <tt>/dev</tt> erano presenti tutti i possibili device file.
Nel tentativo di migliorare il sistema venne implementato devfs, un altro filesystem virtuale, che si occupava solo dell'interazione programmi-driver, separando cos la gestione di questi da quella del kernel.
A partire dal kernel 2.6 devfs stato progressivamente abbandonato e sostituito dal sysfs, ancora un filesystem virtuale, che adotta una nuova e unificata interfaccia verso i driver e che risulta migliore di tutte le implementazioni passate.
Qualsiasi sia l'interfaccia che il kernel mette a disposizione, necessario in user space un programma che si occupi di ricevere le notifiche di hotplug e compiere le azioni necessarie per l'utilizzo delle periferiche notificate (caricare moduli, eseguire script ed, eventualmente, creare file di dispositivo in <tt>/dev</tt>).
Prima di udev il programma che svolgeva questo compito era stato chiamato, con poca fantasia, hotplug.
Hotplug tutt'ora in grado di svolgere il suo compito, ma ha alcune limitazioni che si sta tentando di superare:
* uno script bash, quindi lento. Notare che la cosa ininfluente per gli utenti comuni, a meno che non si connettano decine di periferiche al minuto ;-)
*sempre a causa della sua natura di script, occupa molto pi spazio di un programma C, considerato anche che necessita dell'interprete /bin/sh. Anche che questo fattore non tocca direttamente un utente comune, ma invece fondamentale per chi sta riorganizzando il processo di boot per implementare un sistema di hotplug dentro ad un nuovo tipo di initrd: l'initramfs.
*deve funzionare anche sui kernel 2.4, quindi non si appoggia al sysfs, perdendo in performance e funzionalit.
*necessita di una directory /dev statica (nota che il devfs ormai in disuso)


== Cos'� udev ==
== Cos'� udev ==


In parole povere, udev il metodo usato dai kernel 2.6 per creare i device file (quelli in /dev) per le periferiche presenti sul sistema. Tramite delle regole (udev rules) si possono assegnare nomi fissi a determinati dispositivi (a prescindere, ad esempio, dalla porta usata per collegare la periferica). Inoltre � possibile richiamre un certo programma/script non appena un dispositivo viene riconosciuto dal sistema.
Udev un programma in user space in grado ricevere le notifiche del sottosistema hotplug dei kernel 2.6. A partire dalla versione 0.070 � in grado di fare tutto quello che faceva hotplug per i kernel 2.4, ma � molto pi� veloce e leggero (� scritto in C). In pi� udev � in grado di creare dinamicamente i device file (quelli in <tt>/dev</tt>) per ogni periferica che viene rilevata nel sistema.


Udev non si occupa tuttavia di caricare i moduli necessari al funzionamento del dispositivo, infatti questi devono essere gi� caricati per permettere ad udev di riconoscere la periferica e creare il corrispondente device file.
Udev si appoggia unicamente al sysfs. Questo fatto ha il grande vantaggio di poter usufruire appieno della nuova e potente interfaccia di cui � stato dotato il kernel 2.6 (il sysfs, appunto) per la comunicazione tra i programmi in user space e i driver delle periferiche in kernel space, includendo nuove funzionalit� e migliore controllo sui driver stessi. L'unico svantaggio consiste nel fatto che non tutti i driver, al momento in cui si scrive, sono stati aggiornati per utilizzare il sysfs.


Hotplug veniva (fino a poco tempo fa) usato per caricare i driver delle periferiche.
Udev � un programma molto potente e flessibile che, occupandosi direttamente della creazione dei file di dispositivo (device file), permette un controllo molto accurato nella gestione degli stessi, dando la possibilit� all'amministratore di impostare in modo personalizzato tutti i loro attributi (nome, permessi, proprietario, ecc.)
Tramite delle regole (udev rules) si possono assegnare nomi fissi a determinati dispositivi (a prescindere, ad esempio, dalla porta usata per collegare la periferica). Inoltre � possibile richiamare un certo programma/script non appena un dispositivo viene riconosciuto dal sistema.
 
Udev non si occupa tuttavia di caricare i moduli necessari al funzionamento del dispositivo, infatti questi <b>devono</b> essere gi� caricati per permettere ad udev di riconoscere la periferica e creare il corrispondente device file.
 
Sulla stable ('''sarge''') udev � presente nella versione 0.056 e viene usato in accoppiata con hotplug, che si occupa di caricare i driver delle periferiche.
 
In '''etch''' (attuale testing) e '''sid''' udev ha invece sostituito anche Hotplug.
 
Questa guida � dedicata alla versione di udev attualmente in etch.


== Il nuovo udev ==
== Il nuovo udev ==


Dalla versione 0.070 in puoi udev ha sostituito completamente hotplug. I driver delle periferiche vengono caricati tutti automaticamente durante il boot. Per fare un esempio, se al boot vengono trovate delle porte usb, verr� automaticamente caricato il modulo <tt>usb-storage</tt> che permetter� (tra le altre cose) di usare eventuali chiavette usb.
Dalla versione 0.070 in poi udev ha sostituito completamente hotplug. I driver delle periferiche rilevate vengono caricati tutti automaticamente durante il boot. Per fare un esempio, se al boot vengono trovate delle porte usb, verr� automaticamente caricato il modulo <tt>usb-storage</tt> che permetter� (tra le altre cose) di usare eventuali chiavette usb.


Per usare questa versione di udev � necessario un kernel 2.6.12 o superiore con le opzioni hotplug (CONFIG_HOTPLUG) e tmpfs (CONFIG_TMPFS) attivate. Le opzioni CONFIG_PNP, CONFIG_ISAPNP, CONFIG_PNPBIOS e CONFIG_PNPACPI sono altamente raccomandate per consentire il caricamente automatico di importanti driver.
Per usare questa versione di udev � necessario un kernel 2.6.12 o superiore con le opzioni hotplug (CONFIG_HOTPLUG) e tmpfs (CONFIG_TMPFS) attivate. Le opzioni CONFIG_PNP, CONFIG_ISAPNP, CONFIG_PNPBIOS e CONFIG_PNPACPI sono altamente raccomandate per consentire il caricamente automatico di importanti driver.
A partire dal kernel 2.6.15-rc1 stata introdotta la nuova implementazione del driver model, la quale presenta nuove feature e una migliore organizzazione dei contenuti di sysfs. Per gestire correttamente i vari dispositivi quindi obbligatorio dotarsi di una versione di udev pari o superiore alla 0.071.


Il pacchetto hotplug deve essere rimosso manualmente, anche se non dovrebbe creare problemi se restasse installato.
Il pacchetto hotplug deve essere rimosso manualmente, anche se non dovrebbe creare problemi se restasse installato.
Riga 39: Riga 69:


In altre parole, su un tipico sistema si potrebbero dover caricare manualmente (usando /etc/modules) dei moduli come ppdev e tun.
In altre parole, su un tipico sistema si potrebbero dover caricare manualmente (usando /etc/modules) dei moduli come ppdev e tun.
== Da hotplug a udev ==
== Da hotplug a udev ==


Riga 49: Riga 78:


; <tt>/etc/hotplug/blacklist*</tt>: dovrebbero essere sostituite da direttive di configurazione di modprobe (ma per adesso modprobe processer� <tt>/etc/hotplug/blacklist.d/</tt>).
; <tt>/etc/hotplug/blacklist*</tt>: dovrebbero essere sostituite da direttive di configurazione di modprobe (ma per adesso modprobe processer� <tt>/etc/hotplug/blacklist.d/</tt>).
Inoltre dalla versione 0.072:
* tutti i file in <tt>/etc/udev/scripts/</tt> and <tt>/lib/hotplug/</tt> e alcuni file in <tt>/sbin/</tt> sono stati spostati in <tt>/lib/udev/</tt>. Non dimenticate di aggiornare le regole personalizzate, se ne avete create.


== La directory <tt>/etc/udev/rules.d/</tt> ==
== La directory <tt>/etc/udev/rules.d/</tt> ==
1 760

contributi

Menu di navigazione