从BIOS到UEFI 操作系统引导架构演进全解 - 第1节

1. 计算机启动概述

当用户按下计算机的电源键,系统并非立即从硬盘读取操作系统。首先,电源向主板发送 Power Good 信号,确认电压稳定。随后,主板上的时钟发生器向 CPU 的 RESET 引脚发送复位信号,强制 CPU 的寄存器进入初始状态。

关键动作: CPU 复位后,其指令指针寄存器(CS:IP)被硬件强制指向 0xFFFFFFF0(对于现代 x86 处理器),这个地址映射到固件 ROM 的入口点,即复位向量(Reset Vector)。

此时,CPU 开始执行固件中的第一条指令,标志着固件(BIOS 或 UEFI)正式接管系统控制权。

电源键按下后的硬件唤醒流程 电源稳定 时钟发生器 CPU 复位 执行固件入口 CPU 复位后 CS=0xF000, IP=0xFFF0, 组合地址 0xFFFFFFF0 指向固件 ROM

1.2 固件初始化:硬件自检与枚举

固件获得控制权后,首要任务是初始化关键硬件组件,确保系统处于可运行状态。这一阶段通常被称为 POST(Power-On Self Test,加电自检)。

1.2.1 POST 的核心步骤

  • CPU 检测: 验证 CPU 微码、缓存和基本指令集。
  • 内存初始化: 探测内存插槽,配置内存控制器时序,建立内存映射表。
  • 芯片组配置: 设置南北桥或 PCH(平台控制器中枢)的寄存器,启用 PCIe 总线。
  • 基本 I/O 初始化: 激活键盘控制器、中断控制器(PIC/APIC)、定时器。
  • 存储设备扫描: 枚举 SATA、NVMe、USB 等控制器,识别启动设备。
BIOS 与 UEFI 的差异: 传统 BIOS 在 POST 阶段使用 16 位实模式,只能访问 1MB 以下的内存;而 UEFI 在 POST 阶段已进入 32 位或 64 位保护模式/长模式,能够直接访问全部物理内存。
POST 硬件初始化流程 CPU 检测 内存初始化 芯片组配置 I/O 初始化 存储设备扫描 传统 BIOS 在实模式下运行,地址空间受限;UEFI 在保护/长模式下运行,可访问全部内存 UEFI 的 POST 通常比 BIOS 更快,因为它并行初始化设备并跳过不必要的兼容性检查

1.3 启动设备选择与引导加载

POST 完成后,固件需要确定从哪个设备加载操作系统。这一过程涉及 启动顺序 的查询和 引导扇区 的读取。

1.3.1 BIOS 的引导方式

  • 读取 CMOS 中存储的启动顺序(如:光驱 → U 盘 → 硬盘)。
  • 逐个尝试设备,读取其 主引导记录(MBR) 的第一个扇区(512 字节)。
  • 检查 MBR 末尾的签名 0x55AA,若有效则将控制权交给 MBR 中的引导代码。
  • MBR 代码再读取分区表,定位活动分区,加载其 卷引导记录(VBR)。

1.3.2 UEFI 的引导方式

  • 读取 NVRAM 中存储的 引导管理器(Boot Manager) 变量。
  • 直接扫描 ESP(EFI 系统分区)中的 .efi 引导文件。
  • 调用 UEFI 协议(如 LoadImage 和 StartImage)加载并执行引导加载器。
  • 支持安全启动(Secure Boot),验证引导文件的数字签名。
对比维度 传统 BIOS UEFI
引导文件位置 MBR(第1扇区) ESP 分区(FAT32 格式)
引导文件格式 512 字节二进制代码 .efi 可执行文件(PE32+ 格式)
磁盘分区表 MBR(最大 2TB) GPT(最大 9.4ZB)
安全机制 无内置签名验证 Secure Boot(基于证书链)
CPU 模式 16 位实模式 32/64 位保护/长模式
BIOS vs UEFI 引导路径对比 BIOS 固件 读取 MBR 执行引导代码 加载 VBR → OS UEFI 固件 读取 NVRAM 变量 扫描 ESP 分区 加载 .efi → OS 核心区别 • BIOS 依赖 MBR 512B 代码 • UEFI 使用 .efi 文件系统 • BIOS 无安全验证 • UEFI 支持 Secure Boot • BIOS 最大 2TB 磁盘 • UEFI 支持 GPT 大容量 • UEFI 支持网络引导 vs

1.4 操作系统加载与交接

引导加载器(如 GRUB、Windows Boot Manager)获得控制权后,开始执行操作系统内核的加载工作。这一阶段标志着固件任务的结束和操作系统的开始。

1.4.1 引导加载器的职责

  1. 加载内核映像: 从文件系统(如 ext4、NTFS)中读取内核文件到内存。
  2. 设置启动参数: 传递硬件信息表(如 ACPI、SMBIOS)和内核命令行参数。
  3. 切换 CPU 模式: 若引导加载器在实模式运行,需切换到保护模式或长模式。
  4. 跳转到内核入口: 执行 jmp 或 call 指令,将控制权交给内核。
注意: 在 UEFI 环境下,引导加载器本身就是一个 .efi 应用程序,运行在 CPU 的最高权限级别(Ring 0),可以直接调用 UEFI 运行时服务(如 GetVariable、SetVariable)来获取固件信息。
引导加载器到操作系统内核的交接 引导加载器 加载内核映像 设置启动参数 跳转到内核 UEFI 引导加载器可直接调用固件运行时服务,无需重新初始化硬件;BIOS 引导加载器需自行探测硬件

1.5 BIOS 与 UEFI 核心区别总结

下表从多个关键维度对比传统 BIOS 与现代 UEFI 的差异,帮助理解引导架构的演进本质。

维度 传统 BIOS UEFI
接口规范 固件接口固定,无标准化 API 标准化的 UEFI 规范(2.x+)
CPU 运行模式 16 位实模式 32/64 位保护/长模式
内存访问 仅 1MB 地址空间(需切换模式) 直接访问全部物理内存
磁盘分区 MBR(最大 2TB,最多 4 主分区) GPT(最大 9.4ZB,最多 128 分区)
引导加载 读取 MBR/VBR 512B 代码 加载 .efi 文件(PE32+ 格式)
安全启动 无 Secure Boot(基于 PKI 证书)
网络支持 需额外 PXE ROM 内置 UEFI 网络协议栈
图形界面 文本模式(INT 10h) 支持 GOP(图形输出协议)
扩展性 Option ROM 限制(实模式) UEFI 驱动模型(可加载模块)
启动速度 较慢(串行初始化) 较快(并行初始化 + Fast Boot)
演进本质: BIOS 的设计受限于 1980 年代的硬件环境(16 位 CPU、1MB 地址空间、软盘启动),而 UEFI 是面向现代 64 位多核处理器、大容量存储、安全需求和图形界面的全新固件架构。UEFI 不是 BIOS 的简单升级,而是一次彻底的重新设计。