当前位置: 首页 > news >正文

UEFI vs Legacy BIOS:一张图看懂区别

UEFI vs Legacy BIOS:一张图看懂区别

🔥 UEFI/BSP 开发系列第 004 篇 | 难度:⭐ 入门

作者:BSP 开发工程师

系列目标:300 篇由浅入深,构建完整的 UEFI 固件知识体系


写在前面

前三篇我们知道了 UEFI 是什么、传统 BIOS 为什么被淘汰、以及从按下电源键到操作系统启动的完整流程。

但很多人心里还是有个模糊的感觉:

“UEFI 和传统 BIOS 到底哪里不一样?能不能一次性说清楚?”

今天这篇文章就一张图 + 一张表,把两者所有核心差异一网打尽。


一、终极对比图

===== Legacy BIOS ===== ===== UEFI ===== +------------------+ +------------------+ | 开机自检 | | SEC (安全初始化) | | POST | +--------+---------+ +--------+---------+ | | +--------+---------+ +--------+---------+ | PEI (内存初始化) | | 16位实模式 | +--------+---------+ | 寻址空间 1MB | | +--------+---------+ +--------+---------+ | | DXE (驱动加载) | +--------+---------+ | 64位 / 可寻址全部 | | INT 13h 读硬盘 | +--------+---------+ | INT 10h 显示 | | | (软件中断调用) | +--------+---------+ +--------+---------+ | BDS (启动选择) | | +--------+---------+ +--------+---------+ | | MBR 引导扇区 | +--------+---------+ | 加载 bootloader | | ESP 分区 | +--------+---------+ | 加载 .efi 文件 | | +--------+---------+ v v +------------------+ +------------------+ | 操作系统启动 | | 操作系统启动 | +------------------+ +------------------+

左边像个"一根筋"的流水线——自检完就中断调用,读 MBR,加载系统,完事。

右边像个"四阶段火箭"——每个阶段有明确分工,层层交接,最后精准送操作系统入轨。


二、灵魂对比表

对比项Legacy BIOSUEFI
诞生年代1981 (IBM PC)2005 (UEFI 2.0)
CPU 运行模式16 位实模式32/64 位保护模式
可寻址空间1 MB全部(64位下理论 16 EB)
编程语言汇编为主C 语言为主
启动流程POST -> INT -> MBRSEC -> PEI -> DXE -> BDS
硬件访问方式INT 中断调用Protocol 接口
分区表MBR(最大 2.1 TB,4 个主分区)GPT(最大 18 EB,128 个分区)
启动文件位置MBR 第一个扇区(512字节)ESP 分区的 .efi 文件
安全启动Secure Boot(签名验证)
驱动模型Option ROM(嵌在硬件里)UEFI Driver(标准化,可独立加载)
图形界面蓝底白字文本模式GOP 图形输出,支持鼠标操作
网络支持基本没有(PXE 靠 Option ROM)原生 TCP/IP 协议栈
可扩展性极差(添加功能要改中断向量表)模块化(加个 .efi 驱动就行)
多操作系统需要第三方 bootloader原生支持多启动项
开发门槛要精通 x86 汇编会写 C 就能入门
代码规模几十 KB几十 MB
启动速度通常更慢(串行初始化)可以更快(并行初始化)
固件更新高风险(刷坏=板砖)Capsule Update(安全回滚)
规范组织无(IBM 一家说了算)UEFI Forum(多家厂商联合制定)

看完这张表你会发现:Legacy BIOS 就像功能机,UEFI 就像智能手机。功能机能打电话就行,智能手机有操作系统、有 App Store、有生态。


三、几个容易混淆的点

1. UEFI 不是 BIOS 的"升级版"

很多人以为 UEFI 是在传统 BIOS 基础上改出来的。不是

UEFI 是 Intel 在 1998 年从零设计的全新架构(最初叫 EFI),和传统 BIOS 没有代码级的继承关系。它不是"BIOS 2.0",而是"替代 BIOS 的全新方案"。

就像 Android 不是 Symbian 的升级版,而是完全不同的操作系统。

2. "BIOS 设置界面"不代表用的是传统 BIOS

你按 F2/Del 进入的那个设置界面,现在 99% 都是 UEFI 固件提供的。只是大家习惯叫它"进 BIOS"。

真正的传统 BIOS 设置界面长这样:

