Sie erwähnen in einem Kommentar zu RooTer, dass A) Sie die ursprüngliche Partitionsgröße mit reduziert haben gparted
, aber dd
dennoch die gesamte Karte kopieren , und B) beide Partitionen in das Image aufnehmen möchten.
Das Problem "A" ist leicht zu erklären: Sie kopieren immer noch die gesamte Karte, da sich das darauf /dev/mmcblk0
bezieht. Die einzelnen Partitionen sind natürlich /dev/mmcblk0p1
und /dev/mmcblk0p2
. Dies ist die Komplikation in Problem "B", aber Sie können nicht einfach dd
jede Partition und die beiden Dateien zusammen verketten, da die Partitionstabelle am Anfang /dev/mmcblk0
den Anfang und die Länge jeder Partition indiziert. Ohne das wird das Bild unbrauchbar.
Sie können jedoch die Länge jeder Partition abrufen fdisk -l
und damit einige Parameter für bestimmen dd
. Beispielsweise:
> fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 16.1 GB, 16138633216 bytes
4 heads, 16 sectors/track, 492512 cylinders, total 31520768 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 26746879 13312000 83 Linux
Die Einheiten "Start" und "Ende" sind Sektoren. Beachten Sie, dass die Sektorgröße 512 Byte beträgt. Für /dev/mmcblk0p2
, 26746879 (letzter Sektor) - 122880 (erster Sektor) = 26623999/2 (für 2 Sektoren pro kB) / 1024 (kB pro MB) / 1024 (MB pro GB) = 12,69, wobei ich die Partition mit gparted vergrößerte auf 12 GB, das sieht also richtig aus (eigentlich sollte ich 1000 und nicht 1024 als Divisor mit Speicher verwenden, was auf 13,31 GB hinausläuft, aber ich vermute, dass gparted und einige andere Tools auch 1024 verwenden).
Das erste, was Sie überprüfen möchten, ist, dass Ihre zweite Partition wirklich die kleinere Größe hat, auf die Sie sie eingestellt haben. Verwenden Sie als Nächstes einfach diese Zahlen mit dd
; für mich wäre es:
dd if=/dev/mmcblk0 of=rpi.img bs=512 count=26746880
Ich habe dort einen zusätzlichen Sektor, um jegliche Art von Missverständnissen zu vermeiden dd
. Es gibt eine einfache Möglichkeit zu überprüfen, ob dies funktioniert hat:
> fdisk -l rpi.img
Disk rpi.img: 102 MB, 102400000 bytes
255 heads, 63 sectors/track, 12 cylinders, total 200000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69
Device Boot Start End Blocks Id System
rpi.img1 8192 122879 57344 c W95 FAT32 (LBA)
rpi.img2 122880 26746879 13312000 83 Linux
Beachten Sie, dass hier eine gewisse Diskrepanz besteht: Die Sektoren "Start" und "Ende" stimmen mit der ursprünglichen Partitionstabelle überein, aber die Gesamtgröße in der oberen Statistik beträgt nur 102 MB! Dies liegt daran, dass ich eigentlich count=200000
als Parameter verwendet habe, dd
weil ich mich nicht wirklich mit einer 12-GB-Kopie beschäftigen wollte (beachten Sie auch "insgesamt 200000 Sektoren"). Der Grund, warum die Tabelle unten dies nicht widerspiegelt, ist, dass fdisk seine Informationen aus den Partitionsdaten abruft, die wörtlich am Anfang des Abbilds vom Anfang der SD-Karte kopiert wurden aufrecht erhalten. Wenn ich den Rest (richtig) kopiert hätte, wären die Zahlen kopaketisch und das Bild wäre lebensfähig.
Probieren Sie das aus. :)