Repository 32bit  Forum
Repository 64bit  Wiki

Slackware e udev: differenze tra le versioni

Da Slacky.eu.
Riga 1: Riga 1:
[[Category:Configurazione]]
[[Category:Configurazione]]
= Introduzione: =
+
= Introduzione =
Questo manuale si basa sull'esperienza che ho avuto su un computer di scuola che udev manco sapeva cosa fosse, ed è la procedura migliore per infilare udev partendo da una Slackware 9.1 con kernel 2.4.xx<br>
Questo manuale si basa sull'esperienza che ho avuto su un computer di scuola che udev manco sapeva cosa fosse, ed è la procedura migliore per infilare udev partendo da una Slackware 9.1 con kernel 2.4.xx<br>
Riga 12: Riga 12:
N.B. Se non sapete compilare un kernel, provate un precompilato, ma fate attenzione che abbia il supporto per sysfs.
N.B. Se non sapete compilare un kernel, provate un precompilato, ma fate attenzione che abbia il supporto per sysfs.
= Configurazione: =
+
= Configurazione =
Installati udev e hotplug, fate attenzione che il kernel supporti il sysfs. Bootate col 2.6.xx, ora è di dovere una linea per /etc/fstab:
Installati udev e hotplug, fate attenzione che il kernel supporti il sysfs. Bootate col 2.6.xx, ora è di dovere una linea per /etc/fstab:
Riga 31: Riga 31:
Ora i devices sono molti di meno.
Ora i devices sono molti di meno.
= Come funziona udev, in breve: =
+
= Come funziona udev, in breve =
Ora avete solo i devices che vi servono, con qualche eccezione... ma come fare per avere effettivamente SOLO quelli che volete ?, e magari avere la vostra macchina fotografica in /dev/foto ?<br>
Ora avete solo i devices che vi servono, con qualche eccezione... ma come fare per avere effettivamente SOLO quelli che volete ?, e magari avere la vostra macchina fotografica in /dev/foto ?<br>
Riga 39: Riga 39:
Vi darà le informazioni sul vostro primary master IDE (Vecchie versioni di udev non accettano /sys anteposto al percorso nel sysfs, dunque la sintassi corretta è /block/hda). Le informazioni in /sys sono lette da udev, che dal sysfs risale al nome del device, e crea il nodo nella udev-root, nella stragrande maggioranza dei casi, /dev.
Vi darà le informazioni sul vostro primary master IDE (Vecchie versioni di udev non accettano /sys anteposto al percorso nel sysfs, dunque la sintassi corretta è /block/hda). Le informazioni in /sys sono lette da udev, che dal sysfs risale al nome del device, e crea il nodo nella udev-root, nella stragrande maggioranza dei casi, /dev.
= Regole: =
+
= Regole =
Ora esaminiamo un caso interessante.<br>
Ora esaminiamo un caso interessante.<br>
Riga 92: Riga 92:
/dev/nikon C'è? Ci siamo riusciti.
/dev/nikon C'è? Ci siamo riusciti.
= Conclusione: =
+
= Conclusione =
Se avete un minimo di fantasia potete riuscire a inventare le vostre regole per fare qualsiasi cosa, magari per eliminare tutte quelle tty inutili che non userete mai, per non creare assolutamente devices tipo, che so, TTYSx, visto che ormai porte parallele e seriali stanno obsolescendo in maniera esponenziale.<br>
Se avete un minimo di fantasia potete riuscire a inventare le vostre regole per fare qualsiasi cosa, magari per eliminare tutte quelle tty inutili che non userete mai, per non creare assolutamente devices tipo, che so, TTYSx, visto che ormai porte parallele e seriali stanno obsolescendo in maniera esponenziale.<br>

Versione delle 13:37, 17 set 2006

Indice

Introduzione

Questo manuale si basa sull'esperienza che ho avuto su un computer di scuola che udev manco sapeva cosa fosse, ed è la procedura migliore per infilare udev partendo da una Slackware 9.1 con kernel 2.4.xx
N.B. Se non avete capito di cosa stia parlando, vi consiglio prima di leggere qualche doc relativa a udev.

SE NON USATE SLACKWARE Questo manuale può risultarvi utile nelle ultime parti riguardanti le regole di udev, in quanto non ci sono moltissime risorse in Italiano.

Di udev esistono i binari ufficiali, quindi se usate swaret con i repository ufficiali:

swaret --install udev o --upgrade

Dopodichè vi occorre hotplug assolutamente, e fate attenzione che hotplug sia avviato al boot: un giretto su etc/rc.d può darvi una mano. Ad ogni modo se avete una 9.1 o una 10.0, no problem. Se sapete cosa sia udev, saprete anche che gira SOLO sui kernel 2.6, dunque apprestatevi a compilarne uno.
N.B. Se non sapete compilare un kernel, provate un precompilato, ma fate attenzione che abbia il supporto per sysfs.

Configurazione

Installati udev e hotplug, fate attenzione che il kernel supporti il sysfs. Bootate col 2.6.xx, ora è di dovere una linea per /etc/fstab:

none /sys sysfs defaults 0 0

Assicuratevi che la dir /sys ci sia, altrimenti [come ho fatto io a scuola] createla da voi. Assicuratevi che /etc/rc.d/rc.udev sia eseguibile. Dopodichè il resto è facile facile. Altro non dovete fare che:

# mount /sys
# /etc/rc.d/rc.hotplug restart
# /etc/rc.d/rc.udev restart

Ora udev dovrebbe essere in funzione, per controllare:

# ps aux | grep udevd

Ora:

