Ich habe eine 16-GB-SD-Karte mit einigen Partitionen (eigentlich die Karte für einen Raspberry Pi). Ich habe mehrere andere 4-GB-Karten, auf die ich die primäre Karte klonen möchte. Die 3 Partitionen auf der Hauptkarte sind:
- Raspel-Boot-Partition, FAT, 60 MB
- Linux-Partition, ext2, 1 GB
- Zusätzliche "Speicher" -Partition, FAT, 1 GB
Wenn ich dd
ein Bild der Karte über Folgendes erstelle:
dd if=/dev/sdb of=~/sd-card.bin
dann ist der resultierende .bin 16 GB groß. Gibt es eine Möglichkeit, dd
nur das zu kopieren, was tatsächlich verwendet wird, dh <4 GB, damit ich dies dann dd
auf eine neue 4 GB-Karte übertragen kann? Oder gibt es eine bessere Lösung, die ich verwenden sollte?
sd-card
raspberry-pi
dd
Charlie Schliesser
quelle
quelle
dd
einer Menge anderer Karten geklont. Trotzdem würde ich gerne wissen, ob es möglich ist, das ursprüngliche Problem zu lösen.Antworten:
Ich gehe davon aus, dass Sie einen PC-Linux- oder Mac-Computer verwenden, um die Kopie durchzuführen, nicht den Himbeer-Pi selbst. Sie müssen wahrscheinlich eine Blockgröße hinzufügen.
Ich habe ein und vier Megabyte gesehen, die für Himbeer-Pi-Festplatten verwendet wurden, indem bs = 1M oder bs = 4M angegeben wurden. Ich denke, die Blockgröße ist beim Schreiben der Festplatte wichtiger, da große Übertragungen schneller sind als kleinere. Dadurch wird nicht die Blockgröße für die Festplatte festgelegt, sondern nur die Größe der von dd verwendeten Übertragungen. Ein Grund für die Einstellung einer großen Blockgröße ist die Notwendigkeit, den Flash vor dem Schreiben zu löschen. Dies erfolgt automatisch, jedoch schneller bei Übertragungen, die größer als die minimale Löschgröße sind.
Sie können die Gesamtmenge der von dd kopierten Daten mit "count" begrenzen. "count" ist in Einheiten von Blöcken. Wenn das Ende der letzten Partition auf der Quellfestplatte vor der Größe des Ziels liegt, können Sie tun, was Sie wollen.
So etwas
dd if=/dev/sdb of=~/sd-card.bin bs=1M count=4000
erzeugt ein Bild mit einer Größe von 4000 MB.Weitere Informationen finden Sie unter http://en.wikipedia.org/wiki/Dd_(Unix) und http://elinux.org/RPi_Easy_SD_Card_Setup . Ich bin mir nicht sicher, wie ich das Ende der letzten Partition oder die Gesamtgröße der Karten finden soll. Wenn Sie die Datenträger jedoch formatiert haben, wissen Sie wahrscheinlich, wie das geht.
quelle
Wenn man Williams Antwort erweitert , könnte man das Ende der letzten Partition mit
fdisk
einem Taschenrechner berechnen:Insgesamt genutzter Speicherplatz in Bytes = Endsektor der letzten Partition X Sektorgröße (hier 3667967 x 512).
Insgesamt genutzter Speicherplatz in GB = insgesamt genutzter Speicherplatz in Bytes / 1024 3 (hier sind das 1,749023 GB).
Normalerweise ist es nicht wichtig, ein Bild zu erstellen, das auf das letzte nützliche Datenbit reduziert ist. Im obigen Beispiel würde ich ein Bild von 2 GB mit der von William in derselben früheren Antwort beschriebenen Methode erstellen :
Am Ende des Bildes befindet sich ein kleiner Teil des nutzlosen Guffs nach Ihren letzten nützlichen Daten. Dies unterscheidet sich jedoch im Prinzip nicht von dem nutzlosen Guff, der überschrieben wird, wenn Sie das Bild wieder auf Ihr Medium schreiben.
Diese Methode hat bei ungefähr einem Dutzend Klonen für mich funktioniert. Wenn diese Methode schwerwiegende Mängel aufweist, sind sie noch nicht aufgetaucht.
quelle