USB Mass Storage Geräte
Aus Gentoo Linux Wiki
| 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
- "sync"-mounten funktioniert nur mit unbrauchbarer Geschwindigkeit aufgrund eines bekannten Kernelbugs. Daher immer "async" und vor dem Abziehen halt abwarten, bis er fertig ist ;)
- 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.