# cd /dev
# ls

Vi darà il solito pacco di devices... sapete che fate? BRUTALMENTE

# rm -rf /dev/*

Alcune cose non le cancellerà, perchè già in uso, non importa

# udevstart

Ora i devices sono molti di meno.

Come funziona udev, in breve

Ora avete solo i devices che vi servono, con qualche eccezione... ma come fare per avere effettivamente SOLO quelli che volete ?, e magari avere la vostra macchina fotografica in /dev/foto ?
Si può fare.
Allora, tanto per cominciare studiamoci un po' come funziona udev. Il demone hotplug mette tutte le informazioni su tutti i devices collegati alla macchina in questione su un filesystem che è abbastanza simile al procfs. Questo filesystem altro non è che il sysfs, che ha i dati su tutti quei devices. Esiste un comando chiamato "udevinfo" per avere informazioni su un determinato device, ad esempio:

# udevinfo -a -p /sys/block/hda

Vi darà le informazioni sul vostro primary master IDE (Vecchie versioni di udev non accettano /sys anteposto al percorso nel sysfs, dunque la sintassi corretta è /block/hda). Le informazioni in /sys sono lette da udev, che dal sysfs risale al nome del device, e crea il nodo nella udev-root, nella stragrande maggioranza dei casi, /dev.

Regole

Ora esaminiamo un caso interessante.
Ho una macchina fotografica, nel mio caso una Nikon Coolpix, e voglio fare in modo che il device creato sia /dev/nikon. Come fare? udev non fa niente in disordine, segue delle regole, e queste regole sono scritte in /etc/udev/rules.d/udev.rules. Il device associato alla mia fotocamera è sda1:

# udevinfo -a -p /sys/block/sda/sda1/

Nel mio caso c'è un pezzo molto interessante:

looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0/usb2/2-1' :
  BUS="usb"
  ID="2-1"
  SYSFS{bConfigurationValue}="1"
  SYSFS{bDeviceClass}="00"
  SYSFS{bDeviceProtocol}="00"
  SYSFS{bDeviceSubClass}="00"
  SYSFS{bMaxPower}="  0mA"
  SYSFS{bNumConfigurations}="1"
  SYSFS{bNumInterfaces}=" 1"
  SYSFS{bcdDevice}="0100"
  SYSFS{bmAttributes}="c0"
  SYSFS{detach_state}="0"
  SYSFS{devnum}="2"
  SYSFS{idProduct}="010a"
  SYSFS{idVendor}="04b0"
  SYSFS{manufacturer}="NIKON"
  SYSFS{maxchild}="0"
  SYSFS{product}="Nikon Digital Camera E4500"
  SYSFS{serial}="000004549072"
  SYSFS{speed}="12"
  SYSFS{version}=" 1.10"

e precisamente tre righe:

SYSFS{product}="Nikon Digital Camera E4500"
SYSFS{manufacturer}="NIKON"
BUS="usb"

Penso che parlino da sole. Ora, aprendo il file udev.rules, ci rendiamo conto che:

KERNEL -> nome con cui il kernel identifica un device
NAME -> nome DA INVENTARE
SYMLINK -> symlink da assegnare a quel device

E in più

%k -> nome assegnato dal kernel
%n -> numero assegnato dal kernel

Dunque

KERNEL="sda1", NAME="%k"

creerà un device che udev identifica da sysfs come sda1, e lo chiama col nome con cui è identificato, appunto sda1. E questo noi non lo vogliamo, perchè se sda1 è la nostra macchina fotografica, si dovrà chiamare "nikon", e non "sda1". Tuttavia dobbiamo fare attenzione. Ho avuto una discreta esperienza nell'infilare block devices USB nel mio computer, tanto per citarne tre:

  • Pennina USB
  • HD USB
  • Macchina Fotografica

Ora, tutti questi dispositivi vengono riconosciuti come sd, e se l'hard disk ha una prima partizione (si spera), quella sarà sda1. Come fare? Ecco che ci tornano utili quelle righe. Se noi aggiungiamo il nome del prodotto, del bus e del produttore (basta anche solo il primo), avremmo buone probabilità, se non OTTIME, che inserita QUELLA macchina fotografica, solo QUELLA avrà come nome /dev/nikon, dunque:

KERNEL="sda1", SYSFS{product}="Nikon Digital Camera E4500", NAME="nikon"

Vogliamo provare?

# rm -rf /dev/sda*
# udevstart
# ls

/dev/nikon C'è? Ci siamo riusciti.

Conclusione

Se avete un minimo di fantasia potete riuscire a inventare le vostre regole per fare qualsiasi cosa, magari per eliminare tutte quelle tty inutili che non userete mai, per non creare assolutamente devices tipo, che so, TTYSx, visto che ormai porte parallele e seriali stanno obsolescendo in maniera esponenziale.
udev permette tutto, su /dev.
Ricordatevi alcune cose. Non concedetevi TROPPA libertà nel rinominare i devices, se volete stafare mettendo /dev/pasticcio al posto di /dev/urandom ricordatevi almeno di specificare SYMLINK="urandom" perchè tanto un sacco di programmi andranno a cercarlo. Se magari TUTTI i devices tipo /dev/null, zero etc. avessero il rispettivo path infilato in variabili che i programmi leggono, ogni sistema sarà VERAMENTE personalizzabile, però non è ancora tempo per tutto questo, forse :) Così come quando il mio "root" cambiò nome in qualcosa di più decente

marco@orchid ~ $ su -
Password:
orchid ~ # whoami
dio

Autore: Feedback

Strumenti personali
Namespace

Varianti