UEFI的诞生

随着CPU及其他硬件设备的技术革新,CPU和操作系统已支持到64位,而BIOS却还停留在16位;主板上更加丰富多样的扩展设备,也让BIOS愈加无能为力,使得硬件无法完成初始化。现实表明,BIOS已经无法满足软硬件高速发展的需求,成为了计算机体系发展的瓶颈。经济学规律告诉我们,哪里有需求哪里就有市场,于是新的引导技术就在偶然也是必然中出现了。

1997年,Intel联合惠普开发出了首颗面向高端服务器市场的基于安腾(Itanium,也称为IA-64)架构的64位处理器。而当时的BIOS已经无法满足Intel的需求,所以Intel于1998年启动了名为“Intel Boot Initiative”的项目来解决系统引导问题,后来Intel将此项目的规范公开并命名为EFI(Extensible Firmware Interface),即可扩展固件接口。

IA-64构架属于全新构架平台,而市面上的计算机全是32位的x86架构,如果想让程序在IA-64平台的计算机上运行,就必须重新编译,出于成本和惯性思维考虑,可以想象市场接受IA-64是多么困难。不出所料,IA-64的销量不容乐观,仅HP一家坚持使用;2003年,AMD发布第一颗能兼容32位的基于x86-64(AMD64)架构的64位处理器:Opteron,并于同年发布了面向桌面端计算机的Athlon 64,受到了市场的青睐;最终Intel决定放弃对IA-64的重点投入,将主要精力转投AMD 的x86_64架构。

虽然IA-64没有取得成功,但EFI凭借着其良好的结构设计存活下来并大放异彩。鉴于EFI的优越性,2005年,CPU生产厂商联合BIOS供应商,OS供应商以及系统制造商等行业内11家知名企业(分别是:AMD, American Megatrends, ARM, Apple, Dell, Hewlett Packard Enterprise, HP Inc., Insyde Software, Intel, Lenovo, Microsoft, and Phoenix Technologies)共同建立了UEFI论坛,该论坛属于非营利性公司,负责开发、促进和管理UEFI的规范的演进。Intel将EFI规范和相关的测试套件移交给UEFI论坛,微软也提供了相应的技术资料,更新了规范内容,形成了新的UEFI(Unified Extensible Firmware Interface)规范, 该规范定位于接口规范,不涉及具体的固件实现。2006年1月31日,UEFI论坛推出第一个新的标准UEFI2.0。

从2005年至今,UEFI规范标准已经升级至2.10,在行业的积极推动下,UEFI成为替代BIOS的主要驱动系统的技术,2007年苹果公司率先在MacBook Pro中使用了UEFI技术,随后同一年微软也在Vista SP1中使用UEFI技术,开始了UEFI替换BIOS的技术迭代,特别是Wintel在PC市场上取得的巨大成功,让UEFI引导方案从众多技术中脱颖而出,成为了当下的主流。

UEFI的特点

UEFI可视为一个微型的操作系统,但无法替代操作系统的角色,设计之初,就被限制了功能,不提供中断和缓存机制,其主要功能有两个:

1. 平台初始化(Platform Initialization),为各类硬件提供初始化服务;

2. 提供固件接口,为上层应用(包括操作系统)提供调用接口,抽象底层硬件;

相比BIOS,UEFI的优势大致有以下几点:

1. 更安全的防护措施,更有效的签名验证机制;

UEFI中引入了Hash校验和数字签名等技术,从源头上防止数据的篡改;安全启动模式从根开始验证加载模块的数字签名,只有通过验证,才会运行模块程序;UEFI还能检测运行模块是否在禁止加载的黑名单中,如果在黑名单中,同样禁止程序运行。

2. 支持KMS(Key Management Service)

支持Internet Key Server和HSM(Hardware Security Module)或者其他类型的KMS Provider,对密钥进行管理和存储。

3. 支持GPT的分区方式,突破了硬盘容量限制,可以引导超过2T的硬盘;

