Einbindung von USB-Geräten

Aus wiki.archlinux.de
Version vom 10. Juni 2012, 20:17 Uhr von Ovion (Diskussion | Beiträge) (Einbinden eines USB-Sticks unter grafischen Benutzerumgebungen)

Wechseln zu: Navigation, Suche

Überarbeitung.png Dieser Artikel oder Artikelabschnitt bedarf einer stilistischen Überarbeitung laut Empfehlungen in Artikelstil.


20040916-achtung.jpg Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.

Bei einem frisch aufgesetzten Arch-Linux-System kann es vorkommen, dass sich USB-Geräte nicht verwenden lassen. Dies kann unter anderem an einem fehlenden Programm namens D-Bus liegen, welches das automatische Einbinden von Hardware verwaltet. D-Bus ist ein System, mit dem verschiedene Prozesse untereinander kommunizieren können und kümmert sich um das Mounten von Geräten. So kann sich der Dateimanager beispielsweise mit der Hardwareverwaltung (in diesem Fall D-Bus selbst) austauschen, welche Datenträger aktuell verfügbar sind.

Bei den einzelnen Schritten sollte man ein Terminalfenster geöffnet haben. Die angegebenen Befehle sollten jeweils hier eingegeben werden.

Vorbereitung

Um D-Bus ins System integrieren zu können, muss zunächst das entsprechende Paket "dbus" installiert sein. Ist dies noch nicht der Fall oder ist man sich nicht sicher, führt man ein

pacman -S dbus

aus. Dies installiert bzw. reinstalliert das entsprechende Paket.

Danach muss D-Bus noch gestartet werden.

rc.d start dbus

Da dies vermutlich ohnehin bei jedem Systemstart geschehen soll, empfiehlt es sich, ihn direkt in das Daemons-Array in der Datei /etc/rc.conf einzutragen, indem man die Zeile „DAEMONS=(...)“ durch den Eintrag "dbus" in den Klammern ergänzt. Dadurch wird D-Bus bei jedem Systemstart gestartet.

Einbinden eines USB-Sticks unter grafischen Benutzerumgebungen

Soll ein USB-Stick lediglich von einer grafischen Benutzerumgebung aus verfügbar sein, ist es meist ausreichend, statt des reinen Startens der gewünschten Benutzeroberfläche (in diesem Beispiel GNOME) mittels der entsprechenden Rechteverwaltung zu starten. Zunächst stelle man noch sicher, dass auch das consolekit installiert ist. Im Zweifel hilft ein

pacman -S polkit

Danach ist die Datei /home/<benutzername>/.xinitrc insofern abzuändern, dass die Zeile

exec gnome-session

auf

exec ck-launch-session dbus-launch gnome-session

abgeändert wird. Hierbei wird die entsprechende Umgebung (hier Gnome mittels des Befehls "gnome-session") als Unterprozess des dbus-Prozesses gestartet ("dbus-launch") und kann somit auf D-Bus zugreifen, der sich um die Verwaltung der Datenträger wie USB-Sticks kümmert. Dies wird wiederum als Unterprozess des consolekits ("ck-launch-session") gestartet, welches sich um die Rechteverwaltung kümmert, damit man in der grafischen Benutzerumgebung überhaupt die Rechte hat, derer es bedarf, um einen USB-Stick einzubinden. Da die grafische Benutzerumgebung vom Policy Kit verwaltet wird, kümmert dies sich um die entsprechende Berechtigung.

Hinweis zu NTFS

Sollte man beim Einbinden von NTFS-Datenträgern kein Schreibrecht auf diesen haben, hilft möglicherweise eine Installation des Pakets "ntfs-3g", welches einen lese- & schreibfähigen Treiber für NTFS enthält.


Einbinden von USB-Sticks unabhängig von einer grafischen Benutzeroberfläche

Dies stellt eine Alternative ohne das D-Bus-System bereit. Bei der Verwendung grafischer Benutzerumgebungen ist die Variante oben mittels D-Bus vorzuziehen.

Zunächst sollte man sich alle Gerätedateien mittels

ls /dev/

anzeigen lassen. Dies sind alle Geräte, die in irgendeiner Weise verfügbar sind. Man sollte hierbei insbesondere auf Geräte namens "sd**", z.B. "sda1", "sda2", sdb1" etc. achten. Ein USB-Stick wird meistens in diesem Namensmuster eingebunden werden.

