PVE 系统 img 格式转换教程:qm importdisk 安装 OpenWrt

AI 摘要大番茄AI

PVE不能直接装img,需先解压.gz,把img上传到ISO目录,再用qm importdisk转换并挂载到指定虚拟机和存储。导入后要在硬件里添加未使用磁盘,并在引导顺序中置顶。注意编号和存储名别填错,否则会报找不到文件或存储不存在。完成即可启动软路由系统。

此内容由AI根据文章内容自动生成。

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

PVE 上传镜像后在 iso 目录看到的 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 虚拟机列表中查看虚拟机编号

四、虚拟机编号和存储怎么看

新手最容易在这两个参数上填错:

  • 虚拟机编号:PVE 左侧树形列表里每台机器前面那个数字,点一下机器在标题栏也能看到
  • 存储名称:左侧「数据中心 → 存储」里列出来的就是。系统默认的本地盘一般叫 local,如果你自己加了硬盘或改过名字,就是图上显示的那串

五、导入之后还要做的两件事

  1. 到虚拟机的「硬件」页面,会看到一块「未使用的磁盘」,点编辑把它加进去,总线建议选 SATA 或 VirtIO Block
  2. 到「选项 → 引导顺序」把这块新磁盘勾上并挪到第一位,否则虚拟机会因为找不到启动盘而卡在启动界面

做完这两步启动虚拟机,就能进到 OpenWrt / iStoreOS 的界面了。

常见问题

提示 no such file or directory:路径写错了,多半是文件名或大小写不对,回 iso 目录确认一下完整路径。

提示 storage does not exist:local_900G 这个存储名在你的机器上不存在,按上面第四节查真实名字。

导入后虚拟机起不来:九成是没调启动顺序,回到「选项 → 引导顺序」把磁盘勾上移到首位。

能不能反过来把虚拟机导出成 img:可以,用 qemu-img convert -f raw -O qcow2 这类命令做格式互转,属于进阶操作。

由大番茄(997wan.com)整理,实操中遇到新的报错欢迎留言,我会把解决方案补进来。

下一篇 OpenWrt 配置 SSL 证书并开启 HTTPS 访问(自签 + acme.sh)