[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Wie CF-Card unter 2.6 und udev korrekt mounten?



Am Samstag 09 Oktober 2004 19:34 schrieb Dirk Salva:
> On Sat, Oct 09, 2004 at 01:00:08PM +0200, Robert Rakowicz wrote:
> > Ist relativ einfach zu erklären. Damit wird sichergestellt, dass
> > eine CF-Kerte immer als /mnt/cfdisk erreichbar ist. Da bei USB
> > Storage Geräte also Festplatten, USB-Sticks, Card-Reader als SCSI
> > Platten dem User zur Verfügung gestellt werden, geht es leider nach
> > dem Motto wer zuerst kommt, malt zuerst. Schließt man die Geräte in
> > etwas anderer Reihenfolge und schon ist alles durcheinander.
> > U.a dafür hat man sich udev ausgedacht.
>
> Aha. Und was waeren hierbei "Model" und "Vendor", die ich ja in
> Deinen Zeilen noch eintragen muesste?
>
> kernel: usb 1-2: new full speed USB device using address 2
> kernel: scsi1 : SCSI emulation for USB Mass Storage devices
> kernel:   Vendor: ICSI      Model: CF Card       CF  Rev: 1.6B
> kernel:   Type:   Direct-Access                      ANSI SCSI
> revision: 02
> kernel: Attached scsi removable disk sda at scsi1, channel 0, id 0,
> lun 0

Hallo Dirk,

Ich habe meinen MP3Player über die Speichergröße erfasst:

## A mp3player.MP3Player
BUS="usb", SYSFS{size}="499200" , NAME="yamakawa%n" , MODE=0770 , 
GROUP=floppy
BUS="usb", SYSFS{size}="1002496" , NAME="sdcard%n" , MODE=0770 , 
GROUP=floppy

Du solltest es über die LUN versuchen, oder über diese strings:
/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0/host1/1:0:0:1
da sich da immer die letzte Ziffer unterscheidet.

Da schaust Du unter /sys nach, um den Suchstring zu finden, den Du in 
den geschweiften Klammern einsetzen mußt ( SYSFS{String}="Wert" ).
Darüber solltest Du das Ding eindeutig identifizieren können, und 
entsprechend nNamen wie CFcard, SDcard etc. für das device unter /dev 
vergeben können. Das muß dann noch in die fstab.

Das ist mir zugegeben auch noch schleierhaft 
/sys/bus/pci/devices/0000:00:07.3/usb2/2-1/2-1:1.0/host0/0:0:0:0/block/sda1/dev
hat bei mir z.B. einen eindeutig anderen Wert (8:1), als 
/sys/bus/pci/devices/0000:00:07.3/usb2/2-1/2-1:1.0/host0/0:0:0:1/block/sdb1/dev
(8:17)

Es müsste also darüber genauso wie über {size} zu definieren sein.
BUS="usb", SYSFS{dev}="8:1" , NAME="yamakawa_test%n" , MODE=0770 , 
GROUP=floppy
BUS="usb", SYSFS{size}="8:17" , NAME="sdcard_test%n" , MODE=0770 , 
GROUP=floppy

Ich würde aber auch gerne wissen, wie man das einfach über die lun oder 
den EndPoint (lsusb, usbview) ermittelt und in udev.rules einträgt.
Ich merke nämlich gerade, dass die Identifikation über dev nur zur 
hälfte funktioniert
 ls /dev/*test*
/dev/yamakawa_test1
sdcard_test? erscheint nämlich nicht, solte aber. Vielleicht findest Du 
aber etwas, wie ich z.B. mit {size}, um das device eindeutig zu 
identifizieren.


%b %c %e aus man udev könnten vielleicht noch herangezogen werden.
PROGRAM kannst Du vielleicht nutzen.

Hier ein paar Beispiele aus der udev.rules:

# if /sbin/scsi_id returns "OEM 0815" device will be called disk1
       BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", 
NAME="disk1"
# create all 15 partitions of a USB flash card reader
# note the trailing spaces in the attribute, use udevinfo(8) to examine 
your device
BUS="scsi", SYSFS{model}="CF/MD           ", 
NAME{all_partitions}="compactflash"

Vielleicht hilft das weiter:
http://www.reactivated.net/udevrules.php

Bei mir gibt das ganze folgende Unterscheidungsmerkmale:

udevinfo -a -p /sys/block/sda > sda.out && udevinfo -a -p /sys/block/sdb 
> sdb.out && diff -s sda.out sdb.out

(Auszug)

<     SYSFS{dev}="8:0"
>     SYSFS{dev}="8:16"

<     SYSFS{size}="499200"
>     SYSFS{size}="1002496"

<     ID="4:0:0:0"
>     ID="4:0:0:1"


ciao

Gerhard



Reply to: