【避坑指南】PVE 虚拟机快速安装 OpenWrt 25 的正确姿势(拒绝卡 UEFI 报错)

【避坑指南】PVE 虚拟机快速安装 OpenWrt 25 的正确姿势(拒绝卡 UEFI 报错)

在 Proxmox VE (PVE) 中折腾软路由,很多人习惯了用传统的网络教程去导入镜像、配置 UEFI 引导。但在最新的 OpenWrt 25.x 版本中,由于其固件分区和 PVE 的 UEFI (OVMF) 固件偶尔存在兼容性冲突,不少小伙伴在开机时都会一头撞上这个经典报错:

1
Failed to load Boot "UEFI QEMU HARDDISK..."

今天分享一个最干净、最快速的直接注入安装法,并教你如何搞定 UEFI 引导报错!

🛠️ 核心思路:为什么要”直接注入”?

传统的安装方法是使用 qm importdisk 导入镜像,再去网页端挂载、删除旧盘,步骤繁琐。

其实,只要你的虚拟机已经创建好了虚拟磁盘,我们完全可以直接使用 ddqemu-img 命令,将解压后的固件直接写入现有的虚拟磁盘块中。这种方法速度极快,且不容易产生”未使用磁盘”的残留碎屑。

🚀 极简安装步骤

1. 准备工作:解压固件

首先,通过 SSH 连接到你的 PVE 后台。找到你下载好的 .img.gz 固件。因为它是压缩格式,我们需要先用 gunzip 命令将它解压:

1
gunzip openwrt-25.12.5-x86-64-generic-ext4-combined-efi.img.gz

解压后,你会得到一个标准的 .img 镜像文件。

2. 关键一步:直接注入现有磁盘

假设你的 OpenWrt 虚拟机 ID 是 105,且你在创建虚拟机时,已经在 local-lvm 存储上默认建立了一个主磁盘(假设是 scsi0,在底层对应的设备名通常为 vm-105-disk-1)。

在 PVE 命令行中,直接执行以下命令,将镜像”怼”进这个磁盘:

1
dd if=openwrt-25.12.5-x86-64-generic-ext4-combined-efi.img of=/dev/pve/vm-105-disk-1 bs=4M status=progress && sync

💡 小提示:如果不确定自己的磁盘名字,可以在 PVE 网页端查看虚拟机 105硬件 列表,确认 scsi0 后面写的是不是 local-lvm:vm-105-disk-1

🚨 避坑:遇到 Failed to load Boot 怎么办?

很多同学 dd 注入完成后开机,结果一头撞上这个报错:

1
Failed to load Boot "UEFI QEMU HARDDISK..."

或者直接弹进 Shell> 界面。不要慌,这通常不是固件的问题,而是 PVE 虚拟机的硬件配置和固件分区没对上

为什么会这样?

UEFI 固件通过 EFI 系统分区(ESP) 来查找引导文件(bootx64.efi)。如果 PVE 虚拟机创建时没有添加 EFI 磁盘,或者 EFI 磁盘没有正确关联到系统盘的 ESP 分区,开机时 UEFI 固件就找不到可引导的操作系统,直接报错。

UEFI 是新硬件的标配,支持安全启动、更快的引导速度、GPT 分区表等现代特性。在软路由场景下,使用 UEFI 引导同样是推荐方案,关键是把配置做对。

检查清单

遇到上述报错时,按以下顺序排查:

① 确认固件类型

你下载的 OpenWrt 固件是否包含 UEFI 支持?务必使用 combined-efi 版本的固件(文件名带 efi 字样),例如:

1
openwrt-25.12.5-x86-64-generic-ext4-combined-efi.img.gz

如果你用的是不带 efi 的固件(如 generic-ext4-combined),它只支持传统 BIOS 引导,在 OVMF 下必然启动失败。

② 确认 BIOS 类型正确

在 PVE 网页端 → 虚拟机 → 硬件 (Hardware),检查 BIOS 项是否为 OVMF (UEFI)。如果创建虚拟机时选错了,关机后双击 BIOS 修改即可。

③ 最关键的一步:正确添加 EFI 磁盘

PVE 的 UEFI 虚拟机需要一个专门的 EFI 磁盘来存储引导变量。如果创建虚拟机时没有自动添加,你需要手动添加:

  1. 关机虚拟机。
  2. 硬件 (Hardware) → 添加 (Add) → EFI 磁盘 (EFI Disk)
  3. 存储选择默认(通常与系统盘相同即可)。
  4. 注意不要勾选”预注册密钥 (Pre-Enroll Keys)”,OpenWrt 不需要安全启动。
④ 检查引导顺序

前往 选项 (Options) → 引导顺序 (Boot Order),确保:

  • 系统盘(scsi0virtio0)已勾选,并拖到最顶部。
  • EFI 磁盘(efidisk0)不需要放在第一位,但需要存在。
⑤ 如果依然失败:UEFI Shell 手动引导

极少数情况,开机后仍进入 Shell> 界面。这时可以手动引导一次,系统启动后会自动修复引导项:

在 Shell 提示符下输入:

1
2
3
Shell> fs0:
fs0:\> cd efi\boot
fs0:\efi\boot\> bootx64.efi

系统正常启动后,后续开机就不会再卡 Shell 了。

🎉 开机与首次配置

重新点击 启动 虚拟机,你会发现系统顺利进入 OpenWrt 跑码画面!

首次配置网络:

OpenWrt 25 默认的 LAN 口 IP 通常是 192.168.1.1。为了防止和家里主路由冲突,在控制台跑码结束后按回车,输入以下命令修改 IP:

1
vi /etc/config/network
  • i 进入编辑模式。
  • 找到 config interface 'lan',把 option ipaddr '192.168.1.1' 改为你需要的 IP(例如 192.168.31.2)。
  • Esc,输入 :wq 保存退出。
  • 输入 /etc/init.d/network restart 重启网络服务。

重置网络并添加 WAN 口:

如果你需要彻底重置网络配置,或者给软路由添加一个 DHCP 协议的 WAN 口(绑定到 eth1),可以直接用 uci 命令批量完成,干净利落:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 添加具有 DHCP 协议的 WAN 接口,并绑定到 eth1
uci set network.wan=interface
uci set network.wan.device='eth1'
uci set network.wan.proto='dhcp'

# 2. 添加 IPv6 的 wan6 接口
uci set network.wan6=interface
uci set network.wan6.device='eth1'
uci set network.wan6.proto='dhcpv6'

# 3. 提交并保存配置
uci commit network

# 4. 清理可能存在的缓存并重启网络服务
rm -rf /tmp/luci-indexcache /tmp/luci-modulecache/
/etc/init.d/network restart

现在,你就可以在浏览器里输入刚刚设置的 IP,正式开启你的 OpenWrt 25 冲浪之旅了!

📝 总结

虚拟化折腾软路由,dd 直接注入法比传统 qm importdisk 更简洁高效。遇到 UEFI 引导报错不要慌,检查三个关键点:① 固件类型选 combined-efi② 正确添加 EFI 磁盘③ 引导顺序把系统盘放第一位。按这个思路排查,能帮你省下 90% 的排错时间!如果这篇教程帮到了你,欢迎点赞收藏!


【避坑指南】PVE 虚拟机快速安装 OpenWrt 25 的正确姿势(拒绝卡 UEFI 报错)
https://blog.952405.xyz/2026/04/pve-openwrt-25-install-avoid-uefi-error/
作者
iDing
发布于
2026年4月8日
许可协议
转发请注明出处