如何缩小 SD 卡图像?

如何缩小 SD 卡图像?

我使用 dd 命令对 16 GB 的 SD 卡进行了映像处理。但是,该卡上的 2 个分区(FAT32 和 ext3)上的数据不超过 4 GB。

我想将此图像传输到 8GB SD 卡上。如何缩小图像?

答案1

假设是 Linux,可以做这样的事情:

  1. 使用 将映像附加到循环设备losetup。不要挂载任何分区。

    0 GB                              8 GB                             16 GB
    |--------fat32--------|--------------------ext3--------------------|
    
  2. 使用gparted,将第一个分区缩小到原始大小的 50% 以下。

    0 GB                              8 GB                             16 GB
    |--fat32---|          |--------------------ext3--------------------|
    
  3. 将第二个分区移动到新创建的可用空间,缩小至<50%。

    0 GB                              8 GB                             16 GB
    |--fat32---|---------ext3---------|                                |
    
  4. 确保第二个分区在 8 GB 之前结束。

  5. 分离环路设备。

  6. 将图像文件截断为 8 GB。

注意:通常,你必须先缩小文件系统,然后调整分区大小以匹配文件系统。Gparted 只需一个“调整大小”步骤即可为您完成此操作,但其他工具可能不会。

答案2

首先,你不能直接缩小磁盘映像。里面有太多复杂的东西。

我建议您挂载 dd 映像,然后将文件复制到新的文件系统,或者进一步研究缩小特定文件系统而不是磁盘。

首先,您是否有原始分区表的副本​​?

如果没有,请尝试: fdisk -l -u /path/to/image

然后希望您可以使用上面的值来做类似的事情:

dd if=/path/to/image of=/path/to/output bs=BLOCKSIZE skip=STARTBLOCK count=TOTALBLOCKS

(按要求替换上述大写字母)

从那里挂载图像:

mount -o loop /path/to/output /path/to/mountlocation

并复制您的数据或了解特定文件系统的标准收缩以及进一步的添加。

相关内容