Pagina 1 di 1

Problemi con udev e nomi device [RISOLTO]

Inviato: gio 17 ago 2006, 12:43
da manublade
Buongiorno a tutti,
avendo aggiornato alla current ed avendo quindi udev e non utilizzando più hotplug (rc.hotplug non è più eseguibile) volevo creare delle regole per l'assegnazione univoca del nomi dei miei device esterni, per la precisione un hd usb, l'iPod e due memorie usb.
Ho letto sia un articolo qui su slacky, sia vari post che una guida su internet (http://reactivated.net/writing_udev_rules.html), ma con tutte le varie regole inserite in /etc/udev/rules.d/udev.rules ogni volta che inserisco una periferica la vede sempre come sdX, e non con il nome della regola. Ogni volta che modifico il file faccio ripartire rc.udev. dove sbaglio? il sysfs è montato.
Es.
BUS=="usb", KERNEL=="sd*", SYSFS{product}=="USB2.0 Storage Device", NAME="%k", SYMLINK+="usbhd%n"

BUS=="scsi", SYSFS{model}=="AVVA07-0 ", NAME="usbhd%n"

ho seguito i vari spazi come da udevinfo.

Emanuele

Inviato: gio 17 ago 2006, 13:15
da absinthe
mi vengono in mente due cose:

1-sicuro di non aver mescolato i parametri identificativi del device? se dai

Codice: Seleziona tutto

$ udevinfo -a -p /sys/path/del/device
ottieni le diverse informazioni sul device "raggruppate" a blocchi. _NON_ puoi mescolare informazioni provenienti da blocchi diversi. per capirsi ti posto la prima parte dell'output di udevinfo per la mia pen usb:

Codice: Seleziona tutto

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

udevinfo starts with the device the node belongs to and then walks up the
device chain, to print for every device found, all possibly useful attributes
in the udev key format.
Only attributes within one device section may be used together in one rule,
to match the device for which the node will be created.

device '/sys/block/sda' has major:minor 8:0
  looking at class device '/sys/block/sda':
    SUBSYSTEM=="block"
    SYSFS{dev}=="8:0"
    SYSFS{range}=="16"
    SYSFS{removable}=="1"
    SYSFS{size}=="1965056"
    SYSFS{stat}=="       1        0        8       72        0        0        0                                                       0        0       72       72"

follow the "device"-link to the physical device:
  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-8/                                               1-8:1.0/host0/target0:0:0/0:0:0:0':
    BUS=="scsi"
    ID=="0:0:0:0"
    DRIVER=="sd"
    SYSFS{device_blocked}=="0"
    SYSFS{iocounterbits}=="32"
    SYSFS{iodone_cnt}=="0xb"
    SYSFS{ioerr_cnt}=="0x2"
    SYSFS{iorequest_cnt}=="0xb"
    SYSFS{max_sectors}=="240"
    SYSFS{model}=="JUMPDRIVE SPORT "
    SYSFS{queue_depth}=="1"
    SYSFS{queue_type}=="none"
    SYSFS{rev}=="3000"
    SYSFS{scsi_level}=="3"
    SYSFS{state}=="running"
    SYSFS{timeout}=="30"
    SYSFS{type}=="0"
    SYSFS{vendor}=="LEXAR   "

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-8/                                               1-8:1.0/host0/target0:0:0':
    BUS==""
    ID=="target0:0:0"
    DRIVER=="unknown"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-8/                                               1-8:1.0/host0':
    BUS==""
    ID=="host0"
    DRIVER=="unknown"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-8/                                               1-8:1.0':
    BUS=="usb"
    ID=="1-8:1.0"
    DRIVER=="usb-storage"
    SYSFS{bAlternateSetting}==" 0"
    SYSFS{bInterfaceClass}=="08"
    SYSFS{bInterfaceNumber}=="00"
    SYSFS{bInterfaceProtocol}=="50"
    SYSFS{bInterfaceSubClass}=="06"
    SYSFS{bNumEndpoints}=="02"
    
se seleziono BUS=="usb" e al contempo scelgo SYS{model}=="JUMPDRIVE SPORT" sto mescolando informazioni di due blocchi di dati diversi. questo è sbagliato.

2- in teoria con le ultime release di udev _NON_ dovresti inserire le tue regole in udev.rules ma in un file specifico che venga eseguito _PRIMA_ di udev.rules: udev cerca tra le varie regole ed adotta la prima regola applicabile che trova!

M

Inviato: gio 17 ago 2006, 16:28
da manublade
Ciao, grazie per l'aiuto il problema era il punto 2...
io mettevo le regole in coda a udev.rules, ho invece creato un nuovo file hd.rules con le regole per ipod, hd ed il resto e tutto funziona.

BUS=="usb", SYSFS{product}=="iPod", NAME="%k", SYMLINK+="ipod%n"

mi crea il dev /dev/ipod che altro non è che un link simbolico all'sd* di turno.
Emanuele

Inviato: gio 17 ago 2006, 16:31
da absinthe
bene!

potresti indicare nel titolo del topic che il problema è stato risolto?
thanx,

M