100 一块硬盘多个EFI分区?UEFI固件最终选择了谁启动?
一块硬盘多个EFI分区?UEFI固件最终选择了谁启动?
我们日常看见的情况都是比较标准的,一块硬盘上面有一个EFI分区,而且通常位于硬盘上的第一个分区.大概有200MB-500MB大小.EFI分区文件系统类型通常都是FAT32,FAT16,FAT类型.
但是思考EFI分区的本质,也就是一个文件系统为FAT32的分区,里面有引导文件而已(本文仅考虑FAT32).那么,如果一个硬盘上面有好几个文件系统为FAT32的分区,而且每一个这样的分区里面都有系统引导文件,那么UEFI固件在启动计算机的时候默认应该做和选择呢?
为探究以上问题,笔者进行了实验.
实验准备
- 本实验采用vmware17.5进行模拟.
由于不同的主板UEFI固件不同,不能保证实验结果具有普适性.实验结果针对vmware主板生效.
-
硬盘分区结构如下:
- 分区1:EFI1
- 分区2:安装一个Windows10系统
- 分区3:EFI2
- 分区4:NTFS文件系统的数据存储分区
- 分区5:EFI3
分区顺序按硬盘上从左至右排序.
![]()
实验思路
通过对EFI1,EFI2,EFI3三个EFI分区添加不同的引导区分UEFI固件启动的是哪一个EFI分区里的引导文件.(主要是通过修改BCD文件里的菜单.)通过删除任意一个EFI分区后,观察UEFI固件启动哪一个EFI分区确定UEFI启动时选择EFI分区的逻辑.
进行实验
分别创建EFI1,2,3的引导文件,使其可以引导分区2里的Windows系统.
分别编辑EFI1,EFI2,EFI3里的BCD文件,具体如下:
$$
BCD
$$
- EFI1:
- Windows10
- 1111
- EFI2:
- Windows10
- 2222
- EFI3:
- Windows10
- 3333
注:1111,2222,3333仅用于区分这个BCD文件属于哪一个EFI分区,进而推导UEFI固件启动的EFI分区是哪一个.
将虚拟机目前的状态保存,命名为快照1.
启动虚拟机.Windows boot manager界面显示如下:

说明启动了EFI1,也就是顺序有效的第一个EFI分区.
格式化EFI1,重启虚拟机.Windows boot manager界面显示如下:

说明启动了EFI2,同样是顺序第一个有效的EFI分区.
格式化EFI2,重启虚拟机.Windows boot manager界面显示如下:

说明启动了EFI3,同样是顺序第一个有效的EFI分区.
将虚拟机恢复至快照一,也就是初始状态.
格式化EFI2.重启虚拟机,Windows boot manager界面显示如下:

说明启动了EFI1,是顺序有效的第一个EFI分区.
将虚拟机恢复至快照一,也就是初始状态.
格式化EFI3.重启虚拟机,Windows boot manager界面显示如下:

说明启动了EFI1,是顺序有效的第一个EFI分区.
将虚拟机恢复至快照一,也就是初始状态.
格式化EFI1,EFI3.重启虚拟机,Windows boot manager界面显示如下:

说明启动了EFI2,是顺序有效的第一个EFI分区.
将虚拟机恢复至快照一,也就是初始状态.
格式化EFI1,EFI2,EFI3.重启虚拟机,虚拟机无法启动至Windows boot manager.
实验结论
综上所述,vmware虚拟机的UEFI主板在遇到一块硬盘上有多个EFI分区的时候,默认读取硬盘上顺序第一个有效的EFI分区来启动系统.这和EFI分区的位置,分区参数,分区大小均无关.
更广义上来说,UEFI固件默认读取硬盘上他可以识别的第一个有效的启动分区来启动系统.(因为有的UEFI固件可以识别exFAT)

浙公网安备 33010602011771号