服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-15 更新于 2026-10-15 简米科技 3,817 字 9 分钟阅读

KVM虚拟机EFI启动失败怎么办?,EFI启动失败如何解决?

导读KVM虚拟机EFI启动失败,核心排查顺序是:先确认固件是否正确使用OVMF,再检查NVRAM变量和ESP分区,最后用UEFI Shell或系统安装盘重建启动项,多数情况下,重建NVRAM或修复EFI系统分区即可恢复,KVM虚拟机EFI启动失败怎么办?先做基础确认EFI启动失败不是单一故障,它可能出在固件、变量文……

KVM虚拟机EFI启动失败,核心排查顺序是:先确认固件是否正确使用OVMF,再检查NVRAM变量和ESP分区,最后用UEFI Shell或系统安装盘重建启动项,多数情况下,重建NVRAM或修复EFI系统分区即可恢复。

KVM虚拟机EFI启动失败怎么办?先做基础确认

EFI启动失败不是单一故障,它可能出在固件、变量文件、磁盘分区、启动项或驱动签名,先把故障层级分清楚,后面操作才不白费。

确认固件类型:BIOS还是UEFI

在宿主机执行:

virsh dumpxml 虚拟机名称 | grep -i -E 'loader|nvram|firmware'

如果输出为空,或只看到<type>hvm</type>,那这台虚拟机很可能仍走SeaBIOS,EFI启动需要类似下面的配置:

<os firmware='efi'>
  <type arch='x86_64' machine='q35'>hvm</type>
  <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
  <nvram>/var/lib/libvirt/qemu/nvram/虚拟机名称_VARS.fd</nvram>
</os>

行业共识认为,现代KVM环境优先使用q35加OVMF,老i440fx更适合传统BIOS场景,混用容易让启动项识别异常。

确认OVMF与NVRAM文件

先看固件包是否安装:

rpm -qa | grep -i ovmf
# 或
dpkg -l | grep -i ovmf

再检查文件路径:

ls -l /usr/share/OVMF/
ls -l /var/lib/libvirt/qemu/nvram/

常见文件名包括:

  • OVMF_CODE.fd
  • OVMF_VARS.fd
  • OVMF_CODE.secboot.fd
  • OVMF_VARS.secboot.fd

如果OVMF_CODE.fd缺失,安装edk2-ovmf或ovmf包即可,如果NVRAM文件损坏或大小异常,可以备份后删除,让libvirt重新生成:

KVM虚拟机EFI启动失败怎么办?,EFI启动失败如何解决?

virsh destroy 虚拟机名称 mv /var/lib/libvirt/qemu/nvram/虚拟机名称_VARS.fd /root/虚拟机名称_VARS.fd.bak virsh start 虚拟机名称

这一步对“KVM UEFI启动找不到启动项”特别有效,因为UEFI启动项存在NVRAM里,文件损坏后固件就找不到系统盘。

确认磁盘分区与启动项

进入宿主机,检查磁盘镜像分区:

parted -l /var/lib/libvirt/images/虚拟机名称.qcow2
# 或
gdisk -l /var/lib/libvirt/images/虚拟机名称.qcow2

UEFI启动要求:

  • 分区表为GPT;
  • 存在EFI System Partition,类型通常是EF00;
  • ESP分区格式为FAT32;
  • ESP内存在EFI/BOOT/BOOTX64.EFI或发行版引导文件。

如果磁盘还是MBR,UEFI固件无法直接启动,要么把虚拟机固件切回BIOS,要么备份数据后转换GPT并重建引导。

KVM UEFI启动找不到启动项怎么解决?分场景实操

Linux虚拟机:用UEFI Shell和GRUB修复

启动虚拟机,在OVMF画面按ESC进入UEFI Shell,执行:

map -r
fs0:
ls
bcfg boot dump

找到ESP分区后,添加启动项:

bcfg boot add 0 fs0:EFIBOOTBOOTX64.EFI "Linux"
reset

如果ESP里没有引导文件,用ISO挂载到虚拟光驱,进入Live环境:

mount /dev/vda2 /mnt
mount /dev/vda1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do mount --bind $i /mnt$i; done
chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=linux
update-grub

完成后退出、卸载、重启,多数Linux发行版会重新生成EFI/BOOT/BOOTX64.EFI。