+-----------------------------------------------+ | Phoenix BIOS Setup Utility | | Main Advanced Security Boot Exit | |-----------------------------------------------| | | | System Time [14:30:25] | | System Date [01/15/2008] | | IDE Channel 0 [WDC WD800JD-75MSA3] | | IDE Channel 1 [None] | | System Memory [512 MB] | | | | F1 Help ESC Exit Arrow Select F10 Save | +-----------------------------------------------+

现在的 UEFI 设置界面可以有图形化 UI、鼠标操作、甚至 RGB 灯效设置。但大家还是习惯叫它"BIOS 设置"——就像我们现在还管微信语音叫"打电话"一样。

3. CSM 是什么?

你可能在主板设置里见过CSM(Compatibility Support Module)这个选项。

CSM 是 UEFI 固件里的一个"兼容模块"——它在 UEFI 环境下模拟传统 BIOS 的行为,让那些只认 Legacy BIOS 的老操作系统或老硬件也能启动。

UEFI 固件 | +-- 正常 UEFI 启动路径 | ESP -> .efi 文件 -> 新系统 | +-- CSM 模拟 Legacy 路径 INT 13h -> MBR -> 老系统

Intel 从第 12 代酷睿开始已经逐步移除 CSM 支持。所以如果你还在用 Windows 7 + MBR 分区……该升级了。

4. Secure Boot 到底验证什么?

Secure Boot 是 UEFI 独有的安全机制。简单说就是:

每个要加载的 .efi 文件都必须有合法的数字签名,没签名或签名不对的一律拒绝执行。

启动流程中的签名验证: [UEFI 固件] --加载--> [bootmgfw.efi] 签名: Microsoft 验证: db 数据库中有 Microsoft 的公钥 结果: PASS, 允许执行 [UEFI 固件] --加载--> [可疑bootkit.efi] 签名: 无 / 伪造 验证: 找不到匹配的公钥 结果: REJECT, 拒绝执行

这就是为什么装 Linux 双系统时,有时需要关闭 Secure Boot 或者手动导入发行版的签名密钥。


四、小白补课:INT 中断调用是什么?

传统 BIOS 时代,所有硬件操作都通过**软件中断(INT)**来完成。

你可以把中断理解为"打电话":

程序: "喂,BIOS 吗?我要读硬盘第一个扇区" BIOS: "好的,等一下"(去操作硬盘控制器) BIOS: "读好了,数据放在这个地址了" 具体操作: MOV AH, 02h ; 功能号: 读扇区 MOV AL, 01h ; 读 1 个扇区 MOV CH, 00h ; 柱面号 0 MOV CL, 01h ; 扇区号 1 MOV DH, 00h ; 磁头号 0 MOV DL, 80h ; 第一块硬盘 MOV BX, 7C00h ; 数据放到这个地址 INT 13h ; 打电话给 BIOS!

常见的 BIOS 中断号:

中断号功能
INT 10h显示服务(文字、图形)
INT 13h磁盘服务(读写扇区)
INT 15h系统服务(内存信息等)
INT 16h键盘服务
INT 19h启动加载

这套机制在 16 位实模式下工作得很好。但它有几个致命缺陷:

  1. 只能在 16 位实模式下调用——操作系统切到 32/64 位后就用不了了
  2. 没有标准化——每家 BIOS 厂商的实现可能有微妙差异
  3. 无法扩展——想添加新功能?改中断向量表?太危险了

UEFI 用 Protocol 替代了 INT:

Legacy BIOS: UEFI: INT 13h -> 读硬盘 BlockIo Protocol -> ReadBlocks() INT 10h -> 显示文字 GOP Protocol -> Blt() INT 15h -> 查内存 MemoryMap -> GetMemoryMap()

Protocol 是类型安全的 C 语言函数指针表,可以在任何 CPU 模式下调用,支持热插拔和动态发现。


五、一个现实问题:为什么还有人用 Legacy 模式?

既然 UEFI 这么好,为什么 Legacy 模式到今天还没完全消失?

  1. 老系统兼容:一些工控设备、医疗设备跑的还是 Windows XP / 嵌入式 Linux,它们只认 MBR + Legacy 启动
  2. 老硬件:2012 年之前的显卡、RAID 卡可能没有 UEFI 驱动(只有 Option ROM)
  3. 习惯:很多老运维"Legacy 一把梭"用了十几年,“能跑就不改”
  4. 特殊场景:部分虚拟化环境(旧版 QEMU)默认用 SeaBIOS(传统 BIOS 实现)

但趋势不可逆——Intel 已经在推动全面 UEFI,CSM 正在退出历史舞台。


六、从 BSP 工程师角度看两者的区别