Nun steckt man den USB-Stick ein und lässt sich wiederum alle Gerätedateien anzeigen. Es sollte ein Eintrag hinzugekommen sein, hinter dem sich der USB-Stick verbirgt. Alternativ kann man auch mittels

udevatm monitor

über Events wie das einstecken eines USB-Sticks informiert werden. Steckt man nach diesem Befehl einen USB-Stick an, sollte sich in der letzen Zeile der Ausgabe ein Hinweis darauf finden, unter welchem Namen der Stick eingebunden wurde.

Füge der Datei /etc/fstab folgende Zeile hinzu (ohne die Einträge in eckigen Klammern):

/dev/sda1[oder ähnlich, wie oben ermittelt] /mnt/usb[oder wo auch immer der Stick erscheinen soll] auto rw,users,umask=0000 0 0

Durch den Schalter "users" kann z.B. jeder Nutzer den Stick ein- oder aushängen. Für Details bezüglich der fstab-Datei sei die entsprechende, verlinkte Wikiseite empfohlen.

Bei im Format vfat formatierten Sticks funktioniert "vfat" statt "auto" als Dateisystem manchmal zuverlässiger. Dies ist allerdings nur anzuraten, wenn man nur Sticks im vfat-Format besitzt.

Befinden sich auf dem Stick Dateien oder Verzeichnisse mit Umlauten und ist das einbindende System auf UTF8 eingestellt, sollte in den Block mit "users", "umask" etc. noch "utf8" kommagetrennt hinzugefügt werden.


Nun muss das Verzeichnis, in dem der Stick erscheinen soll, wie in der fstab-Datei spezifiziert angelegt werden, bevor hier ein Gerät eingebunden werden kann. Dies geht am einfachsten mittels

sudo mkdir /mnt/usb


Der Stick sollte sich nun manuell ein- und aushängen lassen mittels

mount /mnt/usb

bzw.

umount /mnt/usb


Udev-Regel erstellen

Damit ein bestimmter USB-Stick (oder auch eine Festplatte) immer den gleichen Device-Namen zugewiesen bekommt, kann man sich eine Udev Regel erstellen.

Zuerst muss man die Sereinnummer des Sticks herausfinden. Dazu ermittelt man wie unter "Einbinden von USB-Sticks unabhängig von einer grafischen Benutzeroberfläche" ausgeführt, die Gerätedatei (z.B. /dev/sdc).

Jetzt kann man sich mit Hilfe von udevinfo und grep die Serienenummer anzeigenlassen.

udevadm info -a -p `udevadm info -q path -n /dev/sdc` | grep ATTRS{serial}

Die Ausgabe sollte etwa so aussehen:

ATTRS{serial}=="14AB0000000096"
ATTRS{serial}=="0000:00:02.2"

Um herauszufinden welche Nummer die des Sticks ist führt man den Befehl nochmal aus, ersetzt aber ATTRS{serial} durch ATTRS{product}.

udevadm info -a -p `udevadm info -q path -n /dev/sdc` | grep ATTRS{product}

Jetzt erhält man eine Ausgabe die in etwa so aussieht:

ATTRS{product}=="USB Mass Storage Device"
ATTRS{product}=="EHCI Host Controller"

Die gesuchte Nummer des Sticks ist also die erste.

Jetzt kann man sich eine eigene udev-Regel erstellen. Dazu legt man am besten eine neue Datei unter /etc/udev/rules.d/ an. (Hinweis: udev arbeitet die Dateien in alphabetischer Reihenfolge ab). Die Datei könnte man z.B. 50-myusb.rules nennen. In die Datei trägt man nun folgendes ein:

SUBSYSTEMS=="usb", ATTRS{serial}=="14AB0000000096", KERNEL=="sd*", SYMLINK+="usbstick%n"

Jetzt müssen die udev-Regeln neu geladen werden:

udevadm control --reload-rules

Udev sollte jetzt beim einstöpseln (vorausgesetzt der Stick enthält eine Partition) zwei Symlinks, die auf das "reale" Device zeigen, in /dev erstellen. usbstick für den Stick ansich und usbstick1 für die (erste) Partition. Ab jetzt kann über diese Links auf den Stick zugegriffen werden. Enthält der Stick mehr als eine Partition wird für jede ein eigener Link mit der Partitionsnummer angelegt. Wie bei einer Festplatte auch.

zum Beispiel

/dev/usbstick       
/dev/usbstick1
/dev/usbstick2

Weblinks