遇到问题别慌,先说结论
虚拟机分区EFI系统盘没显示,并不是硬盘坏了,而是虚拟机的UEFI固件或启动模式没认到ESP分区,或者引导文件丢失,最直接的解决方法是:在虚拟机里改用传统BIOS启动模式,或者手动给EFI分区分配盘符/重建引导文件,二选一基本就能解决。接下来按照三个层面来定位问题,分别是启动模式、分区识别和引导文件修复。
虚拟机EFI系统盘不显示的三种典型场景
在排查之前,先对号入座,看看你遇到的是哪一种情况。
安装Windows时提示“无法安装到这个磁盘”
<通过引导U盘或ISO镜像安装Windows,走到选择分区那一步时,发现磁盘显示为“未分配空间”,或者提示“Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表,在EFI系统上,Windows只能安装到GPT磁盘”。这种情况下,不是盘丢了,而是虚拟机设置为UEFI模式,而虚拟磁盘初始化为MBR分区表,UEFI固件只认GPT,所以整个盘被视为不可用。
启动虚拟机后黑屏或直接进入EFI Shell
虚拟机开机后不进系统,直接卡在类似Shell>的界面,或者黑屏上只有一行Boot Device Not Found,这说明UEFI固件找不到可启动的EFI分区,ESP分区里没有引导文件,或者ESP分区的类型标识不对,固件直接忽略了它。
进入PE系统后看不到EFI分区
使用PE维护盘进入虚拟机,打开“我的电脑”发现只有C盘和D盘,看不到那个约100MB到300MB的EFI分区,这其实属于正常现象,因为Windows PE默认不会给ESP分区分配盘符,需要手动挂载,很多人误以为分区丢了,实际上是它处于“隐藏”状态。
核心排查流程:按顺序操作
第一步:检查虚拟机固件类型
多数虚拟机软件(VMware Workstation、VirtualBox、Hyper-V)都允许在虚拟机设置里切换固件模式。
- 打开虚拟机设置。
- 找到“选项”或“系统”选项卡。
- 查看固件类型是UEFI还是BIOS。
行业共识是:如果虚拟机创建时选的是UEFI,但虚拟磁盘用的是MBR分区表,就会互相排斥,解决方案有两个方向:
- 把固件改成BIOS(传统模式),MBR盘就能正常启动。
- 保留UEFI模式,把磁盘转换成GPT,并重建EFI引导。
第二步:进入PE系统,手动挂载EFI分区
如果确认固件类型没问题,接下来需要进入PE环境,亲自查看那块“消失”的EFI分区。
打开磁盘管理(右键“此电脑”选择“管理”),或者使用DiskGenius这类分区工具,如果能看到一个没有盘符的FAT16或FAT32分区,大小通常为100MB到500MB,那就是ESP分区。
在DiskGenius中,选中这个分区,右键选择“指派新的驱动器号”,操作完成后,EFI分区就会像普通盘符一样出现在资源管理器里,打开它,检查里面是否有一个名为EFI的文件夹,文件夹下还应该有Boot和Microsoft子目录。
如果发现EFI文件夹为空,或者根本没有这个文件夹,引导文件就是缺失的,需要重建。
第三步:用命令行修复引导文件
<在PE系统里按Win+R输入cmd打开命令提示符,按顺序执行以下操作:
- 输入
diskpart回车。 - 输入
list disk,确认虚拟磁盘编号。 - 输入
select disk 0(根据实际情况换成对应编号)。 - 输入
list partition,找到那个类型为“系统”或“EFI”的小分区。 - 输入
select partition 1(对应EFI分区编号)。 - 输入
assign letter=S,给EFI分区分配S盘符。 - 输入
exit退出diskpart。
接下来修复引导文件,如果运行的是Windows 10/11 64位系统,输入:
bcdboot C:Windows /s S: /f UEFI
这里假设系统安装在C盘,S是刚才挂载的EFI分区,执行完毕后,重启虚拟机,引导问题多半能得到解决。
第四步:如果PE里根本看不到EFI分区
有一种情况是,磁盘管理里只有一块“未分配”的完整空间,或者只有一个大分区,根本没有EFI分区,这种情况常见于克隆虚拟机磁盘、恢复备份镜像时,原EFI分区没有一起恢复,或者分区表损坏。
此时需要手动创建EFI分区。
- 在PE中打开
diskpart。 - 输入
list disk,确认目标磁盘。 - 输入
select disk 0。 - 输入
clean,清空磁盘(注意:这会删除所有数据,操作前务必确认虚拟机中无重要数据,或者已做快照)。 - 输入
convert gpt,把磁盘转换为GPT分区表。 - 输入
create partition efi size=300,创建一个300MB的EFI分区。 - 输入
format quick fs=fat32 label="System",将其格式化为FAT32。 - 输入
create partition msr size=16,创建一个16MB的微软保留分区。 - 输入
create partition primary,把剩余空间创建为主分区。 - 输入
exit,然后重新安装系统即可。
各虚拟机平台的差异化处理方案
不同虚拟机软件在处理EFI分区问题上表现略有差异,以下方案针对性更强。
VMware Workstation 中常见问题
VMware的UEFI固件有个特性:如果虚拟磁盘控制器驱动未正确加载,或者磁盘启用了“独立”模式,UEFI固件可能扫不到引导项,建议操作路径:
- 打开虚拟机设置,选择“硬件”选项卡,确认磁盘类型为SCSI(LSI Logic)或NVMe,不要使用IDE接口(较旧系统除外)。
- 进入“选项” > “高级”,确认固件类型为UEfi。
- 如果是克隆虚拟机,检查.vmx文件中是否含有
efi.legacyBoot = "TRUE",如有,删除该行后重启虚拟机。
VirtualBox 中常见问题
VirtualBox的UEFI支持相对精简,部分版本对ESP分区的识别存在兼容性问题,业内专家指出,VirtualBox下使用UEFI引导时,建议先在存储设置里挂载VBoxEFI.fd文件,再安装系统。
处理建议:
- 在虚拟机设置中选择“系统” > “主板”,勾选“启用EFI”。
- 不要直接使用现成的物理硬盘EFI分区镜像,优先用安装镜像引导进入PE修复。
- 如果修复后依然黑屏,尝试到“存储”设置里,给控制器添加一个
EFI文件作为光驱内容。
Hyper-V 中常见问题
Hyper-V的第二代虚拟机默认使用UEFI固件,但是它的固件设置里有一个“安全启动”选项,默认仅允许Windows 8及以上的引导程序,如果安装的是Linux或其他系统,需要进入固件设置,关闭安全启动。
Hyper-V里挂载PE.iso时,注意不要把ISO文件添加到IDE控制器之外的其他通道,否则启动选择里找不到。
下面用一张表格对比三种主流虚拟机的处理要点:
| 虚拟机平台 | 主要排查点 | 常见问题操作路径 | 成功率较高的修复方法 |
|---|---|---|---|
| VMware | 磁盘控制器类型 | 设置 > 硬件 > 磁盘类型 | 改SCSI/NVMe,删除efi.legacyBoot |
| VirtualBox | EFI固件兼容性 | 系统 > 主板 > 启用EFI | 新增EFI文件,重装引导 |
| Hyper-V | 安全启动开关 | 固件 > 安全启动 | 关闭安全启动,调整控制器 |
针对不同操作系统的引导修复细节
修复Windows 10或Windows 11的UEFI引导
使用系统安装U盘引导虚拟机,在安装界面按Shift+F10调出命令提示符,依次执行:
diskpart
list disk
select disk 0
list volume
找到EFI分区的卷号,比如卷2,输入select volume 2,然后assign letter=K,退出diskpart,接着输入:
bcdboot C:windows /s K: /f all
bcdedit /set {bootmgr} device partition=K:
bcdedit /set {memdiag} device partition=K:
重启虚拟机即可。
修复Ubuntu或Debian的UEFI引导
在Ubuntu Live环境下,挂载根分区和EFI分区:
sudo mount /dev/sda1 /mnt
sudo mount /dev/sda2 /mnt/boot/efi
sudo grub-install --target=x86_64-efi /dev/sda
sudo update-grub
注意,/dev/sda1是EFI分区,/dev/sda2是根分区,不确定分区编号时,使用lsblk命令查看。
防止EFI系统盘再次消失的注意事项
从实操经验看,EFI分区不显示或丢失,多数源于以下三个习惯:
- 频繁在BIOS和UEFI模式之间切换启动方式,虚拟机的NVRAM残留了无效引导项。
- 使用Ghost或第三方备份工具恢复系统时,只恢复了主分区,没有恢复EFI分区。
- 在Windows磁盘管理里手动删除过所谓的“恢复分区”,其实删除的就是ESP分区。
建议养成两个习惯:
- 虚拟机创建时,第一遍安装系统就确定好固件类型,不要中途改。
- 定期为虚拟机做快照,而不是只靠备份系统盘C盘。
常见疑问解答
虚拟机里EFI系统分区能不能格式化?
只有当EFI分区中已有可用的引导文件时才能格式化。格式化会清空引导文件,导致虚拟机无法启动,如果在格式化之后无法开机,需要使用PE或安装光盘重建引导,可以在PE中执行bcdboot C:Windows /s S: /f UEFI进行修复。
为什么PE里能看到EFI分区,但打开后是空的?
这表示ESP分区已经被创建,但引导文件缺失或写入失败。常见原因是安装系统过程中,Windows安装程序没有正确识别到这个分区,或者虚拟机在安装时重启了太多次,直接用PE环境下的引导修复工具,或者执行bcdboot命令重建引导文件即可。
EFI分区大小设置为多少才合适?
Windows系统通常建议不小于100MB,设置为300MB左右使用体验更好。过大的EFI分区没有实际意义,它只存放引导文件,不存放系统数据,在虚拟机场景中,设置为256MB或512MB都能正常满足Windows和Linux双系统引导的需求,部分主流Linux发行版在安装时自动创建的EFI分区为512MB,这个容量在后期升级内核或添加引导项时更从容。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/625340.html





