我有一个来自可启动闪存驱动器的磁盘映像。EFI启动是GPT,所以有一个小的Vfat32分区和另外三个Linux分区,后面还有大约3G的空闲空间。
我需要将磁盘映像复制到稍小的闪存驱动器,因此我需要或多或少地从 15G 缩小到 14G。我将在 linux 上使用 dd 来制作副本。
gparted 非常适合修改和调整分区大小,但最终无法缩小可用空间。理论上应该可以截断文件,但是当我尝试时它会炸毁(?磁盘表?猜测)所以没有分区并且文件被破坏了。如果我使用旋转磁盘和/或 MBR 磁盘,我很确定下面的技术会起作用,但我还没有测试过。
尝试:
dd bs=1M count=14000 iflag=fullblock if=/dev/sda of=myfile.raw
Run Code Online (Sandbox Code Playgroud)
没有缩小
rsync --sparse filename filename
Run Code Online (Sandbox Code Playgroud)
这并没有炸毁磁盘表,而是缩小了交换空间并保留了未分配的区域。
qemu-img convert -f raw -O qcow2 -S 4k filename filename
(计划转换回原始)
炸毁桌子
truncate size=140000M <filename>
Run Code Online (Sandbox Code Playgroud)
还炸了桌子
cp --sparse=always filename filename
Run Code Online (Sandbox Code Playgroud)
没用