我使用 dd 命令对 16 GB 的 SD 卡进行了映像处理。但是,该卡上的 2 个分区(FAT32 和 ext3)上的数据不超过 4 GB。
我想将此图像传输到 8GB SD 卡上。如何缩小图像?
答案1
假设是 Linux,可以做这样的事情:
使用 将映像附加到循环设备
losetup
。不要挂载任何分区。0 GB 8 GB 16 GB |--------fat32--------|--------------------ext3--------------------|
使用
gparted
,将第一个分区缩小到原始大小的 50% 以下。0 GB 8 GB 16 GB |--fat32---| |--------------------ext3--------------------|
将第二个分区移动到新创建的可用空间,缩小至<50%。
0 GB 8 GB 16 GB |--fat32---|---------ext3---------| |
确保第二个分区在 8 GB 之前结束。
分离环路设备。
将图像文件截断为 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
并复制您的数据或了解特定文件系统的标准收缩以及进一步的添加。