Es gibt viele verschiedenartige Speichermedien, die an USB angeschlossen werden, z.B. LinuxHardware/DigitalKameras oder LinuxHardware/UsbSpeichermedien. Diese Speichermedien basieren alle auf dem gleichen Prinzip und auch das Einbinden ins System verläuft nahezu gleich. Dies wird im Folgenden beschrieben.

USB Speichermedien in Linux einbinden

Zuerst muss das Kernel-Modul usb_storage (USB support -> USB Device Class drivers -> USB Mass Storage support) und evtl. Abhängigkeiten geladen werden, dann kann das Dateisystem des Geräts gemounted werden:

modprobe usb_storage
mount /dev/sda1 /mnt/myusbstorage
# oder für CD-Laufwerke:
mount /dev/scd0 /mnt/usbcd

Man kann usb_storage auch direkt in den Kernel kompilieren. Dann muss man das Modul usb_storage nicht mit modprobe geladen werden. Außerdem muss im Kernel SCSI Support und SCSI disk support aktiviert sein. Bei vielen Distributionen ist dies automatisch der Fall. Unter USB findet sich ein usbdevfs für USB Medien. Dieses darf aber auf keinen Fall aktiviert sein, wenn man /dev Filesystem (unter File Systems -> Pseudo Filesystems) aktiviert hat, dieses braucht man allerdings unbedingt in 99% der Fälle.

Bei manchen Kartenlesern muss die Kerneloption "Probe all LUNs on each SCSI device" gesetzt werden (z.B. Hama CardReaderWriter 6 in 1).

Eine ausführliche Anleitung liefert das Buch The Linux USB sub-system von Brad Hards.

Wenn man bei einem Multi-Speicherkartenleser und Verwendung von udev das Problem hat, daß auf die Speicherkarten nur zugegriffen werden kann, wenn diese beim Booten des Rechners oder Anschließen des Kartenleser in dem entsprechenden Slot eingesteckt waren und ansonsten eine Fehlermeldung kommt, die besagt, daß /dev/sd?x kein gültiges blockorientiertes Gerät sei liegt dieses daran, daß udev für jeden Slot des Kartenlesers standardmäßig nur das jeweilige Device /dev/sd? anlegt, wenn es kein eingestecktes Medium mit Partitionstabelle findet. Um dieses zu umgehen und für alle möglichen Partitionen die jeweiligen Blockdevices gleich anzulegen fügt man folgende Zeile zu den auszuführenden Regeln (bei Debian z.B. in /etc/udev/udev.rules) für udev hinzu:

#create all blockdevices for external card reader

BUS=="usb", KERNEL=="sd?",              NAME{all_partitions}="%k"

Weit verbreitet ist auch der gnome-volume-manager. Obwohl hauptsächlich für Gnome gedacht, lässt sich seine Funktionalität auch unter anderen Window-Managern nutzen.

Anmerkungen

Manche Distributionen haben diesen Schritt mittels HotPlug automatisiert, so dass man direkt ohne weitere Schritte auf die Daten zugreifen kann.

Hierbei ist zu beachten, dass das Laden von Kernel-Modulen nur als root möglich ist. Alternativ kann man auch dafür sorgen, dass das Modul gleich beim booten geladen wird. Das Modul erzeugt dann das Gerät /dev/sd(x). Sollten sich keine anderen SCSI Geräte oder ähnliches (wie z.B. IDE-Brenner oder Parallelport-Scanner, die über eine SCSI-Emulation angesprochen werden) im System befinden, ist /dev/sda das Mittel der Wahl. Ansonsten ist Probieren angesagt oder man schaut sich mal /proc/scsi/scsi an.

Auch haben einige der Speichermedien das Problem, dass sie mit einem proprietären Dateisystem arbeiten. Dies kann man meist umgehen, in dem man einfach ein Dateisystem seiner Wahl auf dem Gerät erzeugt, also z.B. vfat, damit es auch unter Windows lesbar bleibt. Wenn das fehlschlägt, bieten die meisten Geräte wie z.B. Kameras die Möglichkeit, sich neu zu formatieren oder man formatiert unter Windows mit dem entsprechenden Treiber neu. Allerdings: Wenn ich hier schreibe "kann man meist" oder "die meisten Geräte", dann meine ich das auch so! Deshalb sollte man sich vorher vergewissern ob die Formatierung rückgängig gemacht werden kann, falls das Gerät damit nicht zurecht kommt.

xD Picture Card

Um eine xD-Card zu nutzen muss man die Karte als msdos (FAT16) mounten.

SD-Karten und Schreibschutz

Die allermeisten USB-Sticks haben mittlerweile keinen Schreibschutz per Schalter mehr (Ausnahme: Trekstor CS [...]). Falls man ihn für selbstgebackene Live-Cds oder Firmware aber doch lieber hätte, kann eine SD-Karte (Secure Digital) und ein kleiner Kartenleser helfen. Man sollte sich aber nicht darauf verlassen, dass der Schreibschutz von SD-Karten beim Einbinden tatsächlich wirksam wird. Wenn der Kartenleser (wie z.B. der genannte Hama CardReader 6 in 1) die Plastiklasche ("Lock") gar nicht detektiert, bleibt das Medium beschreibbar. In diesem Fall ist kein echter Hardware-Schreibschutz vorhanden. Also vor dem Kauf das Gerät vorher genau anschauen oder ausprobieren. Gerät(e), die den Schreibschutz erkennen: Carat electronics Card Reader (SD-/SDHC und MMC).

