Hallo Peter, liebe Forenten,
zwar arbeitet auch DriveSnapshot etwas zu "intelligent", um eine echte Low-Level-
Analyse garantiert unverfälschter Daten zu erlauben, aber schon aus den (leider
nur) Fragmenten des MBR und des Bootsektors des von Peter ausgelesenen
4 GB MDs kann man sehr deutliche Rückschlüsse darauf ziehen, warum es
mit der A2 nicht funktioniert.
Der erste physikalische Sektor des Mediums enthält normalerweise den sog.
Master Bootstrap Loader (MBR) und die Partitionstabelle, in der alle primären
Partitionen des Mediums definiert sind. Bei den meisten Betriebssystemen sind
maximal vier primäre Partitionen zulässig.
1
2
3
4
5
6
7
8
9
10
11
12
13
NB. Nur ältere DOS-Versionen und Disk-Manager-Tools unterstützen
mitunter bis zu 16 primäre Partitionen. DR-DOS ab 7.07 und PTS-DOS
unterstützen einen fünften Partitionseintrag für sog. Advanced Active
Partitions. DR-DOS in Verbindung mit LOADER darüberhinaus auch
einen weiteren Eintrag für Multi-Boot-Scenarios.
Sog. logische Laufwerke in erweiterten Partitionen kann man hingegen
unter DOS ab 3.30 und unter allen heutigen Systemen praktisch in
beliebiger Anzahl anlegen. Eine erweiterte Partition dient dabei als
Container für die Kette logischer Laufwerke und "verbraucht" nach außen
hin lediglich einen primären Partitionseintrag. Normale Betriebssysteme
erlauben maximal eine erweiterte Partition pro physikalisches Laufwerk,
bestimmte Ausgaben von DR-DOS jedoch bis zu vier.
Der untersuchte Sektor enthält eine gültige Signatur (55h AAh), die ihn als gültigen
MBR-Sektor ausweist. Ansonsten würde das Medium vom Betriebssystem als
unpartitioniert und unformatiert zurückgewiesen werden.
Der Sektor enthält jedoch keinen MBR-Code, noch nicht mal eine Endlosschleife
oder Code zur Ausgabe einer Fehlermeldung, d.h. würde man versuchen, von
diesem Medium zu booten, so würde der Rechner keine Fehlermeldung ausgeben,
sondern abstürzen. Im Einzelfall könnte ein Absturz in dieser frühen Phase des
Bootens zur Zerstörung des Flash-Speicherinhaltes des Rechners führen, so daß
der Rechner ohne valides System-BIOS danach überhaupt nicht mehr bootfähig
wäre und man das System-BIOS erst mit einem externen Flash-Burner neu
brennen müßte. Das ist zwar ziemlich unwahrscheinlich, aber schon vorge-
kommen (sogar mir selbst unter reproduzierbaren Testbedingungen, insofern
sind das nicht irgendwelche wilden Internet-Gerüchte ;-).
Sollte das also noch dem Auslieferungszustand des Mediums entsprechen, so sollte
der CF/MD-Hersteller hier dringend seine Initialisierungsprozedur überarbeiten
und dort wenigstens eine Endlosschleife einbauen, besser eine Fehlermeldung aus-
geben, auf eine Tastatureingabe warten und INT 19h anspringen, so wie das
offiziell für diesen Fall definiert ist. Mit ein wenig Trickserei kann man das sogar
so programmieren, daß sich das nicht nur auf x86-PCs sauber verhält.
Die Partitionstabelle enthält nur einen einzigen Eintrag. Das ist soweit normal, denn
üblicherweise richtet man auf einer CF ja auch nicht mehr als ein Volume ein - die
meisten Betriebssysteme würden damit eh nicht zurechtkommen.
Dieser Eintrag erstreckt sich über die gesamte nutzbare "Oberfläche" des Mediums,
also etwa 4 GB. Auch noch kein Problem.
Aber als Partitionstyp ist dort die ID 06h eingetragen - das steht für "FAT16B"
(also 16-Bit-FAT mit 32-bittigen Sektoreinträgen) alias "BIGDOS".
Um mit einer 16-Bit-FAT (also etwas weniger als 2^16 = 65536 Zuordnungs-
einheiten, auch Cluster genannt) ein Volume mit mehr als 2 GB abzudecken,
müssen die Cluster größer als 32 KB werden. Dies ist aber offiziell nicht
erlaubt und die allermeisten Betriebssysteme weltweit kommen damit nicht
zurecht, so auch nicht Windows 95/98/SE/ME sowie sämtliche Ausgaben von
MS-DOS, PC DOS, RxDOS und OS/2, ob alt oder neu. Es gibt ein paar Ausnahmen:
Windows NT/2000/XP, Linux sowie neuere Ausgaben von DR-DOS und FreeDOS
können auch Partitionen mit Clustergrößen von 64 KB mounten - damit sind
also FAT16B-Partitionen bis zu 4 GB Größe möglich. (Für Details sei auf den
folgenden Thread verwiesen: http://www.mi-fo.de/forum/viewtopic.php?t=5986)
Zu den meisten Entwicklern von Embedded Betriebssystemen dürfte sich das
aber noch nicht herumgesprochen haben, insofern ist es eher unwahrscheinlich,
daß ein in einer Kamera genutztes Betriebssystem Cluster mit 64 KB unter-
stützt und es dürfte eher die Regel sein, daß ein solches Betriebssystem im
Rahmen des FAT16-Dateisystems auf maximal 2 GB pro Volume beschränkt
bleibt. Ich denke, das dürfte auch bei der Minolta DiMAGE A2 nicht anders sein.
Für Mediengrößen oberhalb 2 GB muß man eben entweder auf /mehrere/ FAT16-
Partitionen ausweichen (es wäre noch zu klären, ob die A2 /damit/ klarkommt,
denn das wäre zwar standardkonform, aber bei einem Wechselmedium auch
nicht gerade üblich), oder eben stattdessen FAT32 einsetzen.
Von den 32-Bit-breiten FAT-Einträgen werden im Rahmen des FAT32-Dateisystems
nur die untersten 28 Bit verwendet (außer bei der ausschließlich von DR-DOS ab
7.07 unterstützten proprietären Erweiterung FAT32B, die alle 32 Bit benutzt).
Es stehen also grob 2^28 Zuordnungseinheiten zur Verfügung, so daß man bei
einem 4 GB großen Medium problemlos wieder auf kleine Clustergrößen von
4 KB bis 8 KB kommt (mit genügend Spielraum nach oben).
Der Bootsektor dieser 4 GB großen FAT16B-Partition hat eine gültige Kennung
55h AAh, die das Volume als formatiert ausweist.
Der Bootsektor enthält einen zumindest vom äußeren Format her standard-
konformen XBPB (Extended BIOS Parameter Block), wie er für FAT16B ab
DOS 3.31 gängig (wenn auch nicht vorgeschrieben) ist.
Das OEM-Label steht noch auf "MSDOS5.0", wie es für ein unter Windows NT
formatiertes Medium üblich ist, die Medien-ID F8h identifiziert das Volume als
Festplatte, hier also als Wechselplatte (removable drive) zu verstehen,
ein Volume-Label ist nicht definiert ("NO_NAME____" und der rein kosmetische
Dateisystemeintrag steht völlig korrekt auf "FAT16___". ('_' in diesen Beispielen
bitte jeweils durch ' ' ersetzen - die Foren-Software verschluckt leider mehr als
ein Leerzeichen hintereinander.) Als Bootcode enthält der Bootsektor den NTLDR-
Code, also den Bootstrap Loader für Windows NT.
Daraus wird klar, daß dieses Medium unter Windows NT/2000/XP formatiert wurde,
welches sich ja, wie oben angesprochen, auch nicht an der Übergröße des FAT16-
Volumes stört.
Meine Vermutung geht jetzt dahin, daß der Bootsektor zwar nicht mehr im Original-
Zustand ist (wir also nicht mehr feststellen können, was sich dort ursprünglich drin
befunden hat), daß aber der MBR-Sektor nach wie vor noch im Original vorliegt,
sonst wäre da mit großer Wahrscheinlichkeit der fehlende Master Bootstrap Loader
Code eingetragen worden.
D.h. das Medium ist zwar schon fremdformatiert, aber noch nicht neu partitioniert
worden (braucht man ja auch nicht). Normalerweise kapseln moderne Betriebs-
systeme partionierte Wechselmedien auch so, daß sie überhaupt nicht mehr wie
partitionierte Medien aussehen - nur mit Tricks kommt man überhaupt an den MBR
heran (z.B. indem man /von/ diesem Medium bootet, sofern das möglich ist).
"Nach oben", also für den Anwender, sehen sie aus wie Superfloppies.
Ich könnte mir also vorstellen, daß die Kennung 06h (für "FAT16B" in der
Partitionstabelle selbst dann noch so dort stehen bleibt, wenn man das
Medium als FAT32 neu formatiert. Das würde gängige Desktop-Betriebs-
systeme nicht mal aus der Bahn werfen, da diese nur schauen, ob der Partitions-
typ ein bekannter und unterstützter Typ ist. Falls ja, werden die Volumes
entsprechend der im Bootsektor und dem Anfang der FAT verankerten
Charakteristika mit dem jeweils entsprechenden Dateisystemtyp gemountet,
und zwar völlig unabhängig davon, ob die Partitions-ID im MBR jetzt für das
ermittelte Dateisystem stimmt oder nicht (die ID wird nur von Low-Level-Tools
benötigt, die unterhalb des Betriebssystems arbeiten müssen, z.B. FDISK,
LOADER oder bei Multi-Bootloader). Falls der Partitionstyp hingegen nicht
unterstützt wird, wird das entsprechende Laufwerk einfach übergangen.
Insofern macht ein falscher Partitionstyp Desktop-Systemen herzlich wenig
aus, Embedded Systeme könnten sich aber daran verschlucken (da dieses
Verhalten, wie Volumens gemountet werden, und daß dabei der Partitions-
typ selbst unrelevant ist, nicht dokumentiert ist) und dann könnten sie z.B.
versuchen, ein als FAT32-formatiertes Volume "auf Deubel-komm-raus" als
FAT16 zu mounten, nur weil der Partitionstyp im MBR eben auf 06h für
"FAT16B" steht - das Ergebnis wäre ein Absturz oder einfach nur völliges
Datenchaos auf der Karte.
Um hier absolut sauber zu bleiben, müßte also statt der 06h bei einem als
FAT32-formatierten Volume auch eine ID 0Bh (bzw. ab 8 GB Volume-Größe
0Ch) stehen. Das bliebe also noch zu verifizieren.
Was ich noch nicht untersucht habe, sind die einzelnen Einträge des BPB, aber
um deren Konsistenz zu prüfen, bräuchte ich auch wirklich einen 1:1-Abzug
der ersten ca. 100 Sektoren des Mediums. Das geht mit DriveSnapshot nicht,
da es das Image bearbeitet (komprimiert und nur Sektoren mit "Nutzlast"
speichert). Da müßte man also "DD for Windows" oder einen Diskeditor wie
z.B. Runtimes DiskExplorer for FAT (http://www.runtime.org/diskexpl.htm)
für nehmen.
Trotzdem denke ich, daß wir das Problem schon gefunden haben:
Die A2 kommt nicht mit einer Clustergröße von 64 KB zurecht.
Das ist kein echter Fehler, aber zwecks universellerer "Medienkompatibilität" kann
man nur an Konica Minolta appellieren, daß sie die Unterstützung dafür mit einem
Firmware-Update nachschieben sollten, zumindest aber sollten zukünftige Kameras
damit klarkommen, einfach weil - wie wir sehen - solche etwas "schräg"
formatierten Medien "in the wild" vorkommen. Wäre übrigens auch interessant,
das Gleiche mit der Dynax 7 D zu untersuchen.
Das heißt übrigens nicht, daß andere in diesem Forum vorgebrachte Probleme
mit CFs/MDs auch genau damit zusammenhängen - da gibt es viel zu viele
Kleinigkeiten, wo es schief laufen kann. Das müßten wir dann im jeweiligen
Einzelfall untersuchen, ehe wir da in der Zukunft u.U. ein Muster ableiten können.
Viele Grüße,
Matthias