Ich möchte eine Flashkarte auf eine größere klonen.
Das Dateisystem der Original-CF ist Fat16.
Und es sollen alle Zuordnungseinheiten,MBR usw. erhalten bleiben.
Den MBR zu erhalten ist kein Thema. Du brauchst nur den ersten Sektor mit dd zu klonen. Obs funktioniert, ist was anderes. Willkommen in der Welt von Zysten, Kröpfen und Tumoren. (Oder waren das Zylinder, Köpfe und Sektoren??)
Sorry, aber ich vermag dir nicht zu sagen, wie sehr die Hersteller von CF-Readern mit diesen völlig überflüssigen Anachronismen verwachsen sind... probieren geht über stukkatieren.
Die Partitionstabelle kannst du danach passend editieren, wenns sein muss.
Nur: Erlaube mir die Frage... wenn du davon keinen BIOS-PC mit x86 Prozzi
booten willst, wozu brauchst du dann überhaupt einen MBR???
Ich habe also zunächst mit dem Festplattenmanager ein DiskImage erstellt.
Das musst du wohl unter Windows gemacht haben?
Hier heisst das "...-Dienstprogramm" (weil *du* der Chef bist und das Prog der Diener - statt andersherum...

)
Anyway... das FP-DP baut Images nicht so simpel als RAW-Klone auf wie dd das tut. Da werden u.U. Metadaten und Prüfsummen mit eingepackt, die eine spätere RAW-Kopie zum Scheitern verurteilen. Entweder ziehst du das Original schon mit dd ab, oder du benutzt auch zum Zurückspielen die Hi-Level Funktionen aus dem Apple Framework. (Es geht zwar auch anders, aber das zu erläutern sprengt etwas den Rahmen.)
Nun mit dd versucht den Inhalt des Images auf eine (ebenfalls über den Diskmanager erstellten Partition der größeren Karte) Partition der neuen zu kopieren.
Das kann eigentlich nicht klappen. FAT-Volumes enthalten im Header (bei FAT12 und 16 im Startsektor, bei FAT32 im Start- und im Backupsektor) nicht nur die Länge des Volumes, sondern auch den absoluten Startsektor der Partition sowie eine sequentielle BIOS-ID des Mediums inklusive eines Media-Deskriptorflags. Letzteres bleibt bei gleichen Medientypen identisch, aber alles andere... (vom CHS-Mapping will ich gar nicht erst anfangen...)
Im Zweifelsfall müssen alle anderen drei Angaben korrekt sein, die Länge aber auf jeden Fall. Wenn deine neue Partition nicht auf den Cluster genau gleich lang ist wie das Original, dann hast du ein massives Problem an der Backe. (sprich: neues Dateisystem formatieren und dann den Content auf Dateisystemebene kopieren. Aber das geht ganz easy.)
DD beendet mit einem I/O Fehler. Es konnten nicht alle Blöcke (in dem Fall nur einer) übertragen werden.
#dd if=mycf.dmg of=/dev/rdisk1s1
Mangels CF-Karte kann ich dir das nicht mit Sicherheit versprechen, aber das Problem dürfte hier ganz einfach sein, dass du darauf nicht per Char-Device zugreifen kannst. Du brauchst ein gepuffertes Blockdevice. Lass einfach das kleine 'r' vor dem 'disk' weg, dann bist du fündig...
Code:
dd if=foo of=/dev/diskXsY
Falls das zickt oder tempomässig an eine besoffene Bergziege erinnert, versuchs mit einer Out-Blocksize von 4 kB.
(Mehr ist eher unklug. Apples Treiber sind verliebt in 4k, immer und überall...)
dd: /dev/rdisk1s1: Input/output error
3984593+0 records in
3984592+0 records out
2040111104 bytes transferred in 17227.988625 secs (118418 bytes/sec)
Äääh. Zwischenfrage.... war da nicht gerade die Rede von nur EINEM Block?????
Also was denn jetzt? Nur einer oder eben doch die zu erwartenden 4 Mio., so wie hier beschrieben ???
Wie kann ich eine Fat16 Partition anlegen,
Partitionstyp 0x06
man fdisk
man mkfs_msdos
(habe festgestellt, dass er Diskmanager nur Fat32 anlegt)
Grössenabhängig... ab 32 MB, glaube ich...
die genau die selben Zuordnungseinheiten wie das Original hat?
Option 1: fdisk
Option 2: fdisk
Option 3: fdisk
Hatte ich fdisk schon erwähnt?
Das Unix fdisk ist mir doch noch etwas ungeheuer
Nope. Du hast
BSD fdisk. Das ist zwar mächtig wie Merlin, aber leider so nebulös-kryptisch wie Gandalf...
- bin aus den man´s nicht ganz schlau geworden.
Versuch einfach den interaktiven Modus. Ist beinahe so wie GNU fdisk, nur das Display des Status Quo ist total anders angelegt (in Form der "rohen" Tabelle statt als fix und foxi interpretierte Werte. Die Anzeige gleicht etwa dem "Expertenmodus" von GNU fdisk.). Solange du nur mit "primären" Partitionen agierst, wird dir nicht allzu schwerfallen die Bedienung zu verstehen.
Hier kann ich anscheinend keine genaue Bytegröße für meine Partitionen definieren sondern nur Blöcke oder habe ich das was missverstanden?
Du hast nicht missverstanden. Oder doch, wie man's nimmt.
Die Eingabe hat in physischen Medien-Blocks, vulgo: "Sektoren" zu erfolgen.
Und zwar wahlweise als CHS-Adressen von Start:Ende, oder als LBA-Sektoren in Form Start:Länge.
Ausserdem ist es ratsam, das zu erwartende CHS-Mapping des Mediums beim Programmaufruf als Parameter mit anzugeben, sonst wird die Tabelle zu einem Hundertwasser-Haus. (Viel Spass beim raten...)
63 Sektoren und 255 Köpfe als Berechnungsgrundlage sollten fast immer eine gute Wahl sein, der BSD-Kernel ist bei der automatischen Schätzung leider etwas zu sehr kreativ...
Wenns damit Probleme gibt, versuch 16/32.
(Und lass am Ende den letzten angebrochenen Zylinder ja schön brav ungenutzt, oder du wirst dein Microsoft-Lehrgeld sehr, sehr hart verdienen.)