分享

UEFI的诞生与优势

 漫步之心情 2023-01-05 发布于湖南

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交互。

文章图片1

Legacy BIOS界面

文章图片2

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(系统灾难恢复期),每个阶段只负责处理自己的部分,完成后转到下个阶段。

文章图片3

UEFI阶段运行示图

文章图片4

UEFI架构图

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

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

参考资料:

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

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

3. 《UEFI Platform Initialization (PI) Specification》

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多