Sonderzeichen Fat32 - Hilfe

ich habe ein großes Problem bezüglich meiner externen Festplatte wie
auch beim MP3-Player den ich anschließen will.
Mein System ist Ubuntu 7.04 Feisty Fawn. Mein Problem: Das kopieren
von Dateien mit Sonderzeichen (wie z.b.: „???“) auf die externen
Medien. Es liegt wohl daran, dass Ubuntu im Sinne des Automount die
Fat32 Partition nicht „richtig“ mountet, so dass ich auch keine
Dateien mit Sonderzeichen kopieren kann, ohne diese vorher
umzubenennen. Bei einzelnen Dateien mag das nicht schlimm sein. Aber
wenn ich meine Hörbuchsammlung (etliche Gigabyte) kopieren will und
er nach 6 Minuten abbricht, weil nunmal in einer Datei ein „?“
auftaucht, ist das schon nervig.
Wie kann ich denn die externe Festplatte oder auch den MP3-Player von
Hand mounten, so dass auch gleich das Problem mit den Sonderzeichen
gelöst wird.
Folgende Konsolenbefehle brachten bislang keine Lösung:
sudo mount -t vfat -o iocharset=iso8859-1 /dev/sda1 /media/usb1/
sudo mount -t vfat -o umask=0,iocharset=utf8 /dev/sda1 /media/usb1/

Auch die Bearbeitung der fstab mit entsprechenden Einträgen der
externen Geräte führte leider nicht zur Lösung meines Problems.

Weiß jemand weiter? Das wäre super!

Viele Grüße,

Marc

Hallo Flapjack,

Fat32 Partition nicht „richtig“ mountet, so dass ich auch
keine
Dateien mit Sonderzeichen kopieren kann, ohne diese vorher
umzubenennen.
Wie kann ich denn die externe Festplatte oder auch den
MP3-Player von
Hand mounten, so dass auch gleich das Problem mit den
Sonderzeichen
gelöst wird.
Folgende Konsolenbefehle brachten bislang keine Lösung:
sudo mount -t vfat -o iocharset=iso8859-1 /dev/sda1
/media/usb1/
sudo mount -t vfat -o umask=0,iocharset=utf8 /dev/sda1
/media/usb1/

Schwierige Sache, weil eigentlich iocharset=utf8 funktionieren müsste. Probiere auch mal mit

uni\_xlate=1

das wird in der man-Page für „unbekannte Unicode-Charakter“ empfohlen. Ob jetzt nur allein, oder in Kombination mit iocharset weiss ich auch nicht.

Viel Erfolg
Klaus Bernstein

Hallo.

Wie kann ich denn die externe Festplatte oder auch den
MP3-Player mounten, so dass auch gleich das Problem mit den
Sonderzeichen gelöst wird.
Folgende Konsolenbefehle brachten bislang keine Lösung:
sudo mount -t vfat -o iocharset=iso8859-1 /dev/sda1
/media/usb1/
sudo mount -t vfat -o umask=0,iocharset=utf8 /dev/sda1
/media/usb1/

Linux arbeitet seit einiger Zeit standardmäßig mit
Unicode, statt den älteren nationalen 8-Bit-Zeichensätzen
wie ISO-Latin-1.

Du hast beim Mounten der externen Festplatte deshalb
2 Dinge zu beachten:

(a) den von Deinem Linuxsystem verwendeten Standard-Zeichensatz,
der festlegt, wie Deine Linuxprogramme Zeichen interpretieren,
anzeigen und schreiben
(b) den Zeichensatz für das zu mountende Dateisystem

Idealerweise sollten (a) und (b) den gleichen Zeichensatz
verwenden, ansonsten wirst Du immer Anzeige- oder Schreibprobleme
mit den Sonderzeichen haben. In einer reinen Linux-Umgebung
ist UTF8 die beste Wahl.

Hier meine Einstellungen für ein reines UTF-8-System:

Zu (a)

# locale
LANG=de\_DE.UTF-8
LC\_CTYPE="de\_DE.UTF-8"
LC\_NUMERIC="de\_DE.UTF-8"
LC\_TIME="de\_DE.UTF-8"
LC\_COLLATE="de\_DE.UTF-8"
LC\_MONETARY="de\_DE.UTF-8"
LC\_MESSAGES="de\_DE.UTF-8"
LC\_PAPER="de\_DE.UTF-8"
LC\_NAME="de\_DE.UTF-8"
LC\_ADDRESS="de\_DE.UTF-8"
LC\_TELEPHONE="de\_DE.UTF-8"
LC\_MEASUREMENT="de\_DE.UTF-8"
LC\_IDENTIFICATION="de\_DE.UTF-8"
LC\_ALL=

Wichtig für den Zeichensatz ist die Variable LC_CTYPE
bzw. LC_ALL, falls diese gesetzt ist.

Zu (b)
Die UTF8-Mountoption für die externe Platte sieht bei
mir dann so aus:

# mount
/dev/sdb1 on /media/TREKSTOR type vfat (rw,noexec,nosuid,nodev,noatime,gid=100,umask=0002,utf8=true,flush,uid=1000,shortname=lower)

bzw. der zugehörige EIntrag in /etc/fstab:

/dev/sdb1 /media/TREKSTOR vfat auto,users,gid=users,umask=0002,utf8=true,rw,nosuid,nodev,noatime,flush,uid=1000,shortname=
lower

Die korrekte mount-Option für das vfat-Dateisystem lautet also
utf8=true.

Gruß,
-Andreas.

Hallo Andreas,

Die korrekte mount-Option für das vfat-Dateisystem lautet also
utf8=true.

