全面揭秘UEFI固件启动Windows全流程

全面揭秘UEFI固件启动Windows全流程


本系列文章阅读顺序:


UEFI 固件启动 Windows 系统

一般情况下,我们的Windows系统都安装在电脑里面的磁盘中.所以,想要启动Windows系统,UEFI固件首先就要识别到电脑里面的磁盘.

正常情况下,UEFI固件识别磁盘是一个很简单的事情,不需要我们做什么.

**UEFI固件可以识别MBR,GPT两种类型的磁盘分区表.**我们只需要保证磁盘正确连接在电脑里面(主板或USB接口上)就可以了.

识别完磁盘之后,UEFI固件就要对磁盘”下功夫”.他进行的下一步便是扫描磁盘的分区.

我们知道,磁盘上的空间可以被划分为很多分区.例如,C盘,D盘就可以是同一块磁盘的不同分区.

分区的基本参数是文件系统,Windows系统只能安装在NTFS文件系统的分区里面.当我们右键一个分区查看属性的时候,就可以看见他的文件系统了.

然而,UEFI固件是一个”傻子”.UEFI固件只能识别一些比较老式的文件系统类型,比如:FAT32,FAT16,FAT.

也就是说,纵使我们的磁盘上有好多分区,UEFI固件也只能识别出FAT32,FAT16和FAT文件系统的分区.

识别到这些分区之后,UEFI固件就可以读取这个分区里面的文件了.

※在Windows系统的计算机中,磁盘上面有一个十分重要的分区,名字叫做EFI分区.(或者ESP分区)

EFI分区

从名字可以看出,这个分区就是专门给UEFI分区用的.UEFI固件正是通过读取EFI分区里的文件并运行里面的程序来启动Windows的.

所以,理所当然的,EFI分区的文件系统类型是FAT32(或FAT16,本文为了方便,都使用FAT32为标准EFI分区文件系统).

EFI分区的本质就是一个文件系统为FAT32的分区.

所以,任何以FAT32为文件系统的分区都可以被视为EFI分区,被UEFI固件识别读取.

那么,EFI分区里面都有什么?他为什么要作为一个专门的分区供UEFI固件使用?他为什么在Windows系统启动的过程中如此重要?

因为EFI分区里面有Windows系统的引导文件.

笔者给出自己电脑的EFI分区的文件结构目录(不在讲解范围内的文件省略):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
EFI
├─Boot
│ bootx64.efi

└─Microsoft
├─Boot
│ │ BCD
│ │ bootmgfw.efi
│ │ memtest.efi
│ │ ...........一堆文件............
│ │
│ ├─zh-CN
│ │ bootmgfw.efi.mui
│ │ bootmgr.efi.mui
│ │.......一堆国家的语言文件.........
│ │
│ ├─Fonts
│ │ chs_boot.ttf
│ │ cht_boot.ttf
│ │..........一堆字体文件...........
│ │
└─Recovery
BCD

下面,我将介绍一种”应用程序”:efi程序.

*.efi程序

和Windows系统里的exe软件一样,**efi程序就是在UEFI固件这个小型系统里的运行程序软件.**在上面的EFI分区文件目录里面,我们可以看见很多以efi为后缀名的文件,他们都是efi程序,只能在UEFI固件中运行.

例如: bootx64.efi,bootmgfw.efi,memtest.efi 等等.UEFI固件通过运行它们,进一步启动Windows系统,或者进行基本的计算机操作维护.

对于Windows系统来说,bootx64.efi,bootmgfw.efi这两个程序都是启动Windows的关键.(每一个都可以独立启动Windows)那么至于为什么有两个启动Windows的efi程序,我们一会再说明.

UEFI固件怎么知道自己要干什么?

问题来了:UEFI固件读取扫描到了EFI分区,也能访问EFI分区里的文件,但是,UEFI固件怎么知道要自己运行bootmgfw.efi或者bootx64.efi的?

这还是NVRAM的功劳.

NVRAM里面除了有UEFI固件整体代码,还记录了UEFI固件应该运行的efi程序所在的EFI分区是哪一个分区,以及efi程序所在位置的详细信息.

UEFI固件正是读取了这个记录,才能运行相应的efi程序,进行下一步操作.

不同分区都有自己独一无二的”身份证号”,即使两个分区的各个特征都一样(比如大小,文件系统类型…)它们的身份证号也不同.

这个身份证号的名字在计算机中叫做GUID.GUID是一长串**数字和字母的组合,**是随机生成的,也是唯一的.

事实上,NVRAM里记录的就是这个EFI分区的GUID,UEFI也是通过这个GUID找到正确的EFI分区.

我们也可以给身边的任何一个事物一个GUID号,比如,一盆向日葵.

一般来说,NVRAM里面不只记录了一个启动项目,而是记录很多的指向efi程序的启动项目.

但是通常情况下,这些项目并不是都有效的.UEFI固件会按照顺序从上到下依次尝试启动项目,并运行第一个尝试成功的efi程序.

93uefi

例如,上图就是一个UEFI的启动菜单选择界面.我们可以通过开机的时候按下键盘上的开机热键的方式把开机过程”截住”,然后进入这个菜单页面.(不同品牌电脑开机热键不同,可以百度搜索)

我们可以看到,从Windows boot manager开始,到EFI VMWare Virtual NVME Namespace (NSID 2), 这些都是UEFI的启动项目.它们都记录在主板的NVRAM里面.

UEFI从上到下依次尝试启动,寻找并运行它们所指向的efi程序.


本系列文章阅读顺序:



全面揭秘UEFI固件启动Windows全流程
https://lvlele.top/全面揭秘UEFI固件启动Windows全流程/
作者
吕了了
发布于
2026年5月31日
许可协议