Una delle
novità introdotte dal
kernel serie 2.6 è
udev che utilizza hotplug per la gestione della connessione delle
periferiche.Quando un dispositivo viene connesso, hotplug comunica
l'evento a udev che in base alle regole in /etc/udev/udev.rules
esegue delle operazioni. Udev è una sostituzione di DEVFS in
user-space usando
sysfs e gli script di hotplug. Udev crea e
rimuove dispositivi in /dev in base alla configurazione corrente del
sistema. Fa questo in base agli eventi di hotplug nel sistema e
leggendo informazione circa questi eventi da sysfs. Le
finalità del progetto udev sono sia interessanti che
necessarie:
-
Gira in
spazio utente
-
Crea e
rimuove dinamicamente i file di dispositivo
-
Assegna
i nomi alle periferiche
-
Mette a disposizione un API
utilizzabile nello spazio utente
Per fornire queste caratteristiche, udev
è sviluppato
in
tre diversi progetti: namedev, libsysfs e, ovviamente, udev.
NAMEDEV
Namedev consente di definire i nomi delle
periferiche
indipendentemente dal programma udev. Questo permette di avere uno
modello di assegnamento dei nomi molto flessibile ed uno schema dei
nomi sviluppato da diverse entità. Questo sistema per
assegnare i nomi ai dispositivi offre un'interfaccia standard con cui
udev può interfacciarsi.
LIBSYSFS
Udev interagisce con il kernel
tramite il filesystem sysfs. Il progetto libsysfs mette a
disposizione un API per accedere alle informazione fornite dal
filesystem sysfs. Questo consente di poter interrogare qualunque tipo
di dispositivo hardware senza udev.
UDEV
Ogni volta che il kernel percepisce che
sono stati collegati
o
rimossi dei dispositivi, lancia il programma hotplug. Hotplug a sua
volta lancia
i programmi che sono stati linkati nella directory
/etc/hotplug.d/default, nella quale si trova anche un link simbolico
all'eseguibile udev. Hotplug invia le informazioni fornite dal kernel
al sistema udev che provvedere a aggiungere o rimuovere gli oppurtuni
file di periferica dalla directory /dev, senza doversi preoccupare di
che tipo di hardware si tratti.
Udev lavora interamente in spazio utente
usando chiamate ad
hotplug fatte dal kernel ogni qualvolta una periferica viene aggiunta
o rimossa dal kernel. Tutta la politica della nomenclatura e il
controllo dei permessi viene fatto in user-space. Udev lavora
totalmente in userspace come un qualsiasi
programma lato utente, non viene quindi riconosciuto dal kernel come
un proprio sottosistema, ma per poter lavorare con udev abbisogna che
il kernel abbia in fase di compilazione abilitate le opzioni:
CONFIG_SYSFS=y
CONFIG_HOTPLUG=y
Bisogna avere una directory /sys in root
per
montarvi il sysfs. Questo avviene almeno per le nuove installazioni,
o anche dopo il cambio da devfs a udev. Controllare comunque che
esista tale directory altrimenti crearla a mano con mkdir /sys. Occorre
modificate /etc/fstab per permettere
all'avvio di montare in automatico la directory /sys, quindi
aggiungete la seguente voce al vostro /etc/fstab:
none /sys
sysfs defaults 0 0
Con la vecchia gestione dei dispositivi, un
apparecchio
(principalmente devices rimovibili) poteva essere identivicato una
volta con un nome ed un'altra con un altro, con udev questo problema
viene ad essere risolto una volta per tutte. Ad esempio per una penna
USB, dopo averla innestata
bisogna dare il comando dmesg e cercare a quale device è
stata
assegnata, avuta l'informazione con il comando udevinfo si cercano le
altre informazioni basilari:
udevinfo -q
path -n device_periferica
udevinfo -a
-p /sys/path
Cercate la prima riga che corrisponda a:
BUS=”xxx” , e le
altre informazioni importanti: SYSFS{model}=”xxx” e
SYSFS{vendor}=”xxx”. Adesso non resta che
modificare il file /etc/udev/udev.rules ed aggiungere la stringa
giusta in cima al file, nel caso di una penna USB:
BUS=”scsi”,
SYSFS{vendor}=”USB
2.0”,
SYSFS{model}=”Flash Disk”,
NAME=”usbpen%n”,
SYMLINK=”%k”
Ora non rimane che provare il tutto:
mount
/dev/usbpen1 /media/usbpen
se tutto è a posto l'ultima cosa
che rimane da fare
è
inserire una riga nel file /etc/fstab:
/dev/usbpen1 /media/usbpen auto
rw,user,noauto,sync 0 0
Con questo abbiamo finito, ora la nostra
penna usb è
riconosciuta dal sistema con un nome univoco, riferimento che
rimarrà
invariato anche se avete altri dispositive del tipo usb mass storage.
|