如果你是 BSP 开发工程师,两者最大的区别在于开发体验

维度Legacy BIOS 开发UEFI/EDK2 开发
语言80% 汇编 + 20% C95% C + 5% 汇编
调试串口打印 + 逻辑分析仪串口 + 源码级调试器
编译厂商私有构建系统EDK2 标准构建(build命令)
模块一坨代码揉在一起每个功能是独立模块(.inf)
复用基本不可能跨平台复用(同一驱动适配多个芯片)
规范口口相传UEFI Spec + PI Spec 白纸黑字

写 Legacy BIOS 像修老城区的地下管道——图纸没有、标准混乱、牵一发动全身。写 UEFI 像搭乐高——每块积木有标准接口,拼在一起就能用。


七、总结

一句话总结:Legacy BIOS 是 1981 年的产物,16 位、1MB、汇编、中断调用、MBR、没安全机制。UEFI 是 2005 年的重新设计,64 位、全地址空间、C 语言、Protocol、GPT、Secure Boot。

记住这三个最核心的区别

  1. CPU 模式:16 位实模式 vs 64 位保护模式
  2. 硬件交互:INT 中断 vs Protocol 接口
  3. 分区方案:MBR (2.1TB) vs GPT (18EB)

其他所有差异(安全启动、驱动模型、图形界面、可扩展性……)都是从这三个核心区别衍生出来的。


下一篇预告

005. 什么是固件?它和软件、硬件的关系

固件到底算硬件还是软件?为什么固件工程师总觉得自己不被理解?


📌 本系列共 300 篇,从入门到芯片原厂 BSP 能耗优化

👨‍💻 作者:在职 BSP 开发工程师,持续更新中

🏷️ 标签:UEFI、Legacy BIOS、对比、CSM、Secure Boot、INT、Protocol

📁 GitHub:UEFI-BSP-300

http://www.jsqmd.com/news/690356/

相关文章:

  • 通达信公式进阶:巧用逻辑与选择函数,让你的策略信号更“聪明”
  • 场景化模板库:内容可视化效率优化方案与实践
  • 从MySQL到Redis,聊聊那些用RocksDB做存储引擎的开源项目
  • MyBatis-Plus实战:用apply搞定那些‘奇奇怪怪’的数据库函数查询
  • Zustand和Pinia的对比(谁更好用)
  • 2026年Q2建筑工程主体结构检测机构可靠度排行 - 优质品牌商家
  • ESP32 Modbus RTU Slave程序:Arduino IDE开发,多项目应用实例...
  • 告别QCalendarWidget!用QPushButton手搓一个Qt日历时间选择器(附完整源码)
  • 全链路视觉素材自动化生产:从模板驱动到工程化交付实践
  • 好用的车顶箱哪个品牌好
  • 5G NR PUCCH信道实战解析:从SR请求到HARQ反馈,手把手教你理解上行控制流程
  • 智慧教育中的个性化学习与教学评估
  • 3. ESP32 UART串口实战:从基础配置到Arduino多场景通信
  • 避坑指南:ArcGIS中河网上下游分析,为什么你的流向总是不对?
  • 如何高效使用pyNastran进行CAE数据转换:实战指南
  • HarmonyOS6 ArkTS SymbolSpan组件使用文档
  • 给S32K3中断加上“看门狗”:INTM中断监控模块的实战配置与故障注入测试
  • 别再只用@PostConstruct初始化了!SpringBoot中3种替代方案实战对比(含InitializingBean)
  • 多场景物料:核心设计要点与跨场景落地应用指南
  • 从“定位”到“守护”:人员定位系统科普解析
  • Aspose.Slides vs Spire.Presentation:.NET处理PPT选哪个?一份来自实际项目的深度对比与踩坑总结
  • 深度神经网络梯度爆炸问题分析与解决方案
  • HarmonyOS6 ArkTS RichText组件使用文档
  • 挖洞变现不踩坑!7 个正规合法途径,新手零基础从 0 赚到漏洞奖金
  • Hackintosh黑苹果系统网络驱动配置实战教程:从原理到实践的专业指南
  • GEO排名系统多少钱?源码买断式交付,直连主流大模型,后续算力成本可忽略
  • 低功耗无线遥控新选择:深度解析VI520R ASK/OOK接收芯片与433MHz方案优势
  • PHP 加密解密方法
  • 从Cmd到PowerShell:一个Windows老鸟的十年命令行工具演进史与效率翻倍心得
  • AI技术如何革新寻宝游戏:动态线索与视觉验证实战