Hm, interessant. Was ich aber nicht verstehe, was ist denn der Unterschied zum in der man-Page von mount erwähnten iocharset=utf8, bzw. neuerdings (wenn ichs richtig verstanden habe) nls=utf8? Bewirkt das nicht dasselbe?
Und vor allem, wie kommt man (als User meine ich jetzt) auf die Form

utf8=true

In den Man-Pages, die ich meistens als erstes nachsehe, habe ich das jedenfalls so nicht gefunden. Im Web schon, aber erst nachdem ich diese Möglichkeit bei dir gelesen habe.
Damit wir uns richtig verstehen, ich will nicht die Richtigkeit bestreiten, sondern mich interessiert nur, ob es einen Unterschied zu iocharset=utf8 gibt.

Vielen Dank
Klaus Bernstein

Hallo Klaus.

Die korrekte mount-Option für das vfat-Dateisystem lautet also
utf8=true.

was ist denn der Unterschied zum in der man-Page von mount erwähnten
iocharset=utf8?

wie kommt man (als User meine ich jetzt) auf die Form utf8=true

Über die Man-Pages :wink:

In den Man-Pages, die ich meistens als erstes nachsehe, habe
ich das jedenfalls so nicht gefunden.

Dann lesen wir wohl unterschiedliche Manuals.
Da ich das USB-Laufwerk per vfat mounte, habe ich mir
einfach die mount-Optionen zu vfat angesehen. Dort steht bei
mir bei Aufruf von „man mount“ u.a.:

Mount options for vfat

 utf8 UTF8 is the filesystem safe 8-bit encoding of Unicode 
 that is used by the console. It can be be enabled for 
 the filesystem with this option. If `uni\_xlate' gets 
 set, UTF8 gets disabled.

Die Unterschiede zwischen den Dateisystemoptionen finden
sich nach Dr. Google unter der Überschrift „Supported mount options“
in den lokalen Dateien

/usr/src/linux/Documentation/filesystems/vfat.txt
/usr/src/linux/Documentation/filesystems/ntfs.txt

… zumindest wenn Du die Linux-Kernel-Sourcen mit installiert hast,
was jeder wissbegieriger Linux-User tun sollte.

Das Fazit dieser Dateien zur Unicode-Unterstützung lautet:

  • für vfat verwende utf8=true, statt iocharset=utf8,
    denn letzteres ist veraltet und scheint bei UTF8 nicht
    zuverlässig zu funktionieren

  • für ntfs verwende dagegen nls=utf8. Die Option utf8=true ist
    bei diesem Dateisystemtreiber veraltet.

Hoffe, alle Unklarheiten beseitigt zu haben,
-Andreas.

PS:

Mein System:

# mount -V
mount: mount-2.12r

# cat /proc/version
Linux version 2.6.16.13-4-smp (geeko@buildhost) (gcc version 4.1.0 (SUSE Linux)) #1 SMP Wed May 3 04:53:23 UTC 2006

Hallo Andreas.
erstmal vielen Dank für die Antwort, wir wollen das jetzt nicht weiter auswalzen, ich habe auch genug Tipps bekommen, um privat weiter nachzuforschen (obwohl mich das Problem eigentlich nicht direkt betrifft, ich lerne nur gerne was dazu)

wie kommt man (als User meine ich jetzt) auf die Form utf8=true

Über die Man-Pages :wink:

In den Man-Pages, die ich meistens als erstes nachsehe, habe
ich das jedenfalls so nicht gefunden.
Dann lesen wir wohl unterschiedliche Manuals.

Da ich das USB-Laufwerk per vfat mounte, habe ich mir
einfach die mount-Optionen zu vfat angesehen. Dort steht bei
mir bei Aufruf von „man mount“ u.a.:

Mount options for vfat
utf8 UTF8 is the filesystem safe 8-bit encoding of Unicode
that is used by the console. It can be be enabled for
the filesystem with this option. If `uni_xlate’ gets
set, UTF8 gets disabled.

Ja, richtig, genau das steht bei mir auch :smile: Aber vielleicht haben wir uns auch falsch verstanden, das

utf8= **true**

also das =true findet sich bei mir nicht in der manpage, und in deinem Auszug finde ich es auch nicht.

Die Unterschiede zwischen den Dateisystemoptionen finden
sich nach Dr. Google unter der Überschrift „Supported mount
options“
in den lokalen Dateien
/usr/src/linux/Documentation/filesystems/vfat.txt
/usr/src/linux/Documentation/filesystems/ntfs.txt
… zumindest wenn Du die Linux-Kernel-Sourcen mit installiert
hast,
was jeder wissbegieriger Linux-User tun sollte.

Guter Tipp, da war ich wohl noch nicht wissbegierig genug :wink: Werde es aber nachholen

Das Fazit dieser Dateien zur Unicode-Unterstützung lautet:

  • für vfat verwende utf8=true, statt iocharset=utf8,
    denn letzteres ist veraltet und scheint bei UTF8 nicht
    zuverlässig zu funktionieren

dass iocharset veraltet ist, hatte ich wohl auch geschrieben

  • für ntfs verwende dagegen nls=utf8. Die Option
    utf8=true ist
    bei diesem Dateisystemtreiber veraltet.

nls=utf8 wie oben…

Hoffe, alle Unklarheiten beseitigt zu haben,

Nun ja, so einigermassen, aber wie oben erwähnt, werde ich mich noch weiter damit beschäftigen.

Zwar nicht mehr so notwendig, aber als Gegenleistung hier mein System:

# mount -V
mount: mount-2.12p
# cat /proc/version
Linux version 2.6.12-1-386 ([email protected]) (gcc version 4.0.2 20050917 (prerelease) (Debian 4.0.1-8)) #1 Tue Sep 27 12:41:08 JST 2005

Viele Grüsse
Klaus Bernstein