formatierung von massenspeicher

Andre Landwehr andrel at cybernoia.de
Tue Oct 31 14:34:08 CET 2006


conrad berhörster wrote:
> Hallo, vielleicht hat ja noch jemand eine Anregung für mich. 
> Wenn ich beim booten die CF Karte einlege, wird sie erkannt und ich kann nach 
> dem mount befehl wunderbar darauf zugreifen. 
> Wenn ich allerdings die Karte während des laufenden Betriebes einstecke, 
> meldet sich kein Treiber oder dergleichen. dmesg gibt keinen mucks diesbezgl. 
> aus. 

Das geht auch nicht anders, da kein Event ausgelöst wird. Hotplug ist
also schlichtweg unmöglich weil die Hardware es nicht hergibt.

> Mit meinem USB stick funktioniert aber alles wie gewollt. Eingesteckt -> mount 
> -> zugriff. 

Sicher, da schließt du ja auch ein neues USB-Gerät an, und das löst ein
Event aus. Wenn du aber nur eine CF (oder sonstige) Karte in einen
bereits angeschlossenen Kartenleser steckst, dann wird kein Event
ausgelöst.
Mounten solltest du eine reingesteckte Karte allerdings trotzdem können,
es sei denn du benutzt udev oder dergleichen, die dafür sorgen, daß die
inodes unter /dev erst angelegt werden, wenn auch ein Medium da ist. In
dem Fall solltest du händisch die Regeln für udev ein wenig tunen. Für
meinen Kartenleser sieht das dann so aus:

andrel at delle:~$ cat /etc/udev/my.rules
BUS=="usb", KERNEL=="sd[a-z]", SYSFS{removable}=="1", \
  PROGRAM="/etc/udev/scripts/usb-block-model.sh %k", RESULT=="CF", \
  OPTIONS+="all_partitions", GROUP="floppy", NAME="cf%n"
BUS=="usb", KERNEL=="sd[a-z]", SYSFS{removable}=="1", \
  PROGRAM="/etc/udev/scripts/usb-block-model.sh %k", RESULT=="SM", \
  OPTIONS+="all_partitions", GROUP="floppy", NAME="sm%n"
BUS=="usb", KERNEL=="sd[a-z]", SYSFS{removable}=="1", \
  PROGRAM="/etc/udev/scripts/usb-block-model.sh %k", RESULT=="MS", \
  OPTIONS+="all_partitions", GROUP="floppy", NAME="ms%n"
BUS=="usb", KERNEL=="sd[a-z]", SYSFS{removable}=="1", \
  PROGRAM="/etc/udev/scripts/usb-block-model.sh %k", RESULT=="MMC/SD", \
  OPTIONS+="all_partitions", GROUP="floppy", NAME="sd%n"

Das usb-block-model.sh Script hab ich grad nicht zur Hand (frag
nicht..), könnte ich bei Bedarf aber nachliefern.
Vom Prinzip her sieht es so aus, daß beim Starten von udev (also beim
Hochfahren des Rechners) oder beim Einstecken des Kartenlesers dieser
als USB-Gerät gefunden wird. Udev ruft dann, da es sich um ein
storage-device handelt, welches laut sysfs removable ist, das
usb-block-model.sh Script auf. Dort ist es nun an dir zu ermitteln, ob
es sich tatsächlich um genau deinen Kartenleser handelt, z.B. indem du
dich mal in /sys umschaust und rausfindest, was da an spezifischen
Informationen für deinen Leser drinsteht. Von dem Script gibst du dann
"CF" zurück für den CF-Karten-Slot, "SM" für den Smartmedia-Slot usw.,
ganz nach belieben. Udev wertet diesen Rückgabestring dann aus und legt
dir die devices als /dev/cf*, /dev/sm* usw. an, und zwar inklusive aller
devices für alle Partitionen, die theoretisch existieren könnten (das
macht die all_partitions Option).
Automatisch gemountet wird das ganze so zwar immer noch nicht, aber
immerhin ist das Device dann da, so daß du es von Hand mounten kannst,
und es heißt sogar immer gleich (was bei USB ja sonst nicht
gewährleistet ist).
Wenn du auch noch automatisch mounten willst, wirst du irgendwas
brauchen, was laufend versucht, auf das Gerät zuzugreifen, und dann
mount anstößt, wenn kein Fehler mehr zurückkommt. Anders macht Windows
das auch nicht. Debianpakete dafür sind pmount und hal, hab ich selbst
noch nie probiert.
Ich nutze stattdessen den Automounter, um die Karte zu mounten wenn ich
auf einen bestimmten Pfad zugreife, was aber in der Theorie deutlich
besser funktioniert als in der Praxis. Da ich die unmount-Zeit beim
Automounter auf 1 Sek. gestellt habe, mountet er quasi für jeden Zugriff
neu, was nach 5-10 Zugriffen meist aus wirren Gründen plötzlich
scheitert. Es fehlte mir bisher die Muße, dem Problem erschöpfend
nachzugehen.

-- 
Andre Landwehr, Ricklinger Stadtweg 42, D-30459 Hannover
Phone: +49-(0)511-1054932, Mobile: +49-(0)175-4648375


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20061031/3004c510/attachment.sig>


More information about the Linux mailing list