无法扩展img镜像文件中分区3的问题求助
无法扩展img镜像文件中分区3的问题求助
看起来你遇到的问题是parted没有识别到你用dd追加空间后磁盘镜像的新大小,导致指定的分区结束位置被判定为超出设备范围。咱们一步步来解决:
第一步:确认磁盘镜像的实际大小
先检查用dd追加空间后,disk.img的实际大小是否符合预期(原969MB + 4096MB = 约5065MB),执行命令:
ls -lh /tmp/disk.img
如果显示的大小不对,那可能是dd命令执行出了问题,需要重新运行一遍dd命令。
第二步:让parted重新识别磁盘大小
parted在打开磁盘镜像时会缓存初始的大小信息,即使你后续修改了文件大小,它也不会自动更新。所以需要重新让它扫描磁盘:
- 重新启动parted:
sudo parted /tmp/disk.img
- 在parted交互界面执行
rescan命令,让它重新读取磁盘的最新大小:
(parted) rescan
- 执行
print命令确认磁盘的新大小,比如应该显示类似Disk /tmp/disk.img: 5065MB的信息:
(parted) print
第三步:扩展分区3
现在parted已经识别到磁盘的新大小了,你可以重新执行扩展命令。如果想把分区3扩展到指定的1300MB位置,直接执行:
(parted) resizepart 3 1300MB
或者更省心的是直接把分区3扩展到磁盘最末尾,不用计算具体数值:
(parted) resizepart 3 100%
第四步:调整文件系统大小
注意!分区扩展完成后,只是分区的容量变大了,但里面的fat32文件系统还没适配新容量,需要用fatresize工具调整(如果没安装,Ubuntu上可以用sudo apt install fatresize安装):
- 先把磁盘镜像挂载为循环设备,让系统识别里面的分区:
sudo losetup -P /dev/loop0 /tmp/disk.img
(如果/dev/loop0被占用,可换成loop1、loop2等)
2. 调整fat32文件系统大小,和分区匹配:
如果是扩展到1300MB:
sudo fatresize -i /dev/loop0p3 -s 1300MB
如果是扩展到磁盘末尾:
sudo fatresize -i /dev/loop0p3 -s max
- 最后卸载循环设备:
sudo losetup -d /dev/loop0
这样操作后,分区3应该就能成功扩展了。
备注:内容来源于stack exchange,提问作者BTR Naidu




