Ubuntu命令行下縮小磁盤鏡像img文件尺寸


要解決的問題

一個固件包里的system.img, 尺寸是1GB, 里面的內容只有470MB, 在設備上寫入的時候報超出大小了, 所以想把這個img調整為512MB

網上查了很多, 沒有一個好用的, 最后還是通過gparted在圖形界面下完成的. 記錄一下過程

步驟

將img掛載到loop設備

sudo losetup -f
sudo losetup /dev/loop18 system.img.old 

用gparted對此loop設備進行修改, 注意一定要在命令行用/dev/loop18 作為參數, 否則直接啟動gparted是不顯示這個loop設備的

sudo gparted /dev/loop18

處理完成后, 取消loop設備掛載

sudo losetup -d /dev/loop18

.查看img里的分區情況, 進行裁剪, 這個536871424是根據這個算出來的: 原來的塊數是2097152, 需要保留的塊數是 2097152 / 2 + 1 = 1048577, 每塊大小512, 所以 1048577 * 512 = 536871424

fdisk -lu system.img.old 
truncate --size=536871424 system.img.old 

再掛載檢查是否正確

sudo losetup /dev/loop18 system.img.old 
sudo fdisk -lu /dev/loop18 
mount /dev/loop18 /mnt/mnt1/
sudo umount /mnt/mnt1
sudo losetup -d /dev/loop18

.

Gparted中操作涉及的命令行

從截圖可以看到, 這些是可以通過命令行實現的,

涉及的命令有:

# check file system
e2fsck -f -y -v -C 0 '/dev/loop18'

# shrink file system
resize2fs -p '/dev/loop18' 524288K

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM