USB Mass Storage Geräte

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
Installationsmethoden LiveCDs Kernel & Hardware Laptops & Notebooks Portage System Netzwerke & Services X Software Anderes alphabetischer HOWTO Index


Inhaltsverzeichnis

[Bearbeiten] Kernel einrichten

  • Support für USB-Massenspeicher einrichten.

cd /usr/src/linux make menuconfig

  • Kernel Version 2.4
SCSI support  --->
     <*> SCSI support
     --- SCSI support type (disk, tape, CD-ROM)
     <*>   SCSI disk support
File systems --->
     <*> DOS FAT fs support
     <*>   MSDOS fs support
     < >     UMSDOS: Unix-like file system on top of standard MSDOS fs
     <*>   VFAT (Windows-95) fs support 
USB support --->
     <*> Support for USB 
     <*>   UHCI (Intel PIIX4, VIA, ...) support 
     <*>   OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support 
     <*>   USB Mass Storage support 
  • Kernel Version 2.6
Device Drivers  --->
  SCSI device support  --->
     <*> SCSI device support
     <*>   SCSI disk support
File systems  --->
  DOS/FAT/NT Filesystems  --->
     <*> DOS FAT fs support
     <*>   MSDOS fs support
     <*>   VFAT (Windows-95) fs support
Device Drivers  --->
  USB support  --->
     <*> Support for Host-side USB
     <*>   EHCI HCD (USB 2.0) support
     <*>   OHCI HCD support
     <*>   UHCI HCD (most Intel and VIA) support
     <*>   USB Mass Storage support

Den Kernel_kompilieren und den Rechner neu starten. Wenn Sie Module verwenden, dann vergewissern Sie sich, dass alle geladen werden.

[Bearbeiten] Kernelausgabe überprüfen

Führen Sie dmesg aus und überprüfen Sie, ob ihr USB-Gerät gefunden wurde.

dmesg | grep usb
  • Ausgabe von dmesg:
hub.c: new USB device 00:09.0-2, assigned address 3
usb-storage: act_altsettting is 0
usb-storage: id_index calculated to be: 47
usb-storage: Array length appears to be: 68
usb-storage: Vendor: JMTek
usb-storage: Product: USBDrive
usb-storage: USB Mass Storage device detected
usb-storage: Endpoints: In: 0xe55f7d40 Out: 0xe55f7d54 Int: 0xe55f7d68 (Period 255)
usb-storage: Found existing GUID 0c7600050000000000000000
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 3


  • Erhalten Sie Ausgabe wie diese:
usb.c: USB device 4 (vend/prod 0xdda/0x2005) is not claimed by any active driver.

wurden noch nicht alle Module (usb-storage) geladen.

[Bearbeiten] Gerät mounten

  • Mountpoint erstellen

mkdir /mnt/usbstick

  • Dateisystem mounten

mount -t vfat /dev/sda1 /mnt/usbstick

  • fstab einrichten

Fügen Sie folgende Zeile in die Datei /etc/fstab ein.

Datei: /etc/fstab
/dev/sda1               /mnt/usbstick      vfat         noauto,user,noexec     0 0


Wer hierbei (manuell mounten oder via fstab) einen Fehler bekommt, sollte die Option codepage=850 mit anhängen.

[Bearbeiten] Symlink via udev

Dazu wird Udev benötigt.

  • ID vom Gerät via /sys auslesen

udevinfo -a -p `udevinfo -q path -n /dev/sda`

(Alternativ dazu bietet sich auch das Programm usbview an.)

Einer der Werte die ausgegeben wurden enthält die Seriennummer.
z.b. 'SYSFS{serial}="0402170100000020EB5D00000000000"'
Wir können Seriennummern verwenden, um diese als Richtlinien in udev verwenden zu lassen. Dazu fügen wir der Datei /etc/udev/rules.d/10-local.rules folgende Regel ein.

Datei: /etc/udev/rules.d/10-local.rules
BUS="usb", SYSFS{serial}="0402170100000020EB5D00000000000", KERNEL="sd?1", NAME="%k", SYMLINK="usbdrive"


[Bearbeiten] Beispiel mp3 usb Stick

  • Wenn der Stick angesteckt ist brauchen wir erstmal die Gerätedaten :

udevinfo -a -p /sys/block/sdb

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/sdb' has major:minor 8:16
 looking at class device '/sys/block/sdb':
   KERNEL=="sdb"
   SUBSYSTEM=="block"
   SYSFS{dev}=="8:16"
   SYSFS{range}=="16"
   SYSFS{removable}=="1"
   SYSFS{size}=="256000"
   SYSFS{stat}=="     191        3      292     1314        0        0        0        0        0     1314     1314"
