Udev: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
verificata, compatibile per tutte le versioni
m (verificata, compatibile per tutte le versioni)
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 3: Riga 3:
|successivo=LVM:_Logical_Volume_Manager
|successivo=LVM:_Logical_Volume_Manager
}}
}}
{{Versioni compatibili|Jessie}}
{{Versioni compatibili}}
== Introduzione ==
== Introduzione ==
'''Udev''' si occupa della gestione dinamica dei dispositivi per il kernel Linux ed è una componente importante di Debian, il cui [[pacchetto]] omonimo è quindi installato di default. In particolare gestisce i file di tipo dispositivo nella directory <code>/dev</code>, ossia tutti gli eventi relativi all'aggiunta e rimozione di hardware, incluso l'eventuale caricamento dei relativi firmware, e tutti i cambiamenti di stato di un dispositivo.
'''Udev''' si occupa della gestione dinamica dei dispositivi per il kernel Linux ed è una componente importante di Debian, il cui [[pacchetto]] omonimo è quindi installato di default. In particolare gestisce i file di tipo dispositivo nella directory <code>/dev</code>, ossia tutti gli eventi relativi all'aggiunta e rimozione di hardware, incluso l'eventuale caricamento dei relativi firmware, e tutti i cambiamenti di stato di un dispositivo.
Riga 47: Riga 47:
Tutti questi eventi sono stati generati dal solo inserimento della memoria. L'ultimo riguarda la generazione del file di tipo dispositivo a blocchi <code>/dev/sdb1</code>, corrispondente alla partizione della memoria USB, mentre il penultimo la creazione del file a blocchi <code>/dev/sdb</code>, corrispondente all'intero dispositivo, inclusa la tabella delle partizioni. Si noti che gli eventi sono prodotti dal più generale, riguardante un generico dispositivo USB, al più particolare, riguardante la creazione di un file a blocchi che può essere montato per accedere alla partizione della memoria di massa.
Tutti questi eventi sono stati generati dal solo inserimento della memoria. L'ultimo riguarda la generazione del file di tipo dispositivo a blocchi <code>/dev/sdb1</code>, corrispondente alla partizione della memoria USB, mentre il penultimo la creazione del file a blocchi <code>/dev/sdb</code>, corrispondente all'intero dispositivo, inclusa la tabella delle partizioni. Si noti che gli eventi sono prodotti dal più generale, riguardante un generico dispositivo USB, al più particolare, riguardante la creazione di un file a blocchi che può essere montato per accedere alla partizione della memoria di massa.


Per ottenere maggiori informazioni su ciascun evento, si utilizza l'opzione <code>--property</code> (abbreviata: <code>-p</code>).Quindi per esempio:
Per ottenere maggiori informazioni su ciascun evento, si utilizza l'opzione <code>--property</code> (abbreviata: <code>-p</code>).<br/>Quindi per esempio:
<pre>
<pre>
$ udevadm monitor -u -p
$ udevadm monitor -u -p
Riga 188: Riga 188:
$ udevadm info -q path -n sdb1
$ udevadm info -q path -n sdb1
</pre>
</pre>
Restituisce il percorso (a partire da <code>/sys/<code>):
Restituisce il percorso (a partire da <code>/sys/</code>):
<pre>
<pre>
/devices/pci0000:00/0000:00:1a.7/usb6/6-1/6-1:1.0/host10/target10:0:0/10:0:0:0/block/sdb/sdb1
/devices/pci0000:00/0000:00:1a.7/usb6/6-1/6-1:1.0/host10/target10:0:0/10:0:0:0/block/sdb/sdb1
</pre>
</pre>


=== Testare regole ===
=== Testare le regole ===
Con il percorso a partire da <code>/sys</code> di un dato dispositivo e [[privilegi di amministrazione]], è sufficiente:
Con il percorso a partire da <code>/sys</code> di un dato dispositivo, è sufficiente:
<pre>
<pre>
# udevadm test /percorso
$ udevadm test /percorso
</pre>
</pre>
Saranno testati ricorsivamente tutti gli eventi contenuti a partire dal percorso scelto.
Saranno simulati ricorsivamente tutti gli eventi contenuti a partire dal percorso scelto. Possono essere richiesti [[privilegi di amministrazione]], a seconda delle azioni necessarie per gli eventi.


È possibile specificare azioni (come per esempio ''add'' o ''remove'') con l'opzione <code>--action=ACTION</code> (abbreviata: <code>-a</code>).
È possibile specificare azioni (come per esempio ''add'' o ''remove'') con l'opzione <code>--action=ACTION</code> (abbreviata: <code>-a</code>).


