Windows10下EFI分区文件结构(仅说明3个必要文件):
(EFI分区)..................此分区必须为Fat32格式,不然UEFI固件将无法识别
|
+--EFI
|--Microsoft
| +--Boot
| |--bootmgfw.efi...一个针对Windows的efi应用,使Boot Menu界面上的Windows Boot Manager可以工作
| +--BCD............启动配置文件,用户编辑启动菜单以及默认的启动顺序等
|--Boot
+--bootx64.efi.......一个针对UEFI的统一efi应用,可以针对所有的系统。如果是32位系统,则是boota32.ef
引导流程
计算机加电
|
BIOS自检
|
UEFI固件启动
|
根据NVRAM下的BootOrder顺序加载启动设备
|
获取对应启动设备下第一个存有正确efi应用的Fat32格式分区并加载
|
读取efi应用信息,加载到BCD文件
|
读取BCD文件下的记录以加载系统,默认Windows10系统是加载C:\Windows\System32\winload.efi应用
|
接下来就交给系统服务了。这样子就完成了系统的启动过程
说明一下:
什么叫做根据NVRAM下的BootOrder顺序加载启动设备,这个里面有几个知识点
NVRAM(非易失性存储器) 是BIOS用于存储本计算机启动设备信息的载体,可以通过
bcdedit /enum firmware
来查看信息,参考 这个BootOrder 顾名思义就是一个引导顺序,可以在BIOS下调节,比如先引导Windows Boot Manager还是先引导ATA HDD0这个设备
什么叫做获取对应启动设备下第一个存有正确efi应用的Fat32格式分区并加载?正常情况来说,一个硬盘分区仅有一个Fat32格式的EFI分区,并且往往是在第一个,但是当出现多了EFI分区那么UEFI固件将如何加载呢?对于首选启动已经设置为了Windows Boot Manager的情况下可以忽略,因为这个里面已经明确定义了加载哪块硬盘的哪个分区下哪个文件。当没有这个Windows Boot Manager项目而只能通过ATA HDDX下的分区查找时,经测试。会加载上可识别的拥有正确efi应用(位置: (EFI_Partition)\EFI\Boot\bootx64.efi )的第一个EFI分区,并根据efi应用的信息加载对应的BCD文件。
So,总结如下。可以没有 (EFI_Partition)\EFI\Boot\bootx64.efi
,也可以没有: (EFI_Partition)\EFI\Microsoft\Boot\bootmgfw.efi
,但是不能2个同时没有,存在 (EFI_Partition)\EFI\Boot\bootx64.efi
的情况下,可以在BIOS的Boot Menu界面选择ATA HDDX启动,存在 (EFI_Partition)\EFI\Microsoft\Boot\bootmgfw.efi
并设置正确的情况下,可以在BIOS的Boot Menu界面上选择 Windows Boot Manager启动。
说几个关于引导的命令
mountvol 用于加载分区,比如
mountvol K: /s
加载默认的EFI分区到K盘bcdboot 用于修复efi文件,比如
bcdboot C:\Windows /l en-us
将同时修复(EFI_Partition)\EFI\Boot\bootx64.efi
和(EFI_Partition)\EFI\Microsoft\Boot\bootmgfw.efi
2个文件bootrec 可用于重新创建BCD文件,比如
bootrec /rebulidbcd
会在默认的位置(EFI_Partition)\EFI\Microsoft\Boot
重新生成识别到的系统的BCD文件bcdedit 用于编辑BCD文件
命令的用法都可以非常方便的在微软的文档下找到,或者使用系统下命令提示符下的 HELP [Commmad]
命令
以上