GPT分区标准作为UEFI标准的一部分,支持每个磁盘最大128个主分区,8 ZiB容量(每扇区512字节)或者64 ZiB(每扇区4096字节)。

4. 支持异步调用,开机速度快,可识别文件系统;

UEFI支持异步事件调用,放弃了BIOS的中断方式,让CPU可以在相同的时间内做更多的事情;UEFI支持FAT32文件系统,抽象了底层硬件I/O,通过文件方式访问磁盘比直接访问扇区更有效率, BIOS每次只能通过INT0x13按扇区读取硬盘数据,而UEFI可以读取任意长度;UEFI也不必再从磁盘的固定位置读取引导代码,引导代码可以放在任意路径下。

5. 支持多语言,更友好的GUI;

BIOS永远只能是单调的单色背景,纯英文的文字选项,而UEFI可以提供本地化即多语言的功能,还能设计出对用户更友好,内容更丰富的GUI交互。

Legacy BIOS界面

UEFI界面

6. 支持多种协议:USB、SCSI、ACPI、TCP/IP,PCI等

大部分的硬件初始化都在UEFI中完成,UEFI也支持安装硬件驱动程序,能驱动复杂的扩展硬件设备;UEFI还具有网络功能,在不进入操作系统的情况下进行网络通讯。

7. 支持C语言,易开发,易维护;

UEFI的大部分实现都使用C语言,并且支持C运行时库,将普通的C代码迁移到UEFI中,只需要很少的工作量,应用程序和驱动程序甚至可以使用C++。

8. 模块化的设计;

UEFI对底层硬件进行了抽象,采用模块化设计,降低耦合性,通过固件接口(Boot Service和Runtime Service)向上提供服务,屏蔽了底层硬件实现细节,简化了UEFI上层应用的调用;整个UEFI环境分7阶段运行:SEC(安全验证)->PEI(EFI前期初始化)->DXE(驱动执行环境)->BDS(启动设备选择)->TSL(操作系统加载前期)->RT(Run Time)->AL(系统灾难恢复期),每个阶段只负责处理自己的部分,完成后转到下个阶段。

UEFI阶段运行示图

UEFI架构图

Boot Service主要向上提供事件处理、时间和任务优先级相关设置,内存分配,外设管理(注册、注销、安装、卸载、响应等),映射加载等服务。

Runtime Service主要限制中断响应,提供时间服务(运行时阶段),虚拟内存映射和其他各种(如Reset,获取monotonic计数,更新固件等)服务。

参考资料:

1. 《UEFI原理与编程》—— 戴正华

2. 《Unified Extensible Firmware Interface(UEFI) Specification》

3. 《UEFI Platform Initialization (PI) Specification》