Per esempio, sempre con la memoria USB, per testare gli eventi di aggiunta e rimozione del dispositivo:
Per esempio, sempre con la memoria USB, per simulare gli eventi di aggiunta e rimozione del dispositivo:
<pre>
<pre>
# udevadm test $(udevadm info -q path -n sdb1) -a add
$ udevadm test $(udevadm info -q path -n sdb1) -a add
# udevadm test $(udevadm info -q path -n sdb1) -a remove
$ udevadm test $(udevadm info -q path -n sdb1) -a remove
</pre>
</pre>


Riga 226: Riga 226:
{{Box | Dispositivi di memoria e interfacce di rete | Per il montaggio automatico di dispositivi di memoria di massa, si deve fare riferimento a [[udisks]], e non creare una regola per '''udev''', che si deve occupare soltanto dei nomi e delle proprietà dei file dispositivo nella directory <code>/dev</code>, ma non deve interferire con le funzionalità degli altri demoni di sistema.
{{Box | Dispositivi di memoria e interfacce di rete | Per il montaggio automatico di dispositivi di memoria di massa, si deve fare riferimento a [[udisks]], e non creare una regola per '''udev''', che si deve occupare soltanto dei nomi e delle proprietà dei file dispositivo nella directory <code>/dev</code>, ma non deve interferire con le funzionalità degli altri demoni di sistema.


Per lo stesso motivo non si deve occupare della gestione delle connessioni di rete. Inoltre i nomi da assegnare alle interfacce di rete sono gestiti dalle regole scritte in <code>/etc/udev/rules.d/70-persistent-net.rules</code>, generato automaticamente.}}
Per lo stesso motivo non si deve occupare della gestione delle connessioni di rete. Inoltre i nomi da assegnare alle interfacce di rete sono gestiti dalle regole scritte in <code>/etc/udev/rules.d/70-persistent-net.rules</code>, generato automaticamente. Il file non esiste più a partire da Debian 9 ([[Stretch]]), in quanto le interfacce di rete sono già persistenti di default con le recenti versioni di '''udev'''.}}


È sufficiente creare nella directory <code>/etc/udev/rules.d</code> un nuovo file con estensione <code>.rules</code>, uno per ciascun dispositivo.
È sufficiente creare nella directory <code>/etc/udev/rules.d</code> un nuovo file con estensione <code>.rules</code>, uno per ciascun dispositivo.
Riga 237: Riga 237:
* condizioni e azioni sono distinguibili soltanto dall'operatore utilizzato e dalle chiavi utilizzabili, e inoltre il valore di una condizione può essere un pattern con <code>*</code> per rappresentare qualsiasi stringa.
* condizioni e azioni sono distinguibili soltanto dall'operatore utilizzato e dalle chiavi utilizzabili, e inoltre il valore di una condizione può essere un pattern con <code>*</code> per rappresentare qualsiasi stringa.


Per una descrizione esaustiva si rimanda al manuale (<code>man udev</code>), di seguito sono introdotte soltanto condizioni e azioni principali.
Per una descrizione esaustiva si rimanda al manuale (<code>man udev</code>), di seguito sono introdotte soltanto le condizioni e le azioni principali.


