PVE不能直接装img,需先解压.gz,把img上传到ISO目录,再用qm importdisk转换并挂载到指定虚拟机和存储。导入后要在硬件里添加未使用磁盘,并在引导顺序中置顶。注意编号和存储名别填错,否则会报找不到文件或存储不存在。完成即可启动软路由系统。
PVE 建虚拟机一般直接用 ISO 安装,但 OpenWrt、iStoreOS 这类软路由系统只提供 img 格式的镜像,PVE 不能直接装载 img,必须先转成虚拟磁盘导入进去。这篇文章只讲「格式转换」这一段的原理和命令,如果要看从零新建虚拟机到启动的完整图文流程,请走《PVE 新手教程:img 格式虚拟机安装全流程》。
一、先搞清楚要转的是什么
下载回来的软路由镜像通常是压缩包,名字类似这样:
istoreos-24.10.8-2026073111-x86-64-squashfs-combined-efi.img.gz
这里的 .gz 是 gzip 压缩后缀,必须先解压出真正的镜像:
istoreos-24.10.8-2026073111-x86-64-squashfs-combined-efi.img
解压后的 .img 才是一块完整的磁盘映像。注意:解压出来的 .img 依然不能直接挂给虚拟机,PVE 的磁盘是 qcow2 或 raw 格式,所以需要下一步的导入转换。
二、上传镜像到 PVE
把 .img 上传到 PVE 节点的 ISO 目录 /var/lib/vz/template/iso/,可以用网页后台上传(节点 → local → ISO 镜像 → 上传),也可以用 scp 直接传。
上传完成后,记下来这个文件的完整路径,后面命令要用:
/var/lib/vz/template/iso/kwrtDNS_.img

三、qm importdisk 转换命令
转换就一条命令:
qm importdisk 105 /var/lib/vz/template/iso/kwrtDNS_.img local_900G
三个参数挨个拆开说:
qm importdisk:既是格式转换命令,也是把磁盘挂载到虚拟机的命令105:目标虚拟机的编号。PVE 里第一台虚拟机是 100,往后 101、102 依次递增,编号在左侧虚拟机列表里能看到local_900G:存储卷名称,也就是这块磁盘放到哪个硬盘/分区上

四、虚拟机编号和存储怎么看
新手最容易在这两个参数上填错:
- 虚拟机编号:PVE 左侧树形列表里每台机器前面那个数字,点一下机器在标题栏也能看到
- 存储名称:左侧「数据中心 → 存储」里列出来的就是。系统默认的本地盘一般叫
local,如果你自己加了硬盘或改过名字,就是图上显示的那串
五、导入之后还要做的两件事
- 到虚拟机的「硬件」页面,会看到一块「未使用的磁盘」,点编辑把它加进去,总线建议选 SATA 或 VirtIO Block
- 到「选项 → 引导顺序」把这块新磁盘勾上并挪到第一位,否则虚拟机会因为找不到启动盘而卡在启动界面
做完这两步启动虚拟机,就能进到 OpenWrt / iStoreOS 的界面了。
常见问题
提示 no such file or directory:路径写错了,多半是文件名或大小写不对,回 iso 目录确认一下完整路径。
提示 storage does not exist:local_900G 这个存储名在你的机器上不存在,按上面第四节查真实名字。
导入后虚拟机起不来:九成是没调启动顺序,回到「选项 → 引导顺序」把磁盘勾上移到首位。
能不能反过来把虚拟机导出成 img:可以,用 qemu-img convert -f raw -O qcow2 这类命令做格式互转,属于进阶操作。
由大番茄(997wan.com)整理,实操中遇到新的报错欢迎留言,我会把解决方案补进来。
- 文章名称:PVE 系统 img 格式转换教程:qm importdisk 安装 OpenWrt
- 文章永久网址:https://www.997wan.com/pve-img-format-convert-tutorial/
- 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长 997笔记 进行删除处理。
- 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
- 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
- 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
- 如无特别声明本文即为原创文章仅代表个人观点,版权归《997笔记》所有,欢迎转载,转载请保留原文链接。