如何缩小使用 dd 生成的文件映像?

如何缩小使用 dd 生成的文件映像?

我尝试了这篇文章中的过程调整图像文件上的分区大小。我没有成功地理解为什么在我的例子中会出错。

我使用 生成了 8GB 图像dd。该映像包含两个分区。

我用 映射图像losetup -P /dev/loop0 $image-file

然后:

resize2fs /dev/loop0p2 4000M
resize2fs 1.44.1 (24-Mar-2018)
Resizing the filesystem on /dev/loop0p2 to 1536000 (4k) blocks.
The filesystem on /dev/loop0p2 is now 1536000 (4k) blocks long.

e2fsck -f /dev/loop0p2 ->>> clean

parted /dev/loop0
(parted) resizepart 2 4000MB` ; print gives 4GB partition
(parted) quit

partprobe -s /dev/loop0

lsblk /dev/loop0
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0       7:0    0   7,5G  0 loop 
├─loop0p1 259:2    0   256M  0 loop 
└─loop0p2 259:3    0   3,5G  0 loop 

root@O3:/home/m/tmp# e2fsck -f /dev/loop0p2
e2fsck 1.44.1 (24-Mar-2018)
The filesystem size (according to the superblock) is 1903360 blocks
The physical size of the device is 1154143 blocks
**Either the superblock or the partition table is likely to be corrupt**!
Abort? yes

使用parted调整分区大小会造成不一致,因为在resize2fs清理之后e2fsck

有什么想法可以探索如何缩小图像文件吗?

答案1

谢谢@sudodus 和@fra-san。

resize2fs我认为组合和parted缩小文件系统/分区时存在兼容性问题。 resize2fs 使用 4k 块,parted 使用字节或 MB、GB 等。

我最终找到了另一种缩小第二个分区的方法:gnome-disks。它随 Linux Mint 一起提供并且运行良好。 parted 和 gparted 未能缩小第二个分区,而 gnome-disks 在一次操作中成功调整了 fs 和分区的大小。

fs/分区收缩后,loop0p2 中存在尾随空白空间。我想缩小图像文件。所以我做了:

root@O3:/home/m# fdisk -l /dev/loop0
Disk /dev/loop0: 7,5 GiB, 8068792320 bytes, 15759360 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
Disklabel type: dos
Disk identifier: 0x8889db7f

Device       Boot  Start     End Sectors  Size Id Type
/dev/loop0p1        8192  532479  524288  256M  c W95 FAT32 (LBA)
/dev/loop0p2      532480 8355839 7823360  3,7G 83 Linux

截断大小? (8192 + 524288 + 7823360) * 512 = 4278190080 B

truncate --size=4278190080 image-file.img

再次将生成的映像文件映射到 Loop0 后,不再出现 fs/分区错误。

相关内容