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
1 | # umount /dev/sde1
| 2 | # mlabel -s e:
| 3 | Volume label is USBSTICK01
| 4 | # dosfslabel /dev/sde1
| 5 | NO NAME
| 6 | # ll /dev/disk/by-label
| 7 | …
| 8 | lrwxrwxrwx 1 root root 10 1. Nov 21:56 USBSTICK01 -> ../../sde1
| 9 | #
|
Ein fsck zeigt keine Probleme:
1 | # dosfsck /dev/sde1
| 2 | dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
| 3 | /dev/sde1: 0 files, 1/980481 clusters
| 4 | #
|
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):
1 | # dd if=/dev/sde1 count=32 | ~/bin/hex | head -32
| 2 | 00000 eb 58 90 4d 53 44 4f 53 35 2e 30 00 02 08 26 00 '.X.MSDOS5.0...&.'
| 3 | 00010 02 00 00 00 00 f8 00 00 3f 00 ff 00 f8 03 00 00 '........?.......'
| 4 | 00020 08 ec 77 00 ed 1d 00 00 00 00 00 00 02 00 00 00 '..w.............'
| 5 | 00030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 '................'
| 6 | 00040 00 00 29 f3 3a df 92 4e 4f 20 4e 41 4d 45 20 20 '..).:..NO NAME '
| 7 | 00050 20 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 ' FAT32 3.....'
| 8 | 00060 7b 8e c1 8e d9 bd 00 7c 88 4e 02 8a 56 40 b4 08 '{......|.N..V@..'
| 9 | 00070 cd 13 73 05 b9 ff ff 8a f1 66 0f b6 c6 40 66 0f '..s......f...@f.'
| 10 | 00080 b6 d1 80 e2 3f f7 e2 86 cd c0 ed 06 41 66 0f b7 '....?.......Af..'
| 11 | 00090 c9 66 f7 e1 66 89 46 f8 83 7e 16 00 75 38 83 7e '.f..f.F..~..u8.~'
| 12 | 000a0 2a 00 77 32 66 8b 46 1c 66 83 c0 0c bb 00 80 b9 '*.w2f.F.f.......'
| 13 | 000b0 01 00 e8 2b 00 e9 48 03 a0 fa 7d b4 7d 8b f0 ac '...+..H...}.}...'
| 14 | 000c0 84 c0 74 17 3c ff 74 09 b4 0e bb 07 00 cd 10 eb '..t.<.t.........'
| 15 | 000d0 ee a0 fb 7d eb e5 a0 f9 7d eb e0 98 cd 16 cd 19 '...}....}.......'
| 16 | 000e0 66 60 66 3b 46 f8 0f 82 4a 00 66 6a 00 66 50 06 'f`f;F...J.fj.fP.'
| 17 | 000f0 53 66 68 10 00 01 00 80 7e 02 00 0f 85 20 00 b4 'Sfh.....~.... ..'
| 18 | 00100 41 bb aa 55 8a 56 40 cd 13 0f 82 1c 00 81 fb 55 'A..U.V@........U'
| 19 | 00110 aa 0f 85 14 00 f6 c1 01 0f 84 0d 00 fe 46 02 b4 '.............F..'
| 20 | 00120 42 8a 56 40 8b f4 cd 13 b0 f9 66 58 66 58 66 58 'B.V@......fXfXfX'
| 21 | 00130 66 58 eb 2a 66 33 d2 66 0f b7 4e 18 66 f7 f1 fe 'fX.*f3.f..N.f...'
| 22 | 00140 c2 8a ca 66 8b d0 66 c1 ea 10 f7 76 1a 86 d6 8a '...f..f....v....'
| 23 | 00150 56 40 8a e8 c0 e4 06 0a cc b8 01 02 cd 13 66 61 'V@............fa'
| 24 | 00160 0f 82 54 ff 81 c3 00 02 66 40 49 0f 85 71 ff c3 '..T.....f@I..q..'
| 25 | 00170 4e 54 4c 44 52 20 20 20 20 20 20 00 00 00 00 00 'NTLDR .....'
| 26 | 00180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '................'
| 27 | 00190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '................'
| 28 | 001a0 00 00 00 00 00 00 00 00 00 00 00 00 0d 0a 44 61 '..............Da'
| 29 | 001b0 74 65 6e 74 72 84 67 65 72 20 65 6e 74 66 65 72 'tentr.ger entfer'
| 30 | 001c0 6e 65 6e ff 0d 0a 4d 65 64 69 65 6e 66 65 68 6c 'nen...Medienfehl'
| 31 | 001d0 65 72 ff 0d 0a 4e 65 75 73 74 61 72 74 3a 20 54 'er...Neustart: T'
| 32 | 001e0 61 73 74 65 20 64 72 81 63 6b 65 6e 0d 0a 00 00 'aste dr.cken....'
| 33 | 001f0 00 00 00 00 00 00 00 00 00 ac c4 d3 00 00 55 aa '..............U.'
| 34 | #
|
Ich kann den Namen mit den MTools löschen. Die Änderung wird angezeigt,
ich kann sie im FS aber nicht finden:
1 | # dd if=/dev/sde1 count=32 | ~/bin/hex >h1
| 2 | # mlabel -c e:
| 3 | # mlabel -s e:
| 4 | Volume has no label
| 5 | # dd if=/dev/sde1 count=32 | ~/bin/hex >h2
| 6 | 32+0 Datensätze ein
| 7 | 32+0 Datensätze aus
| 8 | 16384 Bytes (16 kB) kopiert, 0,0292657 s, 560 kB/s
| 9 | # diff h1 h2
| 10 | # dosfsck /dev/sde1
| 11 | dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
| 12 | /dev/sde1: 0 files, 1/980481 clusters
| 13 | #
|
Wenn ich versuche, den Namen neu zu setzten, gibt es Probleme:
1 | # mlabel e:
| 2 | Volume has no label
| 3 | Enter the new volume label : TESTLABEL
| 4 | # mlabel -s e:
| 5 | Volume label is TESTLABEL˦
| 6 | # dd if=/dev/sde1 count=32 | ~/bin/hex >h2
| 7 | 32+0 Datensätze ein
| 8 | 32+0 Datensätze aus
| 9 | 16384 Bytes (16 kB) kopiert, 0,0247838 s, 661 kB/s
| 10 | # diff h1 h2
| 11 | 5,6c5,6
| 12 | < 00040 00 00 29 f3 3a df 92 4e 4f 20 4e 41 4d 45 20 20 '..).:..NO NAME '
| 13 | < 00050 20 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 ' FAT32 3.....'
| 14 | ---
| 15 | > 00040 00 00 29 f3 3a df 92 54 45 53 54 4c 41 42 45 4c '..).:..TESTLABEL'
| 16 | > 00050 00 00 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 '..FAT32 3.....'
| 17 | # dosfsck /dev/sde1
| 18 | dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
| 19 | There are differences between boot sector and its backup.
| 20 | Differences: (offset:original/backup)
| 21 | 71:54/4e, 72:45/4f, 73:53/20, 74:54/4e, 75:4c/41, 76:41/4d, 77:42/45
| 22 | , 78:45/20, 79:4c/20, 80:00/20, 81:00/20
| 23 | 1) Copy original to backup
| 24 | 2) Copy backup to original
| 25 | 3) No action
| 26 | ? 3
| 27 | /dev/sde1: 1 files, 1/980481 clusters
| 28 | #
|
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.
| 3 | Differences: (offset:original/backup)
| 4 | 71:54/4e, 72:45/4f, 73:53/20, 74:54/4e, 75:4c/41, 76:41/4d, 77:42/45
| 5 | , 78:45/20, 79:4c/20, 80:00/20, 81:00/20
| 6 | Not automatically fixing this.
| 7 | TESTLABEL˦
| 8 | #
|
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>
| 4 | # mlabel -s e:
| 5 | Volume label is TESTLABEL
| 6 | # dd if=/dev/sde1 count=32 | ~/bin/hex >h2
| 7 | 32+0 Datensätze ein
| 8 | 32+0 Datensätze aus
| 9 | 16384 Bytes (16 kB) kopiert, 0,0280775 s, 584 kB/s
| 10 | # diff h1 h2
| 11 | 5c5
| 12 | < 00040 00 00 29 f3 3a df 92 4e 4f 20 4e 41 4d 45 20 20 '..).:..NO NAME '
| 13 | ---
| 14 | > 00040 00 00 29 f3 3a df 92 54 45 53 54 4c 41 42 45 4c '..).:..TESTLABEL'
| 15 | # dosfsck /dev/sde1
| 16 | dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
| 17 | There are differences between boot sector and its backup.
| 18 | Differences: (offset:original/backup)
| 19 | 71:54/4e, 72:45/4f, 73:53/20, 74:54/4e, 75:4c/41, 76:41/4d, 77:42/45
| 20 | , 78:45/20, 79:4c/20
| 21 | 1) Copy original to backup
| 22 | 2) Copy backup to original
| 23 | 3) No action
| 24 | ? 1
| 25 | Leaving file system unchanged.
| 26 | /dev/sde1: 1 files, 1/980481 clusters
| 27 | # dosfsck /dev/sde1
| 28 | dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
| 29 | There are differences between boot sector and its backup.
| 30 | Differences: (offset:original/backup)
| 31 | 71:54/4e, 72:45/4f, 73:53/20, 74:54/4e, 75:4c/41, 76:41/4d, 77:42/45
| 32 | , 78:45/20, 79:4c/20
| 33 | 1) Copy original to backup
| 34 | 2) Copy backup to original
| 35 | 3) No action
| 36 | ? 2
| 37 | Leaving file system unchanged.
| 38 | /dev/sde1: 1 files, 1/980481 clusters
| 39 | #
|
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.
| 3 | Differences: (offset:original/backup)
| 4 | 71:54/4e, 72:45/4f, 73:53/20, 74:54/4e, 75:4c/41, 76:41/4d, 77:42/45
| 5 | , 78:45/20, 79:4c/20
| 6 | Not automatically fixing this.
| 7 | # dosfslabel /dev/sde1
| 8 | NEUESLABEL
| 9 | # mlabel -s e:
| 10 | Volume label is NEUESLABEL
| 11 | # dd if=/dev/sde1 count=32 | ~/bin/hex >h2
| 12 | 32+0 Datensätze ein
| 13 | 32+0 Datensätze aus
| 14 | 16384 Bytes (16 kB) kopiert, 0,000271128 s, 60,4 MB/s
| 15 | # diff h1 h2
| 16 | 5,6c5,6
| 17 | < 00040 00 00 29 f3 3a df 92 4e 4f 20 4e 41 4d 45 20 20 '..).:..NO NAME '
| 18 | < 00050 20 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 ' FAT32 3.....'
| 19 | ---
| 20 | > 00040 00 00 29 f3 3a df 92 4e 45 55 45 53 4c 41 42 45 '..).:..NEUESLABE'
| 21 | > 00050 4c 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 'L FAT32 3.....'
| 22 | 197,198c197,198
| 23 | < 00c40 00 00 29 f3 3a df 92 4e 4f 20 4e 41 4d 45 20 20 '..).:..NO NAME '
| 24 | < 00c50 20 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 ' FAT32 3.....'
| 25 | ---
| 26 | > 00c40 00 00 29 f3 3a df 92 4e 45 55 45 53 4c 41 42 45 '..).:..NEUESLABE'
| 27 | > 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:
1 | # umount /dev/sde1
| 2 | # mlabel -s e:
| 3 | Volume label is USBSTICK01
| 4 | # dosfslabel /dev/sde1
| 5 | NO NAME
| 6 | # dosfsck /dev/sde1
| 7 | dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
| 8 | /dev/sde1: 1 files, 1/980481 clusters
| 9 | # dd if=/dev/sde1 count=32 | ~/bin/hex >h1
| 10 | 32+0 Datensätze ein
| 11 | 32+0 Datensätze aus
| 12 | 16384 Bytes (16 kB) kopiert, 0,0296928 s, 552 kB/s
| 13 | # dosfslabel /dev/sde1 NEUESLABEL
| 14 | # dosfslabel /dev/sde1
| 15 | NEUESLABEL
| 16 | # mlabel -s e:
| 17 | Volume label is NEUESLABEL
| 18 | # dosfsck /dev/sde1
| 19 | dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
| 20 | /dev/sde1: 1 files, 1/980481 clusters
| 21 | # dd if=/dev/sde1 count=32 | ~/bin/hex >h2
| 22 | 32+0 Datensätze ein
| 23 | 32+0 Datensätze aus
| 24 | 16384 Bytes (16 kB) kopiert, 0,0286636 s, 572 kB/s
| 25 | # diff h1 h2
| 26 | 5,6c5,6
| 27 | < 00040 00 00 29 6e 79 42 9e 4e 4f 20 4e 41 4d 45 20 20 '..)nyB.NO NAME '
| 28 | < 00050 20 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 ' FAT32 3.....'
| 29 | ---
| 30 | > 00040 00 00 29 6e 79 42 9e 4e 45 55 45 53 4c 41 42 45 '..)nyB.NEUESLABE'
| 31 | > 00050 4c 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 'L FAT32 3.....'
| 32 | 197,198c197,198
| 33 | < 00c40 00 00 29 6e 79 42 9e 4e 4f 20 4e 41 4d 45 20 20 '..)nyB.NO NAME '
| 34 | < 00c50 20 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 ' FAT32 3.....'
| 35 | ---
| 36 | > 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:
1 | # grep sde1 /etc/mtools.conf
| 2 | drive e: file="/dev/sde1" exclusive
| 3 | #
|
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
|