【避坑指南】PVE 虚拟机快速安装 OpenWrt 25 的正确姿势(拒绝卡 UEFI 报错)
【避坑指南】PVE 虚拟机快速安装 OpenWrt 25 的正确姿势(拒绝卡 UEFI 报错)
在 Proxmox VE (PVE) 中折腾软路由,很多人习惯了用传统的网络教程去导入镜像、配置 UEFI 引导。但在最新的 OpenWrt 25.x 版本中,由于其固件分区和 PVE 的 UEFI (OVMF) 固件偶尔存在兼容性冲突,不少小伙伴在开机时都会一头撞上这个经典报错:
1 | |
今天分享一个最干净、最快速的直接注入安装法,并教你如何搞定 UEFI 引导报错!
🛠️ 核心思路:为什么要”直接注入”?
传统的安装方法是使用 qm importdisk 导入镜像,再去网页端挂载、删除旧盘,步骤繁琐。
其实,只要你的虚拟机已经创建好了虚拟磁盘,我们完全可以直接使用 dd 或 qemu-img 命令,将解压后的固件直接写入现有的虚拟磁盘块中。这种方法速度极快,且不容易产生”未使用磁盘”的残留碎屑。
🚀 极简安装步骤
1. 准备工作:解压固件
首先,通过 SSH 连接到你的 PVE 后台。找到你下载好的 .img.gz 固件。因为它是压缩格式,我们需要先用 gunzip 命令将它解压:
1 | |
解压后,你会得到一个标准的 .img 镜像文件。
2. 关键一步:直接注入现有磁盘
假设你的 OpenWrt 虚拟机 ID 是 105,且你在创建虚拟机时,已经在 local-lvm 存储上默认建立了一个主磁盘(假设是 scsi0,在底层对应的设备名通常为 vm-105-disk-1)。
在 PVE 命令行中,直接执行以下命令,将镜像”怼”进这个磁盘:
1 | |
💡 小提示:如果不确定自己的磁盘名字,可以在 PVE 网页端查看虚拟机
105的 硬件 列表,确认scsi0后面写的是不是local-lvm:vm-105-disk-1。
🚨 避坑:遇到 Failed to load Boot 怎么办?
很多同学 dd 注入完成后开机,结果一头撞上这个报错:
1 | |
或者直接弹进 Shell> 界面。不要慌,这通常不是固件的问题,而是 PVE 虚拟机的硬件配置和固件分区没对上。
为什么会这样?
UEFI 固件通过 EFI 系统分区(ESP) 来查找引导文件(bootx64.efi)。如果 PVE 虚拟机创建时没有添加 EFI 磁盘,或者 EFI 磁盘没有正确关联到系统盘的 ESP 分区,开机时 UEFI 固件就找不到可引导的操作系统,直接报错。
UEFI 是新硬件的标配,支持安全启动、更快的引导速度、GPT 分区表等现代特性。在软路由场景下,使用 UEFI 引导同样是推荐方案,关键是把配置做对。
检查清单
遇到上述报错时,按以下顺序排查:
① 确认固件类型
你下载的 OpenWrt 固件是否包含 UEFI 支持?务必使用 combined-efi 版本的固件(文件名带 efi 字样),例如:
1 | |
如果你用的是不带 efi 的固件(如 generic-ext4-combined),它只支持传统 BIOS 引导,在 OVMF 下必然启动失败。
② 确认 BIOS 类型正确
在 PVE 网页端 → 虚拟机 → 硬件 (Hardware),检查 BIOS 项是否为 OVMF (UEFI)。如果创建虚拟机时选错了,关机后双击 BIOS 修改即可。
③ 最关键的一步:正确添加 EFI 磁盘
PVE 的 UEFI 虚拟机需要一个专门的 EFI 磁盘来存储引导变量。如果创建虚拟机时没有自动添加,你需要手动添加:
- 关机虚拟机。
- 硬件 (Hardware) → 添加 (Add) → EFI 磁盘 (EFI Disk)。
- 存储选择默认(通常与系统盘相同即可)。
- 注意不要勾选”预注册密钥 (Pre-Enroll Keys)”,OpenWrt 不需要安全启动。
④ 检查引导顺序
前往 选项 (Options) → 引导顺序 (Boot Order),确保:
- 系统盘(
scsi0或virtio0)已勾选,并拖到最顶部。 - EFI 磁盘(
efidisk0)不需要放在第一位,但需要存在。
⑤ 如果依然失败:UEFI Shell 手动引导
极少数情况,开机后仍进入 Shell> 界面。这时可以手动引导一次,系统启动后会自动修复引导项:
在 Shell 提示符下输入:
1 | |
系统正常启动后,后续开机就不会再卡 Shell 了。
🎉 开机与首次配置
重新点击 启动 虚拟机,你会发现系统顺利进入 OpenWrt 跑码画面!
首次配置网络:
OpenWrt 25 默认的 LAN 口 IP 通常是 192.168.1.1。为了防止和家里主路由冲突,在控制台跑码结束后按回车,输入以下命令修改 IP:
1 | |
- 按
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 | |
现在,你就可以在浏览器里输入刚刚设置的 IP,正式开启你的 OpenWrt 25 冲浪之旅了!
📝 总结
虚拟化折腾软路由,dd 直接注入法比传统 qm importdisk 更简洁高效。遇到 UEFI 引导报错不要慌,检查三个关键点:① 固件类型选 combined-efi、② 正确添加 EFI 磁盘、③ 引导顺序把系统盘放第一位。按这个思路排查,能帮你省下 90% 的排错时间!如果这篇教程帮到了你,欢迎点赞收藏!