如果实际分区适合,我可以使用dd将较大的SD卡克隆到较小的SD卡吗?


9

我有一个16GB的SD卡,上面有几个分区(实际上是Raspberry Pi的卡)。我还想将主卡克隆到其他几张4GB卡中。主卡上的3个分区是:

  • Rasp引导分区,FAT,60MB
  • Linux分区,ext2,1GB
  • 额外的“存储”分区,FAT,1GB

如果我通过以下dd方式创建卡的图像:

dd if=/dev/sdb of=~/sd-card.bin

那么生成的.bin大小为16GB。有没有一种方法可以dd复制实际使用的内容,即<4GB,这样我就可以将dd其复制到新的4GB卡上?还是我应该使用更好的解决方案?


我最终在新的4GB卡上创建了确切的内容,并将其克隆dd到其他卡上。尽管如此,还是想知道是否有可能解决最初的问题。

Answers:


9

我假设您使用的是PC Linux或Mac计算机,而不是raspberry pi本身来执行复制。您可能需要添加一个块大小。

通过指定bs = 1M或bs = 4M,我已经看到了用于树莓派磁盘的一到四个兆。我认为在写入磁盘时,块大小更为重要,因为大型传输比小型传输更快。这不会设置磁盘的块大小,而只会影响dd使用的传输大小。设置大块大小的原因之一是需要在写入闪存之前先将其擦除。这是自动完成的,但是对于大于最小擦除大小的传输来说速度更快。

您可以使用“ count”限制dd复制的数据总量。“计数”以块为单位。如果源磁盘上最后一个分区的末尾早于目标大小,则可以执行所需的操作。

诸如此类的操作dd if=/dev/sdb of=~/sd-card.bin bs=1M count=4000将创建一个大小为4000MBs的图像。

有关更多信息,请参见http://en.wikipedia.org/wiki/Dd_(Unix)http://elinux.org/RPi_Easy_SD_Card_Setup。不确定如何找到最后一个分区的末尾或卡的总大小。但是,如果您已经格式化了磁盘,则可能会知道如何执行此操作。


谢谢(你的)信息。我不知道计数选项。我会尝试的。

@charlie如果您可以在使用count选项和不使用count选项的情况下进行尝试并进行报告,那将非常着迷。请确保检查磁盘的大小如何报告,以及是否可以向其中添加文件,并且大小会更改。'cos当dd失败而与不同大小的磁盘有关时,您会遇到这类问题。这是一个示例,其中我用两个不同大小的驱动器弄乱了dd。superuser.com/questions/538583/difficulty-resizing-a-partition 最后,我没有使用dd进行克隆。
barlop

3

扩展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

图像末尾将包含最后一次有用数据之后的无用填充物的一小部分,但从原理上讲,这与将图像写回到媒体上时将被覆盖的无用填充物没有什么不同。

这种方法已经为我处理了十几个克隆。如果此方法有任何致命缺陷,则尚未浮出水面。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.