Tips

USB Stick nur noch Readonly

Der USB Stick (z.b in Ubunut9.1) wird unter Gnome nur noch als ReadOnly gemoutet, kein schreiben möglich. Ursache kleine defekte im FAT System des Sticks, man erkennt es aber nicht, kein Alarm. Erkennen kann man es nur im Terminal mit dem Befehl dmesg. Mit dosfsck auf das Gerät brachte aber leider kein Erfolg. Ich habe es neu formatiert.

Fragen

Wie kann ein bestimmtes Gerät immer auf denselben Mountpoint legen? Ich habe hier einen CF-Adapter und einen USB-Stick, die beide per usb-storage gemountet werden sollen; das erste von den beiden, das eingesteckt wird, bekommt immer sda, das zweite sdb. Wie kann ich jetzt unabhängig davon den USB-Stick immer auf /mnt/usb-stick mounten? --JoergHoh


Ich benutze SuSE 8.2 und einen Memory-Solution Memory-Stick, mein usb funktioniert mit einem Scanner und einer Kamera wunderbar. Wenn ich allerdings den Memory-Stick reinstecke bleibt mein usb-storage Modul mit einem (initializing) hängen und Befehle wie rchotplug restart bleiben auch hängen. Ein less /proc/scsi/scsi zeigt mir eine usb flash-disk mit direct access an, mounten von dev/sda1oder ein fdisk -l /dev/sda bleibt auch hängen.

Folgender WorkAround ist möglich:

Ich habe beide WorkArounds (auch kombiniert) ausprobiert und habe immer noch das gleiche Problem, auch ein cat /proc/bus/usb/devices bleibt hängen und liefert keine Ausgabe. Vielleicht liegt es ja an der Reihenfolge der Usb-Module, die ausprobiert werden. Und vielleicht weiss da jemand auch Rat wie man die Reihenfolge tauschen könnte. Im Moment habe ich die Standardreihenfolge HOTPLUG_USB_HOSTCONTROLLER_LIST="ehci-hcd ohci-hcd uhci-hcd usb-uhci uhci usb-ohci ehci-hcd" eingetragen. Danke

Nachdem nun ein neuer Kernel(2.4.21) da ist habe ich auch eine Teillösung des Problems erreicht:


Nachdem hotplug den USB-Stick erkannt hat (Icon auf dem Desktop) in einer Konsole 'fdisk /dev/sdx' (x steht für das SCSI device, einfach mal 'cat /etc/fstab' ausführen um den Buchstaben herauszufinden) eingeben, die Partition löschen und neu anlegen, als FAT16 und bootable kennzeichnen und dann die Partition formatieren. Vielleicht geht das Formatieren auch ohne Neuanlegen der Partition.


Eine rw-Freischaltung für Linux ist mit dem beiliegendem Windows-98-UMSD-Utility möglich, vorgehen wie folgt:
1. Inbetriebnahme unter Windows 98, Starten des UMSD-Utilities
2. Einstellung:
- UMSD: Public Area Only --> Resize (Neuformatierung)
damit wird vermutlich der gesicherte Bereich des Sticks komplett in den ungesicherten Bereich überführt, so daß der Memory-Stick für Linux rw-freigeschalten ist.
Anschließend getestet mit RedHat-Linux 8.0 (mount /dev/sda1 /mnt/usb1, sda1 und usb1 ist von der eigenen Konfiguration abhängig)


Wie erreicht man, daß wenn man einen USB Memory-Stick einschiebt, auf dem Desktop (KDE3) ein Icon auftaucht ?

Und: Wie kann man im Konqueror ein neues Device fuer ein USB-Drive einrichten? Rechtsklick/new/devices/harddisk zeigt zwar einen Dialog an, aber was auch immer ich da eingebe, fuehrt nur zu der Fehlermeldung "unknown device <devicename>".


Kennt jemand ein Tool wie bei SuSE Plugger, das das Vorhandensein von USB Geräten überwacht und bei Bedarf mountet?

Siehe auch

usbmount

Für Debian (und auch dessen Abkömmlinge) gibt es jetzt usbmount. Man braucht dazu nur noch udev und dann werden sämtliche USB-Speichermedien auch parallel ohne weiteres zutun gemountet. Anstecken und es ist ein weiteres Laufwerk verfügbar. Es ist auch egal welches Filesystem verwendet wird wenn man die benötigten Filesysteme in der Konfigurationsdatei eingetragen hat (Zu finden unter /etc/usbmount/usbmount.conf)

Weitere Infos unter

Anmerkung zu USBmount: USBmount wird nicht mehr aktualisiert und ist auch nur dann sinnvoll, wenn man den USB-Stick z.B. als /media/usb0 ansprechen will. Die durch udev gemounteten Sticks werden über deren Label gemountet, z.B. /media/Mein_Stick, falls der USB-Stick Mein_Stick heißt.

UsbSpeichermedienEinbinden (zuletzt geändert am 2010-10-07 19:28:17 durch sotel)