Windows虚拟机:bcdboot重建引导

用Windows安装ISO启动,进入修复模式,打开命令提示符:

diskpart
list disk
select disk 0
list partition
select partition 1
assign letter=S
exit
bcdboot C:Windows /s S: /f UEFI

KVM虚拟机EFI启动失败怎么办?,EFI启动失败如何解决?

如果系统盘不是C:,先确认Windows目录所在盘符,执行成功后重启,Windows Boot Manager会重新写入NVRAM。

云服务器KVM EFI启动失败修复方法

云服务器通常不让你直接改宿主机XML,能做的操作包括:

  • 通过VNC控制台查看是否进入UEFI Shell;
  • 挂载系统ISO进入救援模式;
  • 检查云盘是否被平台转换为MBR;
  • 提交工单确认平台是否支持自定义OVMF;
  • 尝试切换为平台提供的UEFI模板或BIOS启动。

部分云平台会锁定NVRAM,迁移后启动项丢失只能重建引导,若平台禁用自定义固件,修复空间有限。

KVM虚拟机BIOS和UEFI启动区别在哪?迁移与选型

对比项 BIOS+MBR UEFI+GPT
引导存储 磁盘MBR引导代码 ESP分区+NVRAM启动项
分区表 MBR GPT
KVM固件 SeaBIOS OVMF/edk2
启动项位置 磁盘顺序 NVRAM变量
常见故障 引导扇区损坏 NVRAM丢失、ESP损坏
大磁盘支持 有限 更好

迁移后为什么EFI启动失败

NVRAM文件里保存了启动项路径和变量,虚拟机从A宿主机迁到B宿主机后,如果NVRAM没带过去,或路径变化,UEFI就找不到系统盘,处理方式:

  • 迁移前备份XML和_VARS.fd;
  • 迁移后把VARS文件放到目标路径;
  • 不确定时删除VARS,让libvirt重建;
  • 再进入UEFI Shell手动添加启动项。

Secure Boot与驱动签名

如果启用了安全启动,必须使用OVMF_CODE.secboot.fd和OVMF_VARS.secboot.fd

KVM虚拟机EFI启动失败怎么办?,EFI启动失败如何解决?

,未签名驱动、旧版GRUB、第三方内核模块都可能被阻止,排查时可临时关闭Secure Boot,确认能否启动,能启动后再处理签名或换用已签名引导文件。

北京KVM虚拟机EFI启动失败排查与修复价格

北京IDC机房场景

北京地区不少IDC机房使用KVM做私有云底层,EFI启动失败常见于宿主机升级、存储迁移、模板克隆之后,远程处理通常先看VNC,再让机房人员挂ISO或确认网络,若涉及本地磁盘阵列、加密盘、LVM异常,就需要现场支持。

修复价格受哪些因素影响

KVM虚拟机EFI启动失败修复价格没有统一标准,通常受这些因素影响:

  • 故障类型:单纯重建NVRAM费用低,涉及数据恢复费用高;
  • 处理方式:远程处理低于北京本地上门;
  • 系统类型:Linux引导修复相对直接,Windows加BitLocker更复杂;
  • 磁盘状态:qcow2损坏、LVM丢失、RAID降级会抬高成本;
  • 时间要求:紧急恢复通常比普通工单贵。

业内专家指出,EFI启动问题里真正需要重装系统的比例并不高,先备份磁盘和XML,再动手修复,能减少二次损坏。

KVM虚拟机EFI启动失败怎么办?常见Q&A

Q1:KVM虚拟机EFI启动失败后,数据会丢吗?

通常不会,只要磁盘镜像和分区表未损坏,数据仍在,操作前备份XML、NVRAM和qcow2文件,避免误删或覆盖。

Q2:KVM UEFI启动找不到启动项,必须重装系统吗?

不必,多数情况可用UEFI Shell添加BOOTX64.EFI,Linux用grub-install,Windows用bcdboot,只有ESP和系统分区都损坏时,才考虑重建系统。

Q3:云服务器KVM EFI启动失败修复方法有哪些限制?

云平台常不允许直接编辑libvirt XML,需要挂载ISO进救援模式,或提交工单处理,若平台禁用自定义OVMF,只能使用平台UEFI模板,或把虚拟机切换为BIOS启动。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