Udev: ecco come rinominare le periferiche

Inserito da il14 April 2007, 3073 visite totali

Udev è un programma che gira in user-space e serve alla creazione dinamica dei device che si trovano in /dev. Udev sfrutta sysfs, introdotto nei kernel 2.6, che è una sorta di interfaccia per la comunicazione tra i programmi in user space e i driver delle periferiche in kernel space.

Le ultime versioni di udev oltre ad occuparsi della creazione dei device sono in grado di caricaricare automaticamente i moduli (o se preferite driver) per far funzionare le periferiche, questa funzione ha reso del tutto obsoleto il vecchio hotplug.

Per la creazione dei device udev si basa su dei semplici file di testo (con sufisso .rules), nei quali sono contenute le regole di “creazione”. Questi file si trovano, normalmente, all’interno della directory /etc/udev/rules.d/. I files presenti in questa directory vengono processati in ordine alfabetico. Alla situazione attuale esistono vari file di configurazione, ogniuno dei quali gestisce delle periferiche particolari come cdrom, scanner ecc. Il file principale è udev.rules dove sono contenute la maggior parte delle regole e per sua natura è un work in progres.

Per quanto detto sopra se un utente ha necessità di assegnare dei nomi particolari ai device dovrà creare un file contenente le regole che udev dovrà eseguire non appena il sistema “sente” la presenza di questa periferica. Il nome del file è del tutto arbitrario, ma si consiglia di chiamarlo con un nome che inizia per 00 (zero zero), perchè, si ricorda, che i file vengono processati da udev in ordine alfabetico.

In questa guida, che non vuole di certo essere esaustiva, si vedrà come rinominare delle periferiche rimovibili (non che la cosa combi di molto con le periferiche statiche).

Il primo passo da eseguire è quello di collegare la perifericha al PC e, una volta che questa è stata riconosciuta usare il programma udevinfo per verificare i parametri di sysfs da inserire nel file .rules.

L’esempio tratta una chiavetta usb. Ecco l’output restituito da udevinfo (notare i parametri con il quale viene eseguito):

udevinfo -a -p /sys/block/sdb/
  looking at device '/block/sdb':
    KERNEL=="sdb"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{stat}=="      38       24      240      100        0        0        0        0        0       68      100"
    ATTR{size}=="2039806"
    ATTR{removable}=="1"
    ATTR{range}=="16"
    ATTR{dev}=="8:16"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/host2/target2:0:0/2:0:0:0':
    KERNELS=="2:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{ioerr_cnt}=="0x2"
    ATTRS{iodone_cnt}=="0x3f"
    ATTRS{iorequest_cnt}=="0x3f"
    ATTRS{iocounterbits}=="32"
    ATTRS{timeout}=="30"
    ATTRS{state}=="running"
    ATTRS{rev}=="8.07"
    ATTRS{model}=="                "
    ATTRS{vendor}=="        "
    ATTRS{scsi_level}=="3"
    ATTRS{type}=="0"
    ATTRS{queue_type}=="none"
    ATTRS{queue_depth}=="1"
    ATTRS{device_blocked}=="0"
    ATTRS{max_sectors}=="240"

Il parametro -p /sys/block/sdb/ indica il device da monitorare: in questo caso la penna usb viene riconosciuta come sdb.

Di tutte le informazioni restituite da udevinfo di particolare interesse sono quelle del secondo gruppo dove si trovamo i dati riguardanti il vendor, il modello ecc della periferica. Questi dati dovrebbero individuare univocamente la periferica.

Un modo molto veloce per far cambiare “nome” alla penna è quello di indicare nel file delle nostre regole il vendor, il model e se prefetite altri parametri come rev e driver.

La costruzione delle regole è molto semplice, basta fare un copia/incolla dei dati sopracitati nel file e separarli con una virgola (,). Ecco un esempio di file .rules (00-myrules.rules) dove sono inserite le istruzioni per rinominare un hdd esterno usb, una penna usb e un masterizzatore DVD anch’ esso usb:

SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="8.07", ATTRS{model}=="      ", ATTRS{vendor}=="        ", NAME="usbpenn"
SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{model}=="SP1203N         ", ATTRS{vendor}=="SAMSUNG ", NAME="usbdisk"
SUBSYSTEMS=="scsi", DRIVERS=="sr", ATTRS{vendor}=="LITE-ON ", ATTRS{model}=="DVD RW SHM-165P6S", NAME="extdvd"

Il parametro che permette di cambiare il nome alla perifericha è come si può intuire NAME=”QUELLOCHEVUOI”. Da notare che le regole per una periferica devono essere inserite tutte sulla stessa riga.

Una piccola precisazione sull’uso dell’uguale(=): 2 uguali di seguito (==) indicano una corrispondenza, mentre uno solo indica un’assegnazione.

Ora non resta che salvare il file, staccare la periferica e ricollegarla e verifare che in /dev/ essa venga chiamata con il nome scelto, per farlo basta usare il comando ls:

ls /dev/ 

Questo è il modo più semplice e veloce per rinominare le periferiche.

NB: Udev può gestire anche altre funzioni come assegnare dei permessi particolari ai device o eseguire dei comandi. La sintassi riportata in questa guida si riferisce a versioni superiori o uguali alla 098: in questa versione sono cambiati i nomi di alcune label. Le modifiche sulle label sono riportate diseguito, quindi in linea di massima basta modificarle per avere delle regole funzionanti.

  --- Snip Changelog Udev 098
Renaming of some key names:
BUS -> SUBSYSTEMS
ID -> KERNELS
SYSFS -> ATTRS
DRIVER -> DRIVERS

versione 0.1

Un commento per “Udev: ecco come rinominare le periferiche”

  1. giuseppe scrive:

    Molto importante avere dei colleghi depositari di conoscenze come queste e con la buona volontà di renderle disponibili-
    Mi viene da pensare: se fosse possibile raccogliere tutte queste info e relativi forum, che ne fanno riferimento, in un sistema unico di consultazione per tutti gli utenti LINUX. Come un sistema ipertestuale (che in pratica la rete già rappresenta), ma non disperso in miriadi di forum, divisi per versioni LINUX, dove per ottenere delle info devi navigare ore giorni. Es. Wikipedia potrebbe essere unidea di partenza come in parte già fa. Punto di riferimento unico per tutte le distribuzioni. O forse mi sbaglio e sono solo condizionato dagli sforzi necessari per poter usufruire di un SW Open Surce- su un HW maldestramente scelto.

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *