Hallo,
mich würde mal interessieren, wie Windows entscheidet, dass ein
USB-Stick überprüft und repariert werden muss (ausgehend von FAT32).
Wird das nur anhand des "Dirty-Bits" (oder wie das heißt) entschieden,
oder werden da andere sachen auch nocht geprüft (vergleich zw. FAT
Tabelle 1 und 2 etc..).
Vielleicht kann mir da jemand weiterhelfen.
Die Idee ist nämlich, selbst eine Implementierung auf einem
Mikrocontroller zu schreiben, welche defekte FAT32 Dateisysteme erkennen
(nicht repaieren) soll.
fatFat schrieb:> Die Idee ist nämlich, selbst eine Implementierung auf einem> Mikrocontroller zu schreiben, welche defekte FAT32 Dateisysteme erkennen> (nicht repaieren) soll.
Warum sollte man das Rad neu erfinden, wenn man den USB-Stick von einem
PC aus prüfen kann?
Das Motiv dafür würde mich interessieren.
Interessant fände ich in diesem Zusammenhang auch mal, warum Windows mit
das bei gefühlt jedem USB Stick bei jedem erneuten Einstecken
vorschlägt. Bisher hat aber auch immer alles funktioniert selbst wenn
ich den Vorschlag komplett ignoriert hab.
Paul H. schrieb:> Bisher hat aber auch immer alles funktioniert selbst wenn> ich den Vorschlag komplett ignoriert hab.
deine Auto fährt auch eine gewisse zeit mit einer undichten
Bremsleitung.
Paul H. schrieb:> Dann fährt mein Auto schon seit 200000km mit einer undichten> Bremsleitung. Außerdem, warum sind alle meine Bremsleitungen defekt?
Weil du wohl noch nicht gelernt hast, wie man sie sicher "auswirft".
c-hater schrieb:> Weil du wohl noch nicht gelernt hast, wie man sie sicher "auswirft".
Das nützt nichts.
Ich mach das mit dem sicheren Auswerfen sowohl bei Windows als auch bei
Linux und trotzdem will Win7 die Sticks immer wieder zuerst überprüfen.
Ich denk mal, das ist eine Standard-Aktion ohne jegliche Bedingung.
W.S.
W.S. schrieb:> Ich mach das mit dem sicheren Auswerfen sowohl bei Windows als auch bei> Linux und trotzdem will Win7 die Sticks immer wieder zuerst überprüfen.
Bei Vista und Win7 ziehe ich die Sticks immer ab ohne /sicheres
Auswerfen/, die Meldung kommt nie. Erst seit ich parallel ein Linux
laufen hab, kommen ab und zu die Meldungen. Ich vermute eine Art
Inkompatibilitaet zwischen beiden Systemen.
W.S. schrieb:> Ich mach das mit dem sicheren Auswerfen sowohl bei Windows als auch bei> Linux und trotzdem will Win7 die Sticks immer wieder zuerst überprüfen.
Dann stimmt irgendwas an deiner Windows-Installation nicht. Normal ist
das Verhalten definitiv nicht.
> Ich denk mal, das ist eine Standard-Aktion ohne jegliche Bedingung.
Nein, sicher nicht.
Nur zur Info:
Ich will auf einem Gerät erkennen, ob der USB-Stick in Ordnung ist oder
nicht. Wenn es inkonsistenzen im Dateisystem gibt, möchte ich eine
Warnung ausgeben, welche auf ein defektes Dateisystem hinweist. Wird der
USB-Stick trotzdem am Gerät verwendet, kann nicht garantiert werden,
dass alles so Funktioniert, wie es soll....
Also wenn Du Dir Dokus zu FAT32 durchliest, dann ist auch klar, wie Du
das Dateisystem prüfen musst! :)
Alternativ solltest Du überlegen, wie Du mit ein paar Patches ein
FAT32-System sabotieren kannst, dann weißt Du auch, was Du prüfen musst!
FAT32 wird auch von Linux unterstützt, da gibt es sicherlich ein
Äquivalent zum Windows-Checkdisk-Programm, was Du als Anregung nutzen
kannst.
Wenn Du es schon 100% machen willst, ein paar Hinweise, um Dir die
Flausen aus dem Kopf zu treiben:
USB-Sticks können mit im MBR-Stil oder im Floppy-Stil formatiert sein.
Im Falle des MBR-Stils können Sie auch mehrere Partitionen enthalten.
Du musst Dich also enventuell durch eine Meta-Partitionsstruktur hangeln
- und auch prüfen? :)
Vielleicht gibt es mittlerweile auch GPT-formatierte USB-Sticks.
Ich habe jedenfalls Sticks mit zwei Partitionen herumliegen.
Auf Dateisystemebene kannst Du folgende Dinge überlegen:
Falls USB-Sticks auch festplattenartig Lesefehler bei einzelnen Sektoren
ausgeben, kannst Du den Stick linear einmal einlesen - simpel, aber
zeitaufwendig, Deine Kunden werden es Dir danken, wenn Du einen
32GB-Stick einmal kontrollliest und sie dafür 20 Minuten warten müssen!
:)
Prüfe für jede Datei, ob die Clusterstruktur gültig ist. Die Dateilänge
bestimmt die nötige Zahl von Clustern. Ich glaube, Folgecluster haben
immer eine größere Nummer.
Prüfe, ob es verwaiste Cluster gibt. Hier wäre ein Bitfeld in der Größe
aller Cluster sinnvoll, in dem Du alle gebrauchten Cluster markierst
(Bit setzen). Durchlaufe das Dateisystem und nulle alle Einträge, die
von vorhandenen Dateien benutzt werden. Der Rest sind verwaiste Cluster.
Wenn Du dann beim Markieren auf einen Eintrag stößt, der schon auf eins
steht, hast Du siamesische Zwillinge, die mal getrennt werden müssen.
Stellt sich nur die Frage, ob und wo Du Platz für so ein Bitfeld hast.
Denk' vor allem mal darüber nach, worin der Schaden besteht, wenn Du
nicht prüfst. Ich finde, das rechtfertigt den Aufwand nicht.
Erzähl' Doch bei Gelegenheit in diesem Faden, was Du davon wirklich
realisiert hast!
Eine eigene Frage?
Dieser Thread ist über 10 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.