follow the "device"-link to the physical device:
 looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1:1.0/host8/target8:0:0/8:0:0:0':
   BUS=="scsi"
   ID=="8:0:0:0"
   DRIVER=="sd"
   SYSFS{detach_state}=="0"
   SYSFS{device_blocked}=="0"
   SYSFS{max_sectors}=="240"
   SYSFS{model}=="USB MP3         "
   SYSFS{queue_depth}=="1"
   SYSFS{queue_type}=="none"
   SYSFS{rev}=="1.06"
   SYSFS{scsi_level}=="3"
   SYSFS{state}=="running"
   SYSFS{timeout}=="30"
   SYSFS{type}=="0"
   SYSFS{vendor}=="        "
 looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1:1.0/host8/target8:0:0':
   BUS==""
   ID=="target8:0:0"
   DRIVER=="unknown"
   SYSFS{detach_state}=="0"
 looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1:1.0/host8':
   BUS==""
   ID=="host8"
   DRIVER=="unknown"
   SYSFS{detach_state}=="0"
 looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1:1.0':
   BUS=="usb"
   ID=="1-1:1.0"
   DRIVER=="usb-storage"
   SYSFS{bAlternateSetting}==" 0"
   SYSFS{bInterfaceClass}=="08"
   SYSFS{bInterfaceNumber}=="00"
   SYSFS{bInterfaceProtocol}=="50"
   SYSFS{bInterfaceSubClass}=="06"
   SYSFS{bNumEndpoints}=="03"
   SYSFS{detach_state}=="0"
 looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1':
   BUS=="usb"
   ID=="1-1"
   DRIVER=="usb"
   SYSFS{bConfigurationValue}=="1"
   SYSFS{bDeviceClass}=="00"
   SYSFS{bDeviceProtocol}=="00"
   SYSFS{bDeviceSubClass}=="00"
   SYSFS{bMaxPower}=="100mA"
   SYSFS{bNumConfigurations}=="1"
   SYSFS{bNumInterfaces}==" 1"
   SYSFS{bcdDevice}=="0100"
   SYSFS{bmAttributes}=="80"
   SYSFS{configuration}==""
   SYSFS{detach_state}=="0"
   SYSFS{devnum}=="13"
   SYSFS{idProduct}=="0150"
   SYSFS{idVendor}=="0d7d"
   SYSFS{manufacturer}==" "
   SYSFS{maxchild}=="0"
   SYSFS{product}=="USB MP3     "
   SYSFS{serial}=="1431040801E3"
   SYSFS{speed}=="12"
   SYSFS{version}==" 1.10"
 looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1':
   BUS=="usb"
   ID=="usb1"
   DRIVER=="usb"
   SYSFS{bConfigurationValue}=="1"
   SYSFS{bDeviceClass}=="09"
   SYSFS{bDeviceProtocol}=="00"
   SYSFS{bDeviceSubClass}=="00"
   SYSFS{bMaxPower}=="  0mA"
   SYSFS{bNumConfigurations}=="1"
   SYSFS{bNumInterfaces}==" 1"
   SYSFS{bcdDevice}=="0206"
   SYSFS{bmAttributes}=="c0"
   SYSFS{configuration}==""
   SYSFS{detach_state}=="0"
   SYSFS{devnum}=="1"
   SYSFS{idProduct}=="0000"
   SYSFS{idVendor}=="0000"
   SYSFS{manufacturer}=="Linux 2.6.11-gentoo-r6 uhci_hcd"
   SYSFS{maxchild}=="2"
   SYSFS{product}=="Intel Corp. 82801CA/CAM USB _Hub #1_"
   SYSFS{serial}=="0000:00:1d.0"
   SYSFS{speed}=="12"
   SYSFS{version}==" 1.10"
 looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0':
   BUS=="pci"
   ID=="0000:00:1d.0"
   DRIVER=="uhci_hcd"
   SYSFS{class}=="0x0c0300"
   SYSFS{detach_state}=="0"
   SYSFS{device}=="0x2482"
   SYSFS{irq}=="11"
   SYSFS{local_cpus}=="01"
   SYSFS{subsystem_device}=="0x4541"
   SYSFS{subsystem_vendor}=="0x8086"
   SYSFS{vendor}=="0x8086"
 looking at the device chain at '/sys/devices/pci0000:00':
   BUS==""
   ID=="pci0000:00"
   DRIVER=="unknown"
   SYSFS{detach_state}=="0"
  • anlegen einer udev-Regel

nano -w /etc/udev/rules.d/06-usbsticks.rules

BUS=="usb", KERNEL=="sd*", SYSFS{serial}=="1431040801E3", NAME="%k", SYMLINK="usbmp3hd%n", GROUP="disk"
  • NAME="%k", SYMLINK="usbmp3hd%n" bewirkt das Anlegen von Links auf die devices. Es wird ein Link für das Gerät (usbmp3hd) und für jede darauf befindliche Partition erstellt (usbmp3hd*).
/dev/usbmp3hd -> sdb
/dev/usbmp3hd1 -> sdb1
/dev/usbmp3hd2 -> sdb2
  • GROUP="disk" bewirkt die Erstellung der Schnittstellen mit Gruppeneigentümer 'disk'. Damit kann jeder Benutzer der Gruppe auf das Gerät zugreifen.
  • Jetzt fehlt nur noch die Einträge in fstab

nano -w /etc/fstab

/dev/usbmp3hd1          /mnt/usb/mp3stick vfat          noauto,users,rw,sync    0 0

[Bearbeiten] Bekannte Probleme

  1. "sync"-mounten funktioniert nur mit unbrauchbarer Geschwindigkeit aufgrund eines bekannten Kernelbugs. Daher immer "async" und vor dem Abziehen halt abwarten, bis er fertig ist ;)
  2. Wenn das Gerät nach einiger Zeit nicht mehr sichtbar ist, bzw. nicht mehr eingehängt, kann das an hotplug liegen. Dies tritt vor allem gerne bei USB-Festplatten auf, da irgendein Automatismus meint, diese Platten irgendwann auszuhängen.

[Bearbeiten] Weiterführende Links

Udev Rules
Udev

'Persönliche Werkzeuge