Massenspeicher, USB-Stick / USB-Kamera installieren

USB ist schon eine feine Sache, denn man kann während des Betriebs beliebig Geräte anschließen und wieder entfernen, und somit ist USB heute kaum noch wegzudenken. Unter Linux wird USB hervorragend unterstützt und somit stellt es kein Problem dar, beispielsweise eine externe USB-Festplatte, einen USB-Stick oder eine USB-Digitalkamera zu betreiben. In dieser Anleitung wird beschrieben, welche Schritte man vollziehen muss, damit man bequem mit solchen USB-Massenspeichern (auch USB-Storage genannt) arbeiten kann.

1. Schritt: Kernel überprüfen

Wie bei fast jeder Anleitung beginnt man, den Kernel zu überprüfen, ob die Kernel-Sources und die richtigen Module installiert sind. Dazu macht man wie gewohnt folgendes:


   Sind die Kernel-Sources da?
   # ls /usr/src/
   linux linux-2.6.9 //Hier sollte etwas wie linux-2.xxx stehen

   Ist Systemlink zum Kernel da?
   # ls -n /usr/src/
   11 23. Dez 12:22 linux -> linux-2.6.9
 

Wenn die Kernel-Sourcen vorhanden sind, kann man mit dem nächsten Schritt beginnen. Bei denjenigen, wo die Kernel-Sources nicht vorhanden sind, sollten sich entweder einen aktuellen Kernel unter www.kernel.org herunterladen und installieren. Eine Anleitung zum Kernel-Installieren findet man hier. Einen Kernel selbst zu kompilieren erfordert aber Kenntnisse zur kompletten Hardware des jeweiligen Systems. Besitzer einer Distribution wie Suse oder Mandrake können die Kernel-Sources aber bequem per Softwaremanager nachinstallieren.

Der nächste Schritt ist, die entsprechenden Features in dem Kernel zu aktivieren. Es müssen zwei Sachen funktionieren, nämlich USB an sich und SCSI. In der folgenden Auflistung sind die elementaren Voraussetzungen aufgelistet. Zum USB-Support muss man hinzufügen, dass EHCI, OHCI bzw. UHCI abhängig vom Chipsatz sind und man testen muss, welches von diesen funktioniert. Bei den SCSI-Einträgen ist es keine Pflicht, die Features als Module () zu kompilieren. Wenn man diese fest einkompiliert, so werden die SCSI-Treiber automatisch geladen. Da in diesem Fall die SCSI-Treiber nur dann gebraucht werden, wenn ein USB-Gerät angeschlossen wird, wurden diese als Module eingerichtet. Man muss diese dann entsprechend mit dem Befehl "modprobe" nachladen, worauf hier aber später noch eingegangen wird.

Folgende Einträge müssen im Kernel vorhanden sein:

  // USB muss konfiguriert sein
Device Drivers --->
USB support --->
<*> Support for Host-side USB
--- Miscellaneous USB options
[*] USB device filesystem
--- USB Host Controller Drivers
<*> EHCI HCD (USB 2.0) support
<*> OHCI HCD support
< > UHCI HCD (most Intel and VIA) support
//Ob OHCI, EHCI oder UHCI hängt vom Chipsatz ab
<m> USB Mass Storage support</m>
  // SCSI muss konfiguriert sein
SCSI device support --->
<*> SCSI device support
--- SCSI support type (disk, tape, CD-ROM)
<m> SCSI disk support
<m> SCSI generic support
</m></m>

Jetzt muss der Kernel kompiliert und das System von dem neuen Kernel gestartet werden. Wie man einen Kernel einrichtet, erfährt man hier. Das war es eigentlich auch schon und wenn man alles richtig gemacht hat, sollte der Befehl "dmesg" ein USB-Gerät vermelden, wenn ein solches an den PC angeschlossen hat. Dieses Gerät erscheint dann in der Regel als /dev/sda1, welches man dann in ein beliebiges Verzeichnis mounten kann.

Funktioniert USB?

 # dmesg
usb-storage: Bad target number (7:0)
usb-storage: scsi cmd done, result=0x40000
usb-storage: *** thread sleeping.
USB Mass Storage device found at 4

dmesg sollte ihnen nun ein Gerät anzeigen, in diesem Fall wurde ein Massenspeicher (USB Mass Storage) gefunden.

2. Schritt: USB-Geräte einhängen

