在使用 OpenWrt 或 ImmortalWrt 的 x86 镜像时,默认镜像空间通常比较小(几百 MB),这在实际使用中很容易不够用,例如安装插件、日志、OpenClash 等。
这篇文章记录一套通用、稳定、安全的镜像扩容方案,适用于:
- Proxmox VE(PVE)
- KVM / ESXi
- 物理机写盘
- 虚拟机导入镜像
一、环境要求
扩容操作需要在 Linux 环境中执行,例如:
- OpenWrt
- Debian
- Ubuntu
二、依赖工具检查
在终端执行:
which gzip
which dd
which parted
如果返回类似:
/usr/bin/gzip
/usr/bin/dd
/usr/sbin/parted
说明工具已经安装。
三、扩容操作步骤
上传镜像
将镜像上传到任意目录,例如:openwrt-x86-64-generic-squashfs-combined-efi.img.gz
进入目录
cd /path/to/your/image
解压镜像
gzip -kd openwrt.img.gz
解压后得到:openwrt.img
删除压缩包(可选)
rm openwrt.img.gz
扩展镜像大小
例如增加 10GB:dd if=/dev/zero bs=1M count=10240 >> openwrt.img
说明:
• count=10240 = 10GB
• 可根据需求调整
修改分区表:parted openwrt.img
查看分区:print
通常会看到:
Number Start End Size
1 …
2 …
扩展第二分区:resizepart 2 100%
再次确认:print
如果第二分区已经占满整个镜像,说明成功。
退出:quit
四、EFI 扩容提示说明(重要)
在使用 EFI 镜像时,parted 可能会提示:
备份 GPT 表损坏
是否修复?
你会看到类似选项:
- OK
- Fix
- Ignore
✅ 正确选择
👉 第一次:选择 OK
👉 第二次:选择 Fix
📌 原因解释
当你执行:dd 扩展镜像
实际上:
- GPT 主表还在原位置
- GPT 备份表还停留在旧末尾
👉 选择 Fix 会:
- 自动把 GPT 备份表移动到新磁盘末尾
- 修复分区结构
✔ 这是正常行为
不会破坏系统,也不会影响启动。
五、完整操作流程(汇总)
cd /path/to/image
gzip -kd openwrt.img.gz
rm openwrt.img.gz
dd if=/dev/zero bs=1M count=10240 >> openwrt.img
parted openwrt.img
print
resizepart 2 100%
print
quit
六、扩容完成后的状态
扩容完成后:
- ✔ 镜像文件已变大
- ✔ 分区已扩展
- ✔ 可直接用于:
- Proxmox 导入
- 虚拟机使用
- dd 写入硬盘
- ESXi / KVM
七、实战建议(经验总结)
🔹 建议扩容大小
| 使用场景 | 推荐大小 |
|---|---|
| 轻量使用 | 2GB |
| 常规插件 | 8GB |
| OpenClash + 插件 | 16GB+ |
🔹 常见坑
❌ 没有执行 resizepart
❌ GPT 没修复(没选 Fix)
❌ dd 扩容太小
🔹 额外说明
这个扩容只是:
👉 扩展磁盘 + 分区
如果在 OpenWrt 内还需要完全利用空间,通常还需要:
resize2fs
八、总结
这套方法的核心逻辑其实很简单:
先扩容镜像文件 → 再扩展分区 → 修复 GPT → 完成