Udev: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
verificata, compatibile per tutte le versioni
mNessun oggetto della modifica
m (verificata, compatibile per tutte le versioni)
 
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 194: Riga 194:


=== Testare le 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 241: Riga 241:
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 (''block'', ''scsi'', ''usb'', ''pci'', ecc...);
* <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);
Riga 328: Riga 328:
* 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 335: 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 =
3 581

contributi

Menu di navigazione