Als nächstes erstellen wir ein Verzeichnis auf dem Linux-System, in das wir in Zukunft die USB-Geräte einhängen (mounten) werden. Dies erledigen wir mit dem Befehl "mkdir". In der Regel erstellt man dieses Verzeichnis in /mnt/, weil dieses Verzeichnis extra dafür erstellt wurde. Man kann aber auch ein beliebiges Verzeichnis erstellen. Anschließend mounten wir manuell das USB-Gerät in dieses Verzeichnis, um auf die Daten zuzugreifen.

USB-Gerät einhängen

 // Module laden (für die, die diese nicht fest einkompiliert haben)
#modprobe usb_storage
#modprobe sd_mod
// wie ein Modul genau heißt findet man in /lib/modules/<kernel>/
# mkdir /mnt/usb/
# mount -t auto /dev/sda /mnt/usb/
</kernel>

Je nachdem, welches Dateiystem auf dem jeweiligen USB-Gerät vorhanden ist, muss man die Option -t anpassen. Oftmals reicht es aber aus, hier "-t auto" zu setzen und dem Kernel das Dateisystem herausfinden zu lassen. Ansonsten muss man es mal mit "-t vfat" (für FAT32) oder "-t ntfs" (für NTFS) zu probieren. Man darf nicht vergessen, dass diese Dateisysteme auch im Kernel vorhanden sein müssen! Wenn eine Meldung von wegen "unbekannter Dateityp" erscheint, dann muss man überprüfen, ob die Dateisysteme auch wirklich im Kernel vorhanden sind (im Kernel unter File Systems -> DOS/FAT/NT Filesystems zu finden).

Nachdem das Mounten erfolgreich war, kann man sich mit "# cd /mnt/usb" gefolgt von einem "# ls" den Inhalt des USB-Speichers anzeigen lassen. Unser USB-Massenspeicher wurde also erfolgreich installiert und man kann nun mit diesem Arbeiten. Jetzt sollte kann man noch ein, zwei Sachen einrichten, damit das Arbeiten bequemer wird. Zum einen sollte man nun mit einem Editor die Datei /etc/fstab bearbeiten und einen Mounteintrag für die USB-Geräte erstellen. Wir schreiben also den oben genannten Befehl fest in die /etc/fstab ein, damit wir nur noch ein "mount /mnt/usb" eintippen brauchen, ohne uns um die Optionen zu kümmern:

Eintrag in die /etc/fstab

 # nano /etc/fstab //nano ist ein Editor
// folgendes eintragen

/dev/sda1 /mnt/usb/ auto noauto,users,umask=002 0 0

/dev/sda1 ist das USB-Gerät, /mnt/usb/ das Verzeichnis, in welches dieses eingehängt wird, auto ist das Dateisystem (hier kann je nach Dateisystem auch vfat oder ntfs stehen), noauto bedeutet, dass dieser Mountpunkt nicht automatisch beim Booten eingehängt wird, users erlaubt auch normalen Benutzern zu mounten und umask=002 gibt diesen auch noch Zugriffsrechte.

Jetzt reicht schon ein simples "mount /dev/sda1", um auf den Inhalt des Speichers zuzugreifen. Trotzdem ist man noch darauf angewiesen, mit der konsole zu arbeiten. Um auch dem zu umgehen, kann man sich jetzt eine Verknüpfung auf den Desktop legen (hier wird KDE benutzt). Dazu klickt man mit der rechten Maustaste auf den Desktop, dann auf Neu erstellen -> Gerät -> Mountverknüpfung (MO Gerät).

Man muss lediglich unter "Geräte" den passenden Eintrag aus der Kombobox wählen oder das Verzeichnis manuell eintragen, in unserem Fall /dev/sda1. Jetzt kann man mit einem Doppelklick auf diese Verknüpfung auf den Inhalt zugreifen.

Fazit

USB-Massenspeicher an einem Linux-System zu betreiben ist nur wirklich nicht schwer. Ohne Probleme kann man USB-Sticks, -MP3-Player, Festplatten in eternen USB-Gehäusen oder auch Digitalkameras betreiben. Man muss nur die entsprechenden Einträge im Kernel überprüfen und das wars. Da bei den großen Distributionen wie Suse oder Madrake bereits die meisten Einträge im Kernel als Modul kompiliert wurden, muss man noch nicht einmal Änderungen am Kernel vornehmen.