缩小包含 Linux 分区的 img 文件

缩小包含 Linux 分区的 img 文件

我有一个 img 文件(4.02GB),其中包含 Linux 操作系统。我的目标是将此 img 文件缩小到 < 4GB。img 包含一个仅可容纳约 2.5GB 数据的 Linux 分区。

我需要能够将该 img 文件复制到小于 4GB 的 eMMC。因此,压缩图像进行存储并不是我想要的。我想要一个可以复制dd到 eMMC 的较小的图像。

当我将图像加载到 8GB SD 卡上(使用 dd)时,它看起来像这样:

root@udoo:/# fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 8026 MB, 8026849280 bytes
4 heads, 16 sectors/track, 244960 cylinders, total 15677440 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
Disk identifier: 0x00052161

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048       67583       32768    e  W95 FAT16 (LBA)
/dev/mmcblk0p2           67584     7849983     3891200   83  Linux

和 fdisk 输出

root@udoo:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       3.6G  2.5G  920M  74% /
devtmpfs        342M  4.0K  342M   1% /dev
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            101M  236K  101M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            502M   72K  502M   1% /run/shm
none            100M   20K  100M   1% /run/user
/dev/mmcblk0p1   32M  6.3M   26M  20% /boot

我可以使用 Linux 操作系统安装 SD 卡、缩小文件系统并重新创建分区,但如何将其导出到新的 img 文件中?据我所知,执行操作dd if=/dev/mmcblk0 of=/file.img将始终产生与 SD 卡大小相同的图像文件(在本例中为 8gb)。

做到这一点的最佳方法是什么?

有没有办法创建一个空白的 3.5GB img 文件并添加 2 个分区(/dev/mmcblk0p1 en /dev/mmcblk0p2)以达到我的目标?

相关内容