Ich habe ein Disk-Image, es ist ein "ganzes" Disk-Image, das z. B. mehrere Partitionen enthält, und ich möchte nur eine davon (nicht die erste ..) auf eine Partition auf einem externen Laufwerk mit mehreren Partitionen klonen ( Ich klone es auch nicht auf die erste Partition der Festplatte ...)
Wenn Sie das Bild mit einer Diskette versehen, erhalten Sie Folgendes:
# fdisk -l 09.02.2013-wheezy-raspbian.img Datenträger 2013-02-09-wheezy-raspbian.img: 1939 MB, 1939865600 Byte 255 Köpfe, 63 Sektoren / Spur, 235 Zylinder, insgesamt 3788800 Sektoren Einheiten = Sektoren von 1 * 512 = 512 Bytes Sektorgröße (logisch / physisch): 512 Bytes / 512 Bytes E / A-Größe (Minimum / Optimum): 512 Bytes / 512 Bytes Festplattenkennung: 0x00014d34 Gerätestart Start Ende blockiert ID-System 2013-02-09-wheezy-raspbian.img1 8192 122879 57344 c W95 FAT32 (LBA) 2013-02-09-wheezy-raspbian.img2 122880 3788799 1832960 83 Linux #
und das Blockgerät sieht folgendermaßen aus:
# fdisk -l / dev / sdc Festplatte / dev / sdc: 8014 MB, 8014266368 Byte 247 Köpfe, 62 Sektoren / Spur, 1022 Zylinder, insgesamt 15652864 Sektoren Einheiten = Sektoren von 1 * 512 = 512 Bytes Sektorgröße (logisch / physisch): 512 Bytes / 512 Bytes E / A-Größe (Minimum / Optimum): 512 Bytes / 512 Bytes Festplattenkennung: 0x00000000 Gerätestart Start Ende blockiert ID-System / dev / sdc1 2048 131071 64512 e W95 FAT16 (LBA) / dev / sdc2 131072 15652863 7760896 83 Linux #
Ich möchte, dass die zweite Partition des Images die zweite Partition des Blockgeräts ersetzt. Mach dir keine Sorgen über den nachlaufend beschädigten freien Speicherplatz, ich werde GParted verwenden, um das zu bereinigen, und ich brauche es sowieso für etwas anderes.
Antworten:
Wenn
--partscan
dies nicht funktioniert, können Sie auch Folgendes verwenden:oder ähnliche Partitionszuordnungslösungen.
Sie sollten es wahrscheinlich zuerst montieren, um zu sehen, ob es das Richtige ist oder was.
Natürlich können Sie auch die fdisk-Ausgabe lesen und
dd
dieskip=131072
oder was auch immer direkt angeben, dh so viele Eingabeblöcke überspringen, dass an der Stelle, an der sich die Partition befindet, mit dem Lesen begonnen wird. Es ist jedoch schöner, tatsächliche Partitionen mit einem Loop-Gerät zu sehen.quelle
losetup
Befehl hat nicht funktioniert - es wurde eine nicht erkannte Option angezeigt--find
. Ich habe das entfernt, es hieß, es habe es nicht erkannt--show
. Wenn--partscan
ich das abnahm, beschwerte ich mich darüber. Zu diesem Zeitpunkt wurde mir klar, dass der Befehl in absehbarer Zeit nichts für mich tun würde. Ich beschloss, die anderen zu versuchen, aber beidepartx
undkpartx
"Befehl nicht gefunden" zurückzugeben.dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdc skip=122880
, aber das kehrt zurückdd: ‘2013-02-09-wheezy-raspbian.img’: cannot skip: Invalid argument
.skip
hängt davon abbs
. Wenn Siebs=1M
also einen Alias verwenden (oder einen Alias haben, der dies tut), würde dies erklären, warum es nicht funktioniert. versuche es mitbs=512
. Warum 122880, wenn fdisk 131072 sagt? Auch mein Losetup istlosetup from util-linux 2.22.2
. Gleiches gilt für partx. kpartx stammt von Multipath-Tools (gebrauchter Device Mapper).kpartx
ist für LVM.partprobe
wird auch die Arbeit erledigen, aus dem getrennten Paket.So etwas sollte funktionieren:
if = legt das Bild fest, das Sie klonen möchten
of = legt die Zielpartition fest, auf der Sie das Image klonen möchten
quelle
dd: opening ‘2013-02-09-wheezy-raspbian.img2’: No such file or directory
losetup -fP yourImage.img
dd
, können Sie tundd if=/dev/loop0p1 of=image.img
, aber ich denke, dass Siecat
besser möchten . In einer Root-Shell einfach tuncat /dev/loop0p1 > image.img
. In beiden Beispielen wird davon ausgegangen, dass Sie die erste Partition möchten und das Ihnen zugewiesene Loopback-Gerät war/dev/loop0
losetup -d /dev/loop0
. Dies setzt wiederum voraus, dass/dev/loop0
es sich um Ihr Loopback-Gerät handelt.quelle
Du könntest es tun:
quelle
Damit können Sie nur die zweite Partition in ein separates Image kopieren
Danach können Sie es anstelle der Partition auf die Festplatte kopieren
oder Sie können es sogar in einem Befehl tun
Stellen Sie einfach sicher, dass Sie / dev / sdc2 aushängen, bevor Sie darauf schreiben.
quelle