:: Home :: Computing :: Downloads :: Scooter :: Links :: Music :: Nonsense :: Mail :: |
---|
Viele Wechselmedien haben eine USB-Schnittstelle. USB Medien werden von Linux als SCSI-Geräte gesehen und den Device-Knoten /dev/sdx[y] zugeordnet. Über die Device-Knoten ordnet man den Medien Mountpoints zu. Sobald man aber mit mehreren USB Medien zugleich arbeitet, kann man leicht den Überblick verlieren, an welchem Knoten welches Medium hängt und an welchem Mountpoint dieses letztendlich gemountet ist.
Ich umgehe dieses Problem hier mit dem udevd(8), der so konfiguriert ist, dass er einzelnen Geräten definierte Device-Knoten zuordnet, die ich wiederum bestimmten Mountpoint zuordnen kann.
Alle USB Geräte melden sich beim System mit einem Wust von Informationen, darunter der Angabe ihres Herstellers, ihres Produktnamens und ihrer Seriennummer an. Diese Informationen lassen sich mit udevadm(8) auslesen.
Einer meiner Memory-Sticks gibt u.a. folgendes aus:
# udevadm info --path=/sys/block/sde --attribute-walk ... looking at parent device '/devices/pci0000:00/0000:00:13.2/usb2/2-4/2-4.4': KERNELS=="2-4.4" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{configuration}=="" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bmAttributes}=="80" ATTRS{bMaxPower}==" 80mA" ATTRS{urbnum}=="231" ATTRS{idVendor}=="1307" ATTRS{idProduct}=="0163" ATTRS{bcdDevice}=="0100" ATTRS{bDeviceClass}=="00" ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{bNumConfigurations}=="1" ATTRS{bMaxPacketSize0}=="64" ATTRS{speed}=="480" ATTRS{busnum}=="2" ATTRS{devnum}=="6" ATTRS{version}==" 2.00" ATTRS{maxchild}=="0" ATTRS{quirks}=="0x0" ATTRS{authorized}=="1" ATTRS{manufacturer}=="USBest Technology" ATTRS{product}=="USB Mass Storage Device" ATTRS{serial}=="000000000004E6" ...
Über die Seriennummer, unter ATTRS{serial} zu finden, lässt sich folgende Regel für den udevd(8) erstellen, mit der dieser beim Einstecken des Mediums den symbolischem Link /dev/stick0 erstellen soll, der auf den tatsächlichen Device-Knoten zeigt:
SUBSYSTEMS=="usb", KERNEL=="sd?1", ATTRS{serial}=="000000000004E6", NAME="%k", MODE="0666", SYMLINK+="stick0"
Diese Regel habe ich in die Datei /etc/udev/rules.d/10-local-rules eingetragen und sehe hier nach Einstecken des Memory-Sticks folgenden symbolischen Link:
# ls -l /dev/stick0 lrwxrwxrwx 1 root root 4 Dec 26 12:27 /dev/stick0 -> sde1
Sollte der Link wider Erwarten nicht vorhanden sein, kann man den udevd(8) mit folgendem Befehl zum Neueinlesen seines Regelsatzes zwingen:
# udevadm control --reload-rules
Für diesem Link kann ich jetzt einen festen Mountpoint wie z. B. /mnt/misc/stick0 anlegen und einen entsprechenden Eintrag in der /etc/fstab vornehmen, um diesen Memory-Stick zukünftig auch mit User-Rechten an einer definierten Stelle einzubinden:
/dev/stick0 /mnt/misc/stick0 vfat rw,noatime,noauto,user,flush,noexec 0 0
Mit dem Befehl mount /mnt/misc/stick0 lässt sich der eingesteckte Memory-Stick dann in den Dateibaum einbinden.
Statt des unter 1.1. geschilderten Wegs, der manuelles Mounten erfordert, setze ich hier den Kernel-Automounter ein. Der Kernel-Automounter überwacht konfigurierte Mountpoints und bindet diese automatisch ein, sobald man in das jeweilige Verzeichnis wechselt.
Dazu ist folgende Option ist bei der Konfiguration des Kernels erforderlich:
CONFIG_AUTOFS4_FS=y
Ausserdem muss das Paket autofs, dass die erforderlichen Userspace Tools für den Kernel-Automounter enthält, installiert und das automount(8) Programm, über das der Kernel-Automounter gesteuert wird, muss gestartet sein.
/etc/init.d/autofs start
Mein Kernel-Automounter wäre für den o. a. Memory-Stick folgendermassen konfiguriert:
# /etc/autofs/auto.master -- automount(8) master map file for autofs(8) # # For details of this file see auto.master(5) #[directory] [maptype:mapname] [options] # /mnt/misc file:/etc/autofs/auto.misc --browse --timeout=5 /mnt/nfs file:/etc/autofs/auto.nfs --browse --timeout=600
# /etc/autofs/auto.misc -- automount(8) map file for /mnt/misc # # For details of this file see autofs(5) #[mount point] [mount options] [location] # ... cdrom -fstype=auto,ro,nodev,noexec,nosuid :/dev/dvd digicam -fstype=vfat,rw,noatime,flush,noexec,uid=${UID},gid=${GID},fmask=133 :/dev/digicam1 stick0 -fstype=vfat,rw,noatime,flush,noexec,uid=${UID},gid=${GID},fmask=133 :/dev/stick0 ...
Die etwas kryptisch aussehenden uid und gid Anweisungen bewirken, dass die Dateien dem User, der den Automount angestossen hat, gehören.
Ich stecke den Memory-Stick ein und wechsele in das Verzeichnis /mnt/misc/stick0, in das vom Kernel-Automounter schon automatisch der Memory-Stick eingebunden ist. Nachdem ich das Verzeichnis wieder verlassen habe, wird der Memory-Stick automatisch nach 5 Sekunden wieder ausgebunden und ich kann ihn wieder abziehen.
Zurück zur Main-Site |