Linux
如何縮小由 dd 生成的文件圖像?
我嘗試了這個 post resize partition on an image file的過程。我沒有成功理解為什麼在我的情況下會出錯。
我使用
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
乾淨的。有什麼想法可以探索以縮小圖像文件?
謝謝@sudodus 和@fra-san。
resize2fs
我認為在組合和parted
縮小 fs/分區時存在兼容性問題。resize2fs 使用 4k 塊,parted 時使用 Byte 或 MB、GB 等。我最終找到了另一種縮小第二個分區的方法:
gnome-disks
. 它隨 Linux Mint 一起提供並且執行良好。在 parted 和 gparted 未能縮小第二個分區的情況下,gnome-disks 在一次操作中成功地調整了 fs 和分區的大小。在 fs/partition 收縮後,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/分區錯誤。