我已.img使用dd以下命令将 USB 驱动器复制到文件中:
dd if=/dev/sdc of=myimage.img
Run Code Online (Sandbox Code Playgroud)
我想减小图像中分区的大小。我尝试了几种方法,但最终总是得到一个环回安装的映像,其分区仍然是 USB 的完整大小。
myimage.img安装回环后如何修改为具有较小的分区?
在这样做之前,我是否需要将零复制到分区的空白部分?
我是否需要进行碎片整理,以便在减小图像大小时删除空字节?(从我读到的内容来看,Linux 扩展到整个分区,所以我不期望图像末尾的所有数据都是零字节。即使写入全零也只会消耗它们所在的空字节。)
注意:我不是想节省磁盘空间,所以压缩对我没有帮助。
背景
我在 USB 驱动器上安装了 Linux,使用ext4. 我打算为多个设备复制安装。我已经成功做到了,但想在同一个 USB 驱动器上创建一个包含系统的只读分区和一个允许持久存储的小分区。我没有破坏我的 USB,而是尝试修改 USB 的副本。我希望我们不要被这个背景分心。
简而言之,我做了以下工作:
# Create mount point in current directory
sudo mkdir mnt
# Loopback mount the image
fdisk -l myimage.img
sudo mount -o offset=<partion_block_start * block_size> myimage.img mnt
# Copy all zeros to remaining space of the image
cd mnt
sudo dd if=/dev/zero of=filler conv=fsync bs=1M
rm filler
cd …Run Code Online (Sandbox Code Playgroud)