Chapter 19. Device node dinamici grazie a udev

Table of Contents

19.1. Come impostare delle regole
19.2. Automatizzare NAME e SYMLINK
19.3. Espressioni regolari nelle chiavi
19.4. Consigli per la scelta di chiavi appropriate
19.5. Nomi consistenti per dispositivi di memoria di massa

Abstract

Con il Linux Kernel 2.6 vi è una nuova soluzione user space, ovvero spazio utente, per una directory di dispositivi dinamica /dev con nomi di dispositivi consistenti: udev. L'implementazione precedente di /dev con devfs non funziona più ed è stata sostituita da udev.

In passato nei sistemi Linux i cosiddetti device node, ovvero nodi del dispositivo, venivano archiviati nella directory /dev. Per ogni tipo di dispositivo vi era un nodo, indipendentemente dalla presenza effettiva del dispositivo. Di conseguenza la directory aveva una notevole dimensione. devfs apportò un notevole miglioramento su questo fronte, poiché solo dispositivi effettivamente esistenti avevano un nodo di dispositivo in /dev.

udev percorre nuove vie nella creazione dei nodi di dispositivi: ricorrendo a delle regole confronta le informazioni che fornisce sysfs con le indicazioni dell'utente. sysfs è un nuovo file system del Kernel 2.6 e fornisce le informazioni basilari sui dispositivi connessi al sistema. Viene montato sotto /sys.

L'utente non è tenuto a stabilire delle regole. Alla connessione del dispositivo viene creato il relativo nodo di dispositivo. Le regole permettono comunque di modificare il nome del nodo, cosa che si rileva essere utile nel caso di nomi di dispositivo di una certa complessità che in tal modo possono essere sostituiti con un nome intuitivo ed inoltre, se si hanno due dispositivi dello stesso tipo, si potranno assegnare dei nomi consistenti.

Se si hanno due stampanti di solito esse vengono designate con /dev/lp0 e /dev/lp1; il nodo di dispositivo assegnato al dispositivo dipende dalla sequenza nella quale vengono accese le stampanti. Un altro esempio è rappresentato da dispositivi di memoria di massa come ad esempio dischi rigidi USB. udev consente di registrare i percorsi dei dispositivi esatti in /etc/fstab.

19.1. Come impostare delle regole

udev legge il file /etc/udev/udev.rules prima di generare i nodi di dispositivi sotto /dev. Anche se ne esistono diverse, viene applicata la prima regola rilevata adatta al dispositivo in questione. I commenti vengono introdotti da un #. Di solito seguono la sintassi riportata:

Chiave, [chiave,...] NAME [, SYMLINK]

Deve venir indicata almeno una chiave, visto che è tramite la chiave che al dispositivo viene assegnato una regola. Anche il nome è assolutamente necessario, dato che è il nodo di dispositivo generato in /dev avrà questo nome. Il parametro facoltativo symlink consente di generare degli ulteriori collegamenti. A titolo di esempio riportiamo una regola per una stampante:

BUS="usb", SYSFS{serial}="12345", NAME="lp_hp", SYMLINK="printers/hp"

Questo esempio riporta due chiavi: BUS e SYSFS{serial}. udev compara il numero seriale con quello del dispositivo connesso al bus USB. Tutte le chiavi devono concordare per poter assegnare al dispositivo il nome lp_hp nella directory /dev. Inoltre verrà generato un link simbolico /dev/printers/hp che rimanda al nodo di dispositivo. La directory printers verrà generata automaticamente. Gli incarichi di stampa possono essere a questo punto inviati a /dev/printers/hp oppure a /dev/lp_hp.