扩展William的答案,可以使用fdisk
和计算器计算最后一个分区的结尾:
$ fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 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
Disklabel type: dos
Disk identifier: 0x00057540
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 186367 184320 90M c W95 FAT32 (LBA)
/dev/mmcblk0p2 186368 3667967 3481600 1.7G 5 Extended
/dev/mmcblk0p5 188416 3667967 3479552 1.7G 83 Linux
已用总空间(以字节为单位)=最后一个分区的末尾扇区X扇区大小(此处为3667967 x 512)。
以GB为单位的总已用空间=以字节为单位的总已用空间/ 1024 3(此处为1.749023 GB)。
通常,创建被缩减到最后一个有用数据位的映像并不是至关重要的,因此在上面的示例中,我将使用William在先前相同的答案中描述的方法创建2 GB的映像:
dd if=/dev/mmcblk0 of=/path/to/pi_updated.img bs=1M count=2048
图像末尾将包含最后一次有用数据之后的无用填充物的一小部分,但从原理上讲,这与将图像写回到媒体上时将被覆盖的无用填充物没有什么不同。
这种方法已经为我处理了十几个克隆。如果此方法有任何致命缺陷,则尚未浮出水面。
dd
到其他卡上。尽管如此,还是想知道是否有可能解决最初的问题。