使用 dd 创建特定扇区的图像

DEK*_*KER 4 dd fdisk cloning disk-image

我有一个 32GB 的 SD 卡,其中包含一些 pi 小工具的 Armbian 安装。我想将内容克隆到 16GB 卡中。使用 GParted,我将分区缩小到小于 16GB,这里是 SD 卡的状态,如 中所示fdisk。有2个分区,一个是Armbian,一个是FAT32小分区,用来和windows共享文件。

Disk /dev/sdk: 29,74 GiB, 31914983424 bytes, 62333952 sectors
Disk model: USB3.0 CRW-SD/MS
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: 0x22563e30

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdk1           8192 25690111 25681920 12,3G 83 Linux
/dev/sdk2       25690112 26509311   819200  400M  b W95 FAT32
Run Code Online (Sandbox Code Playgroud)

你能告诉我我现在需要做什么来准确克隆卡上的内容,包括引导分区吗?奇怪的是,Armbian 留下 8129 个扇区空闲,并称其为未分区空间,那个区域是什么?

如果我做这样的事情:

dd if=/dev/sdk of=/home/user/backup.iso
Run Code Online (Sandbox Code Playgroud)

它将创建一个大小为 32GB 的图像......但我希望它被限制在/dev/sdk2.

fro*_*utz 6

您可以使用最大的结束扇区进行计数:

dd bs=512 count=26509312 if=/dev/sdk of=devsdk.img
Run Code Online (Sandbox Code Playgroud)

或者使用不同的块大小:

dd bs=1M count=$((26509312*512)) iflag=count_bytes if=/dev/sdk of=devsdk.img
Run Code Online (Sandbox Code Playgroud)

奇怪的是,Armbian 留下 8129 个扇区空闲,并称其为未分区空间,那个区域是什么?

对于嵌入式设备,未分区的空间可以容纳引导加载程序和内核映像,或者其他任何东西。但它可以像对齐考虑一样简单。

  • @PeterCordes 我不知道 Linux 的 I/O 预测和调度是否变得更快了,但是当我 [十年前对其进行基准测试时](https://unix.stackexchange.com/questions/9432/is-there-a-确定 bs-parameter-to-dd/9492#9492 的最佳值的方法),它确实产生了很小但可衡量的差异。`cat` 是不同磁盘副本的赢家。 (2认同)