UEFI的诞生与优势相关推荐

  1. 固件类型bios好还是uefi好_uefi启动是什么意思 UEFI启动对比Bios启动优势在哪里

    UEFI是一种详细描述类型接口的标准.这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上.通俗的说,UEFI是一种新的主板引导初始化的标注设置.那么UEFI启动和Bios启动之间有何区别 ...

  2. uefi启动适合什么计算机,uefi启动是什么意思 UEFI启动对比Bios启动优势在哪里

    UEFI启动是一种新的主板引导项,正被看做是有近20多年历史的BIOS 的继任者.顾名思义,快速启动是可以提高开机后操作系统的启动速度.由于开机过程中UEFI的介入,使得Windows 8的开机进入系 ...

  3. UEFI启动是什么意思 UEFI启动对比Bios启动优势在哪里

    新型UEFI,全称"统一的可扩展固件接口"(Unified Extensible Firmware Interface), 是一种详细描述类型接口的标准.这种接口用于操作系统自动从 ...

  4. 服务器的BIOS引导模式设置为什么,Legacy BIOS 引导模式和 UEFI 引导模式

    Legacy BIOS 引导模式和 UEFI 引导模式 服务器配备有统一可扩展固件接口 (Unified Extensible Firmware Interface, UEFI),可以将其配置为支持 ...

  5. ami主板uefi_BIOS和UEFI 你真的认识?

    昨天有小伙伴问小编,电脑的BIOS和UEFI究竟什么区别?因为都是电脑启动时候一闪而过,看起来似乎就是速度快慢的差别.还有就是以前小编曾经提到过启动方式的不同,比如UEFI+GPT的启动模式,但是BI ...

  6. easyuefi只能在基于uefi启动的_只需2个命令,就能将win10 BIOS启动方式转换为UEFI,你见过吗!...

    平常如果大家有使用启动U盘进行重装系统的话,就会知道其实U盘有三种启动方式:快捷键,BIOS还有UEFI.快捷键这种方式最为简单,而且容易操作,只需要在开机界面中按下提前查询到的快捷按键就能成功启动U ...

  7. uefi下的开机顺序_动态修改UEFI启动顺序的方法与流程

    本发明涉及计算机领域,其主要 技术实现要素: 是动态修改UEFI启动顺序的方法. 背景技术: 固件是固化在Flash芯片中的软件程序.BIOS是计算机中最重要的固件之一,用于初始化硬件.管理硬件资源. ...

  8. iot架构 mqtt netty_Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上

    前言 诞生及优势 MQTT由Andy Stanford-Clark(IBM)和Arlen Nipper(Eurotech,现为Cirrus Link)于1999年开发,用于监测穿越沙漠的石油管道.目标 ...

  9. HDD与OS的江湖恩怨

    最近在做系统的时候,突然想到不同系统的安装总是要先要设置一番的BIOS,有时候改几项设置就好了,有时候改完几项还不好,加上近几年出现UEFI之后也很少研究装机装系统的事情,想趁此机会把这方面的东西略微 ...

  10. 7宗命案,潜逃23年,大数据还是认出了她

    导读:一个女人,背着7宗命案,潜逃国内23年.自以为很侥幸,然而天网恢恢,疏而不漏.一颗摄像头,最终还是"抓"到杀人犯劳某枝. 本文经授权转自公众号CSDN(ID:CSDNnews ...

最新文章

  1. java hashmap实例,关于java中的HashMap的实例操作
  2. 深入理解 JVM Class文件格式(四)
  3. 【Scheme归纳】5 数据结构
  4. 在iView中动态创建表格
  5. jupyter notebook常用命令
  6. 编译原理语义分析_编译原理 第一章 绪论
  7. ans函数python_#12 Python函数
  8. 也看《猎场》:几经秋冬,青春不在,一切皆贾,蓦然回首,伊人如故
  9. HTML:在HTML前端界面中直接显示代码
  10. 管理感悟:宁可五个阶段做三个月,绝不一个阶段做二个月
  11. 代码对比工具,我就用这5个
  12. 第十一届蓝桥杯大赛软件类省赛第二场 C/C++ 大学 B 组 附蓝桥杯官网网址
  13. springboot easyexcel 导出excel案例及文件无法打开
  14. 模糊c–均值聚类算法的原理解释及推导
  15. 微博如何快速批量取消关注脚本教程
  16. mysql 报ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUT
  17. 大白菜u盘装win10步骤图解
  18. 网站同时支持IPv4和IPv6及仅支持IPv4的程序巧妙转换到支持IPv6
  19. 怎样查询SCI和EI检索号
  20. 需要细读的好文章(搜集)

热门文章

  1. NMF扩展名是什么文件
  2. 删除服务器远程桌面痕迹,清除3389连接后留下的日志,清除3389远程桌面连接记录...
  3. acer软件保护卡怎么解除_Acer软件保护卡使用说明资料
  4. 有关计算机专业工作室的名字,盘点最好听的工作室名字大全
  5. 《应用时间序列分析:R软件陪同》——第 3 章 一元时间序列数据的拟合及预测 3.1 一些估计和预测方法的基本数学原理...
  6. IDEA 思维导图 ,类UML 图工具插件 plantUML integration
  7. 基于单片机的KTV智能调光系统设计
  8. Houdini 笔记2
  9. IC卡CPU卡32位单片机S3系列接触式读写模块分类与性能攻略
  10. iOS 动画篇 - pop动画库