daran bin ich gerade am spielen.
Ich glaube, daß sich das Ausgangsproblem eigentlich einfach lösen könnte, wenn nämlich die Datei /usr/local/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi geändert wird. Ich weiß, dies ist eine mitgelieferte und keine 3rd-party Datei, doch obwohl ich da nicht viel Ahnung von alledem habe, scheint mir die Konstruktion doch deutlich zu sein:
Code:
<!-- allow these mount options for vfat -->
<match key="volume.fstype" string="vfat">
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">utf8</append>
<append key="volume.mount.valid_options" type="strlist">shortname=</append>
<append key="volume.mount.valid_options" type="strlist">codepage=</append>
<append key="volume.mount.valid_options" type="strlist">iocharset=</append>
<append key="volume.mount.valid_options" type="strlist">umask=</append>
<append key="volume.mount.valid_options" type="strlist">dmask=</append>
<append key="volume.mount.valid_options" type="strlist">fmask=</append>
<append key="volume.mount.valid_options" type="strlist">uid=</append>
</match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="volume.mount.valid_options" type="strlist">longnames</append>
<append key="volume.mount.valid_options" type="strlist">shortnames</append>
<append key="volume.mount.valid_options" type="strlist">nowin95</append>
<append key="volume.mount.valid_options" type="strlist">large</append>
<append key="volume.mount.valid_options" type="strlist">-u=</append>
<append key="volume.mount.valid_options" type="strlist">-g=</append>
<append key="volume.mount.valid_options" type="strlist">-m=</append>
<append key="volume.mount.valid_options" type="strlist">-M=</append>
<append key="volume.mount.valid_options" type="strlist">-L=</append>
<append key="volume.mount.valid_options" type="strlist">-D=</append>
</match>
</match>
dies habe ich mal mit meiner Änderung eingefügt.
In dieser Datei werden ja mountoptionen gelistet und hier (an anderen Stellen auch) wird zwischen Linux und FreeBSD unterschieden und dann unterschiedliche Optionen vermerkt. Hier habe ich die Option "large" eingefügt, die es nun bei FreeBSD gibt (die ich in der man page noch nicht gesehen hatte) und die dann ganz global zur Verfügung stehen könnte.
Leider funktioniert es bei mir nicht, ich kann es nicht testen.
Bei meiner Sucherei nach Lösungen, ist mir aufgefallen, daß der HALD dann mounten kann, wenn er das Label des Gerätes ordentlich erkennt. Diese Erkenntnis ist für mich vollkommen neu, ich wunderte mich nur manchmal, daß einige Geräte nicht wollen aber manuell einfach eingebunden werden können. Ein solches Gerät, das aber keine große FAT-Partition hat, habe ich mir heute näher betrachtet.
dmesg gibt dafür aus:
GEOM_LABEL: Label for provider da0s1 is msdosfs/FLASH DISK.
HALD sagt dann, dieses ist kein gültiges Block-Device.
Wenn ich mit glabel einen Label "flash" zuweise, wird dies zusätzlich ausgegeben: GEOM_LABEL: Label for provider da0s1 is label/flash. Und beim nächsten Stecken dieses Sticks wird er automatisch eingebunden, in HAL wird ein weiterer Eintrag hinzugefügt, der nun unter /dev/label/flash die passenden Einträge führt, allerdings dem Gerät einen mountpoint so zuweist:
dev/label/flash on /media/FLASH DISK (msdosfs, local, noexec, nosuid). Das ist schon mal interessant und läßt sich auch wiederholen. Weiter ist interessant, daß dieses Gerät nicht über den HAL entfernt werden kann, es muß manuell und mit Option -f umountet werden.
All dies ist bei einem ähnlichen Stick nicht nötig, der den Eintrag UDISK als Label trägt. Hier funktioniert alles problemlos, wie vorgesehen. Unter dem Eintrag /dev/msdosfs/UDISK werden alle nötigen Positionen aufgeführt und ein mountpoint /media/UDISK geschaffen und genutzt, übrigens immer dieser bei dem Gerät, obwohl HAL nicht mit "fixed mountpoints" gebaut wurde. Dies ist auch ein Unterschied zu den Geräten, denen ich nun Probeweise einen glabel setzte, denn hier wird jedesmal ein Mountpoint mit Index -1 ... -2 und weiter neu angelegt.
Meine 300GB FAT-Platte hat leider gar keinen Label im MBR und so gelingt es auch nicht, sie zu mounten, wenn ich ihr mit glabel einen neuen Punkt setze. Jedenfalls vermute ich das mal, vielleicht wirkt aber der Eintrag der Option "large" gar nicht so, wie ich das will. Ich weiß nun nicht mehr, wie die Fehlersuche geht, um nachzusehen, welche Optionen HAL tatsächlich an mount übergibt, da muß ich erst weiter lesen, doch ich dachte, vielleicht kann mir jemand helfen und auf die schnelle eine Möglichkeit nennen, den Volume-Label im MBR (also nicht den Eintrag durch glabel) auf FAT-Partitionen zu ändern. tunefs will keinen FAT.
Ich vermute deshalb, daß HAL ohne einen gültigen Label nicht zu Recht kommt, obwohl er auch hier einen mountpoint Namens disk in /media anlegt, weil volume.label leer bleibt und volume.mount_point ebenfalls und das war identisch mit dem Stick, der FLASH DISK heißt und der hat kein großes Dateisystem und braucht deshalb die Option "large" gar nicht.
Wäre schön, wenn es da eine Möglichkeit gibt, den Label im MBR zu ändern (evtl kann ich auch einen Windows Rechner organisieren, wenn es damit dann geht, nur weiß ich nicht, ob die überhaupt große FAT-Partitionen können).