UEFI BIOS实现原理与结构分析
作者:***
来源:《电子技术与软件工程》2015年第20期
摘 要
文章简单介绍了传统BIOS的实现方法、发展过程和存在的问题,通过对比传统BIOS和UEFI BIOS的特点,详细叙述了UEFI BIOS的实现原理和技术优势,较为深入地分析了UEFI BIOS的模块化结构。
【关键词】基本输入输出系统 legacy BIOS 统一可扩展固件接口 UEFI BIOS UEFI结构分析
1 传统BIOS概述
基本输入输出系统(BIOS,Basic Input Output System)是计算机系统中连接软、硬件的关键组件,一般存储在非易失性存储单元中,它为计算机提供最底层的、最直接的硬件设置
和控制,具体地执行软件需要硬件提供的服务。BIOS保存着计算机最重要的基本输入输出程序、开机自检程序和系统启动程序,主要负责检测、初始化和配置硬件并对操作系统进行引导。BIOS作为硬件与操作系统之间的“中间件”,为操作系统和应用程序提供统一的访问硬件资源的接口,解决了可能因硬件变动带来的操作系统修改与软硬件兼容问题,用户还能通过BIOS对各个硬件的电气特性作初始化或工作参数的设置。
随着技术的发展,硬件系统变得越来越复杂,对BIOS的要求也越来越高,用户期待计算机能具有更便捷的管理功能,希望在进入系统前就能通过BIOS对系统进行查毒杀毒、备份恢复、远程维护等操作,而传统BIOS(legacy BIOS)的缺陷使得它无法满足用户的需求,其弊端主要表现在以下几个方面:
(1)采用16 位编码、运行在实模式下,受容量限制很难在性能上有所突破;
(2)寻址上限仅有1M,随着64位CPU的普及,其寻址能力不足造成了资源的浪费;
(3)采用汇编语言编码,开发人员编写代码的体验差、过程复杂,编写的BIOS程序扩展性和可维护性差;
(4)会对所有可识别的挂载设备加载驱动,因此减慢了系统的启动速度。
在这样的背景下,新一代的BIOS技术EFI BIOS应需而生。
2 UEFI BIOS的特点
针对传统BIOS的诸多弊端,2000年,Intel推出可扩展固件接口(EFI,Extensible Firmware Interface)规范;2005年,统一的可扩展固定接口(UEFI,Unified Extensible Firmware Interface)论坛成立。UEFI推出之前,所有平台的BIOS都是私有的,而UEFI属于开源,并且与传统BIOS不同的是,UEFI 为BIOS提供了标准化的接口规范,相比于传统BIOS,它具有以下特点:
(1)支持32/64位版本,具有更大寻址空间,适用不同的CPU架构,具有更好的兼容性;
(2)使用模块化设计和C语言编写代码编写驱动和程序,比传统BIOS更容易实现容、纠错,有效缩短了系统研发时间;
(3)定义了接口标准却没有限制开发方法,方便OEM厂商实现产品差异化,降低了核心代码与驱动之间的耦合度,具有更好的可扩展性和可移植性;
(4)内置图形驱动,支持从除Flash ROM之外的位置加载外部设备;
(5)通过UEFI shell为用户提供了一个命令行处理环境(命令解析器),用户可以通过UEFI shell导入用户自定义的驱动和应用程序且不影响固件核心程序。通过自定义的驱动和应用程序,用户可以进行硬件检测、远程引导及配置,可以脱离操作系统进行启动和磁盘管理,有效提升了系统引导速度,增强了计算机系统的扩展性。
3 UEFI结构分析
Intel® EFI 平台创新架构(The Intel® Platform Innovation Framework for EFI)是基于EFI的完整的平台固件解决方案,它是模块化的层次模型,由硬件层、预EFI基础(Pre-EFI-Foundation)、EFI和EFI系统装载器(EFI OS Loader)、预启动应用(Pre-boot Application)组成。其中,预EFI基础包括协议结构、平台驱动、框架驱动以及兼容支持模块等模块, EFI则像是被固化在主板上的一套微型OS。协议结构负责与硬件直接交互,EFI
对硬件参数的定义通过协议结构进行传递。在实际执行时,UEFI在系统启动后通过协议架构将参数传送给硬件确定工作状态;平台驱动和框架驱动是UEFI扩展功能运行的基础,它们为EFI的实际执行提供完整的支撑;兼容支持模块可以在16位实模式下启动计算机以及访问扩展设备的ROM,保证非EFI硬件也能在EFI平台中兼容使用;UEFI OS Loader相当于UEFI的操作系统部分,负责引导UEFI系统本身或引导Windows等操作系统的启动;Pre-boot Application相当于扩展的应用程序部分。springboot原理和机制
硬件平台和OS之间是采用了EFI技术的固件UEFI。UEFI 降低了OS对硬件平台的依赖,在要进行扩展时只需在框架中加入相应的功能模块,并不会对OS的引导产生影响。UEFI固件分为处理器抽象层PAL、系统抽象层SAL和可扩展固件接口三层,EFI驱动、应用程序和OS通过启动时服务(Boot Service)和运行时服务(Runtime Service)对资源进行管理与调用,其他模块调用内核提供的服务。
4 UEFI存在的问题
为了实现更多的扩展功能,UEFI需要额外的存储空间,因此UEFI BIOS不再被存放在主板的只读存储器中,而是在硬盘中特别划分出一块FAT32格式的扇区ESP(EFI System P
artition,EFI系统分区)用于存放UEFI相关的各类数据。ESP主要用于存放EFI驱动和应用程序,但不仅硬盘可能发生物理损坏,分区中的驱动和应用程序文件也存在被病毒或木马篡改或删除的风险,所以UEFI比传统BIOS存在更大的安全隐患,而如何在UEFI系统中确认EFI驱动和应用程序的安全性,将是未来UEFI技术研究的一个重要方向。
作者简介
刘挺(1982-),男,江西省上饶市人,现为江西省上饶师范学校讲师,主要从事计算机教学。
作者单位
江西省上饶师范学校 江西省上饶市 334000
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论