win系统 -
UEFI+GPT是如何引导系统开机的,和传统旧的BIOS+MBR引导是如何开机的,开机过后,需要经历过哪些阶段,需要注意什么?
我们来看一下,到底是怎么个事。
1.上电 (Power On): 按下电源键,主板通电。
2.CPU启动: 电源稳定后,CPU从固化在芯片中的固定地址(对于x86是 0xFFFFFFF0)开始执行第一条指令。这个地址指向了固件(BIOS或UEFI)的入口。
3.POST (Power-On Self-Test):
CPU开始执行固件代码。
BIOS: 进行一系列硬件自检:识别CPU型号、检测和初始化内存、检测关键外设(键盘、鼠标、存储控制器等)。如果关键硬件故障,会发出蜂鸣声或显示错误码。
UEFI: 自检过程更模块化和快速,但目的类似。
4.固件初始化: 加载CMOS/闪存中保存的用户设置(如日期时间、启动顺序)。
5.启动设备枚举: 按照预设的启动顺序(如:USB -> 硬盘 -> 网卡),固件尝试寻找一个可启动的设备。
从这里开始,路径因固件类型不同而分岔。
1.读取MBR: BIOS将第一个可启动硬盘的第一个扇区(512字节),即 主引导记录(MBR),加载到内存中并执行。
2.MBR代码: MBR的前440字节是启动代码。它的任务是在分区表中找到标记为 “活动” 的分区。
3.读取VBR: MBR代码将该活动分区的卷引导记录(VBR),即分区的第一个扇区,加载到内存并执行。VBR包含该分区文件系统的信息。
4.加载启动管理器: 对于Windows,VBR的代码会查找并运行该分区根目录下的 bootmgr 文件(Windows Boot Manager)。
1.查找ESP: UEFI不读MBR。它直接查找硬盘上的 EFI 系统分区(ESP)。这是一个使用FAT32格式的小分区,包含引导所需的文件。
2.运行Boot Manager: UEFI根据其内部变量或扫描ESP分区,找到并直接运行 \EFI\Microsoft\Boot\bootmgfw.efi。这是一个完整的应用程序,远比MBR的512字节复杂。
此时,无论哪种方式,控制权都已交给 Windows Boot Manager (bootmgr 或 bootmgfw.efi)。
1.读取BCD: Boot Manager 读取 引导配置数据库(BCD)。这是一个存储在 \Boot\BCD 的注册表式数据库,包含了所有可启动的操作系统条目和启动参数。
2.显示启动菜单: 如果BCD中配置了多个操作系统(如Windows 10和Windows 11),则会显示启动选择菜单。若无,则直接进入默认项。
3.加载内核: 根据选择,Boot Manager 加载并执行 Windows内核加载器 winload.efi(UEFI)或 winload.exe(BIOS)。它将控制权移交给内核加载器。
4.内核加载器工作:
加载核心内核文件 Ntoskrnl.exe 和 硬件抽象层 hal.dll。
加载系统注册表配置单元(SYSTEM 等)。
加载启动类别(BOOT_START)的底层设备驱动,用于访问启动卷(C盘)和其他关键硬件。
将所有必要模块和数据结构放入内存,为内核执行做好准备。
1.内核接管: Ntoskrnl.exe 开始执行,初始化核心系统组件:对象管理器、内存管理器、I/O管理器、配置管理器等。
2.会话管理器启动: 内核启动第一个用户模式进程 smss.exe(会话管理器)。
3.启动关键服务:
smss.exe 启动 csrss.exe(Windows子系统)。
它启动 wininit.exe,后者负责启动服务控制管理器 services.exe(加载所有Windows服务)、本地安全认证子系统 lsass.exe 和登录进程 winlogon.exe。
4.Winlogon与登录:
winlogon.exe 启动,显示登录界面。
用户输入凭据,lsass.exe 验证其合法性。
5.用户会话创建: 验证成功后,winlogon.exe 启动 userinit.exe。
userinit.exe 加载用户配置,启动Windows资源管理器 explorer.exe(这就是桌面的Shell)。
同时,它会运行用户组的启动项和登录脚本。
6.桌面就绪: explorer.exe 加载完成后,显示桌面、任务栏,启动托盘程序。至此,整个启动过程完成,系统进入可交互状态。