Hallo Community!
Vorweg:
Sollte das Thema nicht in dieses Unterforum hineinpassen, dann bitte verschieben.
Zum Thema:
Ich will einen FAT Treiber für einen AVR Mikrocontroller schreiben. Einen Treiber für
die SD Karte habe ich bereits geschrieben. Dieser ist zwar noch instabil, vermutlich ein
Timingproblem, soll jetzt aber nicht das Thema sein. Als erster Meilenstein vom FAT
Treiber ist das richtige Auslesen der Verzeichnisse und Dateien. Ich habe eine Imagedatei
über das Loop Device mit FAT32 formatiert und anschließend gemountet um das Dateisystem
auf den Zahn zu fühlen. Habe jetzt allerdings diverse Fragen, für die ich aber noch keine Antwort
habe.
Hier ist der hexdump des Dateisystems. Ich habe hier lediglich eine Textdatei angelegt.
Habe die Bereiche dementsprechend kommentiert. Wäre toll, wenn jemand hier
auf die eine und andere Frage eine Antwort hat:
Bis hierhin ist mir klar was Sache ist (Boot Record, FAT32 Filesysteminfo und Backup Boot Record) .
FAT 0
FAT 1 (Kopie von FAT 0)
VFAT Eintrag (Kennung: 0x0F) -> VIM Swap Datei?
VIM Swap Datei?
VFAT Eintrag (Kennung: 0x0F) -> Die echte Datei.
Die echte Datei. Größe 13 Bytes. Startadresse 0x208000 (Cluster 6)
Müll.
Interessant, dass hier Linux den Programmnamen auch speichert. Warum?
Müll.
Warum speichert Linux hier den Hostnamen?
Warum speichert Linux hier den absoluten Pfad der Datei?
Müll.
Was ist das für eine Eintrag? UNIX Dateiattribute?
Müll.
Was sind diese Einträge?
Reste von der Swap Datei?
Die echte Datei. Eine Größe von 13 Bytes.
Müll.
Vorweg vielen Dank!
Edit:
Okay, habe die Datei hier mit VIM angelegt. Jetzt habe ich einfach eine Datei mit
erstellt.
Schaut schon anders aus. Trotzdem möchte ich gerne Wissen, was hier VIM eigentlich alles speichert.
Es geht hauptsächlich darum, dass die ich Metadaten ignorieren kann, damit es nicht zu einen Fehler in meinem
FS-Treiber kommt. Deswegen möchte ich gerne wissen ob die unbekannten Einträge was besonderes haben, damit
ich sie erkenne und somit ausblenden kann.
Vorweg:
Sollte das Thema nicht in dieses Unterforum hineinpassen, dann bitte verschieben.
Zum Thema:
Ich will einen FAT Treiber für einen AVR Mikrocontroller schreiben. Einen Treiber für
die SD Karte habe ich bereits geschrieben. Dieser ist zwar noch instabil, vermutlich ein
Timingproblem, soll jetzt aber nicht das Thema sein. Als erster Meilenstein vom FAT
Treiber ist das richtige Auslesen der Verzeichnisse und Dateien. Ich habe eine Imagedatei
über das Loop Device mit FAT32 formatiert und anschließend gemountet um das Dateisystem
auf den Zahn zu fühlen. Habe jetzt allerdings diverse Fragen, für die ich aber noch keine Antwort
habe.
Hier ist der hexdump des Dateisystems. Ich habe hier lediglich eine Textdatei angelegt.
Habe die Bereiche dementsprechend kommentiert. Wäre toll, wenn jemand hier
auf die eine und andere Frage eine Antwort hat:
Code:
00000000 eb 58 90 6d 6b 66 73 2e 66 61 74 00 02 08 20 00 |.X.mkfs.fat... .|
00000010 02 00 00 00 00 f8 00 00 3f 00 ff 00 00 00 00 00 |........?.......|
00000020 00 00 20 00 00 08 00 00 00 00 00 00 02 00 00 00 |.. .............|
00000030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 80 00 29 57 51 3c 70 4e 4f 20 4e 41 4d 45 20 20 |..)WQ<pNO NAME |
00000050 20 20 46 41 54 33 32 20 20 20 0e 1f be 77 7c ac | FAT32 ...w|.|
00000060 22 c0 74 0b 56 b4 0e bb 07 00 cd 10 5e eb f0 32 |".t.V.......^..2|
00000070 e4 cd 16 cd 19 eb fe 54 68 69 73 20 69 73 20 6e |.......This is n|
00000080 6f 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 64 69 |ot a bootable di|
00000090 73 6b 2e 20 20 50 6c 65 61 73 65 20 69 6e 73 65 |sk. Please inse|
000000a0 72 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 66 6c |rt a bootable fl|
000000b0 6f 70 70 79 20 61 6e 64 0d 0a 70 72 65 73 73 20 |oppy and..press |
000000c0 61 6e 79 20 6b 65 79 20 74 6f 20 74 72 79 20 61 |any key to try a|
000000d0 67 61 69 6e 20 2e 2e 2e 20 0d 0a 00 00 00 00 00 |gain ... .......|
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
00000200 52 52 61 41 00 00 00 00 00 00 00 00 00 00 00 00 |RRaA............|
00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000003e0 00 00 00 00 72 72 41 61 fa fd 03 00 06 00 00 00 |....rrAa........|
000003f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
00000400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000c00 eb 58 90 6d 6b 66 73 2e 66 61 74 00 02 08 20 00 |.X.mkfs.fat... .|
00000c10 02 00 00 00 00 f8 00 00 3f 00 ff 00 00 00 00 00 |........?.......|
00000c20 00 00 20 00 00 08 00 00 00 00 00 00 02 00 00 00 |.. .............|
00000c30 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000c40 80 00 29 57 51 3c 70 4e 4f 20 4e 41 4d 45 20 20 |..)WQ<pNO NAME |
00000c50 20 20 46 41 54 33 32 20 20 20 0e 1f be 77 7c ac | FAT32 ...w|.|
00000c60 22 c0 74 0b 56 b4 0e bb 07 00 cd 10 5e eb f0 32 |".t.V.......^..2|
00000c70 e4 cd 16 cd 19 eb fe 54 68 69 73 20 69 73 20 6e |.......This is n|
00000c80 6f 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 64 69 |ot a bootable di|
00000c90 73 6b 2e 20 20 50 6c 65 61 73 65 20 69 6e 73 65 |sk. Please inse|
00000ca0 72 74 20 61 20 62 6f 6f 74 61 62 6c 65 20 66 6c |rt a bootable fl|
00000cb0 6f 70 70 79 20 61 6e 64 0d 0a 70 72 65 73 73 20 |oppy and..press |
00000cc0 61 6e 79 20 6b 65 79 20 74 6f 20 74 72 79 20 61 |any key to try a|
00000cd0 67 61 69 6e 20 2e 2e 2e 20 0d 0a 00 00 00 00 00 |gain ... .......|
00000ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000df0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
00000e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Code:
00004000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f 00 00 00 00 |................|
00004010 00 00 00 00 00 00 00 00 ff ff ff 0f 00 00 00 00 |................|
00004020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Code:
00104000 f8 ff ff 0f ff ff ff 0f f8 ff ff 0f 00 00 00 00 |................|
00104010 00 00 00 00 00 00 00 00 ff ff ff 0f 00 00 00 00 |................|
00104020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Code:
00204000 e5 2e 00 74 00 65 00 73 00 74 00 0f 00 c8 2e 00 |...t.e.s.t......|
00204010 63 00 70 00 70 00 2e 00 73 00 00 00 77 00 70 00 |c.p.p...s...w.p.|
Code:
00204020 e5 45 53 54 43 50 7e 31 53 57 50 20 00 6a 36 23 |.ESTCP~1SWP .j6#|
00204030 a6 4e a6 4e 00 00 36 23 a6 4e 03 00 00 30 00 00 |.N.N..6#.N...0..|
Code:
00204040 41 74 00 65 00 73 00 74 00 2e 00 0f 00 42 63 00 |At.e.s.t.....Bc.|
00204050 70 00 70 00 00 00 ff ff ff ff 00 00 ff ff ff ff |p.p.............|
Code:
00204060 54 45 53 54 20 20 20 20 43 50 50 20 00 49 39 23 |TEST CPP .I9#|
00204070 a6 4e a6 4e 00 00 39 23 a6 4e 06 00 0d 00 00 00 |.N.N..9#.N......|
Code:
00204080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Code:
00205000 62 30 56 49 4d 20 38 2e 30 00 00 00 00 10 00 00 |b0VIM 8.0.......|
00205010 00 00 00 00 00 00 00 00 74 4e 00 00 72 6f 6f 74 |........tN..root|
Code:
00205020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Code:
00205040 00 00 00 00 6d 61 74 72 69 78 34 32 00 00 00 00 |....matrix42....|
00205050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Code:
00205060 00 00 00 00 00 00 00 00 00 00 00 00 2f 6d 6e 74 |............/mnt|
00205070 2f 74 65 73 74 2e 63 70 70 00 00 00 00 00 00 00 |/test.cpp.......|
Code:
00205080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Code:
002053e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d 55 |...............U|
002053f0 33 32 31 30 00 00 00 00 23 22 21 20 13 12 55 00 |3210....#"! ..U.|
Code:
00205400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Code:
00206000 74 70 01 00 7f 00 00 00 02 00 00 00 00 00 00 00 |tp..............|
00206010 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
00206020 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00206030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00207000 61 64 00 00 d3 0f 00 00 f3 0f 00 00 00 10 00 00 |ad..............|
00207010 01 00 00 00 00 00 00 00 f3 0f 00 00 00 00 00 00 |................|
00207020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Code:
00207ff0 00 00 00 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 00 |...Hello World!.|
Code:
00208000 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 0a 00 00 00 |Hello World!....|
Code:
00208010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
40000000
Vorweg vielen Dank!
Edit:
Okay, habe die Datei hier mit VIM angelegt. Jetzt habe ich einfach eine Datei mit
Code:
$ echo "Hello World! > test.txt
Schaut schon anders aus. Trotzdem möchte ich gerne Wissen, was hier VIM eigentlich alles speichert.
Es geht hauptsächlich darum, dass die ich Metadaten ignorieren kann, damit es nicht zu einen Fehler in meinem
FS-Treiber kommt. Deswegen möchte ich gerne wissen ob die unbekannten Einträge was besonderes haben, damit
ich sie erkenne und somit ausblenden kann.
Zuletzt bearbeitet: