uEFI统一可扩展固件接口
uEFI = universal Extensible Firmware Interface (统一可扩展固件接口) ,是一个可扩展的,标准化的统一固件接口规范,它采用模块化、动态链接和C语言风格的常数堆栈传递方式来构建系统,摆脱了传统BIOS复杂的16位汇编代码。
由于EFI确实具有足够的前瞻性,产业间成立了UEFI (Unified EFI)论坛,共同开发适用于各平台的PC固件标准。基本上,UEFI是基于原有的EFI 1.10为基础,正在进行UEFI 2.0的制定工作。
UEFI BIOS内建功能的多样化,它的数据体积自然是不容小视,再加上扩展性的需要,UEFI BIOS将不再是存放在主板上的只读存储器中,而是在硬盘划分出一块FAT 32格式的扇区(ESP;UEFI BIOS System Partition),来存放UEFI BIOS的相关数据。
UEFI的最大特点,采用模块化设计的UEFI BIOS,基本上区分成硬件控制和OS软件两大模块,前者只要是相同版本的UEFI BIOS,就会有相同的功能,后者则是给厂商用C语言撰写应用功能的开放接口。通过这个开放接口,厂商就可以自行编写出各种功能的插件(Plug- in),像是类似Ghost的系统备份/还原插件、类似IE的浏览器插件、类似Anti-Virus的防病毒插件等功能来增加自家产品的功能特色。从前面的内容来看,UEFI BIOS完全不同于传统BIOS的样貌,几乎就是一个专用的微型操作系统。而随着UEFI BIOS内建功能的多样化,它的数据体积自然是不容小视,再加上扩展性的需要,UEFI BIOS将不再是存放在主板上的只读存储器中,而是在硬盘划分出一块FAT 32格式的扇区(ESP;UEFI BIOS System Partition),来存放UEFI BIOS的相关数据。
可以说,UEFI系统的固件就相当于一个简单的操作系统,在开机程序完成后,使用者可选择执行UEFI Shell当做命令接口,或指定任一其它操作系统。这种情形就有点像早期的DOS一样,Windows只是另一个使用者接口系统。包括AMI和 Insyde,现在的UEFI BIOS都是以Intel所撰写的UEFI功能核心Framework(开发代号为Tiano)为基础,再加挂其编写的架构模块。甚至于微软的下一代操作系统Longhorn,也在IDF中宣布支持UEFI,按照微软的计划,未来所有新的操作系统都将支持UEFI。在模块化分工的概念下,加入一个新的中介接口的确能将系统变动带来的其它改变减至最少。
因为UEFI的这种架构特性,所以很多人认为在UEFI成为电脑固件后,对BIOS厂商和微软都是威胁----BIOS业者将不再有绝对的主控地位,而用户在开机后执行系统的选择性增加,就不见得一定得依赖微软的Windows了。不过, UEFI BIOS也象CSS一样存在不少缺点。比如真正的UEFI是在硬盘中隔离出一个区域来作为存储空间的,如果硬盘这一小块空间出现物理损坏,后果怎样?由于 UEFI更像是种软件,所以对病毒、外部程序侵入的防御能力就比传统的BIOS削弱了不少。再说,现在会用C语言来编程的人不少,可能很多人都可以很容易破译UEFI,这对UEFI的安全性提出了更高的要求。