Per le condizioni si considera soltanto l'operatore di equivalenza (<code>==</code>) con alcune chiavi comuni (si controlli per un esempio i valori restituiti in precedenza con la chiave USB):
Per le condizioni si considera soltanto l'operatore di equivalenza (<code>==</code>) con alcune chiavi comuni (si controlli per un esempio i valori restituiti in precedenza con la chiave USB):
* <code>ACTION</code> per determinare le azioni a cui la regola va applicata, come osservati monitorando gli eventi;
* <code>ACTION</code> per determinare le azioni a cui la regola va applicata, come osservati monitorando gli eventi;
* <code>KERNEL</code> il nome del file di tipo dispositivo, come sarebbe scelto senza l'attuale regola. Vista la scelta dinamica è in genere consigliabile utilizzare un pattern con <code>*</code> (per esempio in <code>/etc/udev/rules.d/70-persistent-net.rules</code> è utilizzata la condizione <code>KERNEL=="eth*"</code>), a meno che si intenda solo cambiare le proprietà di un dispositivo esistente, il cui nome è già determinato staticamente e univoco;
* <code>KERNEL</code> il nome del file di tipo dispositivo, come sarebbe scelto senza l'attuale regola. Vista la scelta dinamica è in genere consigliabile utilizzare un pattern con <code>*</code> (per esempio in <code>/etc/udev/rules.d/70-persistent-net.rules</code> era utilizzata la condizione <code>KERNEL=="eth*"</code>), a meno che si intenda solo cambiare le proprietà di un dispositivo esistente, il cui nome è già determinato staticamente e univoco;
* <code>SUBSYSTEMS</code> per identificare il sottosistema dell'evento, in base ai valori monitorati e alla granularità desiderata;
* <code>SUBSYSTEMS</code> per identificare il sottosistema dell'evento, in base ai valori monitorati e alla granularità desiderata (''block'', ''scsi'', ''usb'', ''pci'', ecc...);
* <code>DRIVERS</code> per filtrare gli eventi in base al modulo del kernel utilizzato (per esempio nel caso della memoria USB dell'esempio sarebbe stato ''usb-storage'', ma dipende dalla granularità desiderata dal filtro);
* <code>DRIVERS</code> per filtrare gli eventi in base al modulo del kernel utilizzato (per esempio nel caso della memoria USB dell'esempio sarebbe stato ''usb-storage'', ma dipende dalla granularità desiderata dal filtro);
* <code>ENV{proprietà}</code> per confrontare i valori di una data proprietà, come ottenuti dal monitoraggio di un dato evento.
* <code>ENV{proprietà}</code> per confrontare i valori di una data proprietà, come ottenuti dal monitoraggio di un dato evento.
Riga 256: Riga 256:
== Esempi ==
== Esempi ==
=== Utilizzo di nomi persistenti per memorie rimovibili ===
=== Utilizzo di nomi persistenti per memorie rimovibili ===
Riprendendo l'esempio della memoria USB, basta creare un file <code>/etc/udev/rules.d/99-my-usb.rules</code>:
Riprendendo l'esempio della memoria USB, basta creare un file in <code>/etc/udev/rules.d</code> con estensione <code>.rules</code>, per esempio <code>/etc/udev/rules.d/99-my-usb.rules</code>, con questo contenuto:
<pre>
<pre>
ACTION=="add", SUBSYSTEMS=="usb", DRIVERS=="usb-storage", ENV{ID_VENDOR}=="TDKMedia", ENV{ID_FS_UUID}="...", SYMLINK="myusb"
ACTION=="add", SUBSYSTEMS=="usb", DRIVERS=="usb-storage", ENV{ID_VENDOR}=="TDKMedia", ENV{ID_FS_UUID}="...", SYMLINK="myusb"
Riga 323: Riga 323:
=== Manuali e file Leggimi ===
=== Manuali e file Leggimi ===
* Per la scrittura delle regole: <br /><code>$ man udev</code>
* Per la scrittura delle regole: <br /><code>$ man udev</code>
* Per i parametri del kernel e la sintassi del file di configurazione <code>/etc/udev/udev.conf</code>: <br /><code>$ man udevd</code>
* Per i parametri del kernel e la sintassi del file di configurazione <code>/etc/udev/udev.conf</code>: <br /><code>$ man udevd</code>
* Per la gestione degli eventi udev: <br /><code>$ man udevadm</code>
* Per la gestione degli eventi udev: <br /><code>$ man udevadm</code>
* Informazioni aggiuntive, relative alla sola integrazione in Debian: <br /><code>$ pager /usr/share/doc/udev/README.debian</code><br />(con note sulle interfacce di rete per <code>/etc/udev/rules.d/70-persistent-net.rules</code>, e uso di '''udev''' con utenti non locali tramite LDAP o NIS)
 
* Informazioni aggiuntive, relative alla sola integrazione in Debian: <br /><code>$ zless /usr/share/doc/udev/README.Debian.gz</code><br />(con note sulle interfacce di rete per <code>/etc/udev/rules.d/70-persistent-net.rules</code>, non più necessarie a partire da Debian 9 [[Stretch]] perché già persistenti di default, e uso di '''udev''' con utenti non locali tramite LDAP o NIS)


=== Collegamenti esterni ===
=== Collegamenti esterni ===
Riga 332: Riga 335:


{{Autori
{{Autori
|Autore = [[Utente:HAL 9000|HAL 9000]] 17:33, 24 ott 2015 (CEST)
|Autore = [[Utente:HAL 9000|HAL 9000]] 11:27, 21 lug 2019 (CEST)
|Estesa_da =
|Estesa_da =
:
|Verificata_da =
|Verificata_da =
:
|Numero_revisori = 0
|Numero_revisori = 0
}}
}}


[[Categoria:Servizi di sistema]]
[[Categoria:Servizi di sistema]]
3 581

contributi

Menu di navigazione