Ich formatiere unter Windows XP einen 4Gb USB-Stick mit ext32. Dabei
weise ich eine „Volumenbezeichnung“ zu, z.B. „USBSTICK01“.
Dann verbinde ich diesen Stick mit meiner Linux Debian Box. Der Stick
wird erkannt und unter /media/USBSTICK01 gemounted.
1
# mount -l
2
/dev/sde1 on /media/USBSTICK01 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=100,shortname=mixed,dmask=0077,utf8=1,showexec,flush) [USBSTICK01]
3
#
Die MTools und auch der Kernel zeigen das richtige Label an, dosfslabel
kann aber kein Label finden
Wenn ich mal direkt in die ersten 32 Blöcke des Filesystems schaue, so
finde ich zwar den String „NO NAME“, aber keine Spur von „USBSTICK01“
(hier mal nur die ersten 32 Zeilen angezeigt):
Der neue Name ist zwar etwas verstümmelt, steht aber grundsätzlich dort,
wo ich ihn erwarten würde. Offensichtlich gibt es aber ein Backup, dass
nicht mit upgedated wurde. Auch verstehe ich nicht, warum jetzt eine
Datei im FS sein soll, oben wurden noch „0 files“ angezeigt.
Auch dosfslabel meldet den Fehler:
1
# dosfslabel /dev/sde1
2
There are differences between boot sector and its backup.
Das Problem der Namensverstümmelung lässt sich offenbar relativ einfach
durch Eingabe einiger Leerzeichen lösen, reparieren lässt sich das FS
aber nicht:
1
# mlabel e:
2
Volume label is TESTLABEL˦
3
Enter the new volume label : TESTLABEL<space><space><space>
Nach Entfernen und neu Verbinden des Sticks wird der neue Name korrekt
erkannt. Auch Windows erkennt den neuen Namen. Ein FS-Check unter
Windows brachte keine Fehler.
Durch das Zuweisen eines neuen Namens mittels dosfslabel lässt sich der
Dateifehler augenscheinlich reparieren:
1
# dosfslabel /dev/sde1 NEUESLABEL
2
There are differences between boot sector and its backup.
> 00c50 4c 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 'L FAT32 3.....'
28
# dosfsck /dev/sde1
29
dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
30
/dev/sde1: 1 files, 1/980481 clusters
31
#
Offenbar werden hier beide Kopien des Labels richtig ersetzt, was die
MTools nicht schaffen.
Wenn wir das Ganze nochmals komplett von Anfang an durchspielen (also
Stick entfernen, unter XP wie oben beschrieben unter Verwendung des
Labels „USBSTICK01“ neu formatieren und wieder mit Linux verbinden),
jetzt aber dosfslabel zum Ändern verwenden, ergibt sich das folgende
Bild:
> 00c40 00 00 29 6e 79 42 9e 4e 45 55 45 53 4c 41 42 45 '..)nyB.NEUESLABE'
37
> 00c50 4c 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 'L FAT32 3.....'
38
#
Also, XP legt ein Volume-Label an einer Stelle ab, die von MTools und
Kernel gefunden wird, nicht aber von dosfslabel. Diese kann nicht in den
ersten 32 Sektoren liegen, die für eine ext32 FS meines Wissens nach
standardmäßig reserviert sind. Dort liegen aber zwei Einträge für ein
Volume-Label, die von XP offenbar nicht benutzt werden, von denen die
MTools nur einen updaten, was zu Fehlern beim Linux fsck führt,
dosfslabel aber beide. Sowohl die Änderungen der MTools als auch die von
dosfslabel werden vom Kernel als auch von Windows erkannt und Windows
meldet in keinem der beiden Fälle einen Fehler.
Bevor ich jetzt in die Tiefen des ext32 FS abtauche, kann mir jemand
sagen wo Windows das Volume-Label (noch) speichert und was unter Linux
der korrekte Weg ist, dieses zu änbern?
Auch für eine entsprechende Literaturstelle wäre ich dankbar.
PS: Ich habe auch etwas weiter als 32 Sektoren geschaut, das Ergebnis
war das gleiche.
--
falsche Threadüberschrift korrigiert
-rufus
Also entweder meinst du FAT32 oder EXT3, aber ein EXT32 gibt es nicht
(die sind erst bei ext4). Da du es mit Windows schreibst, ist hier wohl
FAT32 gemeint.
Kann es eventuell sein, dass das eine Programm das ganze Gerät(/dev/sde)
benennt und das andere nur die Partition(/dev/sde1)?
A. H. schrieb:> Also, XP legt ein Volume-Label an einer Stelle ab, die von MTools und> Kernel gefunden wird, nicht aber von dosfslabel. Diese kann nicht in den> ersten 32 Sektoren liegen
Ist ein versteckter Eintrag im Root Verzeichnis (mit Volume Label Bit).
Das könnte auch mal jemand aus Versehen als Datei zählen, die hätte aber
IIRC 0 Bytes und keinen belegten Cluster da alles im 32 Byte
Verzeichniseintrag steht.
K. L. schrieb:> Also entweder meinst du FAT32 oder EXT3, aber ein EXT32 gibt es nicht> (die sind erst bei ext4). Da du es mit Windows schreibst, ist hier wohl> FAT32 gemeint.
Stimmt natürlich. War schon etwas spät gestern und ich hatte vorher
etwas über exFAT gelesen, da hat wohl Freud zugeschlagen :-)
> Kann es eventuell sein, dass das eine Programm das ganze Gerät(/dev/sde)> benennt und das andere nur die Partition(/dev/sde1)?
Eigentlich nicht, der entsprechen Eintrag in der mtools.conf ist
korrekt:
Jim M. schrieb:> A. H. schrieb:>> Also, XP legt ein Volume-Label an einer Stelle ab, die von MTools und>> Kernel gefunden wird, nicht aber von dosfslabel. Diese kann nicht in den>> ersten 32 Sektoren liegen>> Ist ein versteckter Eintrag im Root Verzeichnis (mit Volume Label Bit).> Das könnte auch mal jemand aus Versehen als Datei zählen, die hätte aber> IIRC 0 Bytes und keinen belegten Cluster da alles im 32 Byte> Verzeichniseintrag steht.
Danke für den Tipp, hat mir geholfen einen entsprechenden Bug-Report zu
finden:
https://bugzilla.novell.com/show_bug.cgi?id=657011#c4
Das Problem scheint seit dosfstools 3.0.16 behoben zu sein.