2024年3月21日发(作者:)
前言:
微软最新操作系统Windows8的“2秒启动”功能相信给了大家很深刻的印象。想知道Window 8
的“2秒启动”是怎么实现的吗?最重要的秘密就是EFI(扩展固件接口)。EFI是IBM-PC架构BIOS
的接班人,目前大量的软硬件和主流BIOS厂商都已经支持EFI。学习BIOS和EFI基础知识非常
有必要,更多详细信息请看这里:
(注意本文并未区分EFI和UEFI。)
想要认识EFI,首先应该了解BIOS。
BIOS(维基百科:/wiki/BIOS)
BIOS来由
BIOS是CP/M操作系统一部分。CP/M是IBM X86(intel 8080/85)微型计算机上最早的操作系统,
由Digital Research Inc公司的Gary Kildall领导,微软的PC-DOS系统基于CP/M开发。BIOS
主要功能是屏蔽底层硬件细节,为操作系统提供统一固件接口。
BIOS主要功能
• 硬件自检
按下电源键自动重置CPU寄存器,CPU从CMOS芯片加载BIOS系统,BIOS系统系统硬件(通
常就是进入BIOS配置页面之前,在屏幕上所看到的信息)的检测。
• 硬件配置
进入BIOS配置页面,完成硬件参数配置(比如CPU超频,CPU虚拟化功能开启,芯片组和
硬件设备相关功能开启等)。
• 引导操作系统
BIOS读取加载位于启动磁盘MBR里面的boot loader,由boot loader完成操作系统引导。
BIOS主要厂商:
Phoenix,AMI,Insyde,Byosoft
传统BIOS缺点:
• 16位寻址
传统BIOS最大的缺点就是16位寻址模式,16位寻址最大支持1MB内存,远远小于现有主
流计算机内存大小。CPU出于兼容性考虑,在BIOS引导过程中只能运行在实模式。
• 硬件扩展性不好
由于BIOS有限的寻址空间。硬件厂商采用汇编语言编程驱动,对代码大小要求很高,功能
实现非常有限。在BIOS引导过程中只能完成硬件部分初始化,完整的驱动只能安装在操作
系统里面,由操作系统完成硬件初始化和配置。
• 磁盘寻址
BIOS通过MBR方式完成磁盘寻址,然后将控制权交给boot loader完成操作系统引导。MBR
最大支持4个主分区,每个分区最大大小2TB;这样一定层度上限制大容量磁盘的普及。
EFI(维基百科:/wiki/Unified_Extensible_Firmware_Interface)
EFI产生历史背景:
Intel开发,1998年发布,专门用在安腾(IA64)处理器上,替换BIOS。所有HP-UX机器都是
使用EFI固件接口。UEFI是第二个版本,2005年intel联合BIOS厂商、软硬件厂商建立,用来
替换X86、X86_64、IA64架构上面的BIOS。
EFI架构介绍:
1、基于EFI的IBM-PC架构图
EFI负责管理硬件设备,驱动可以安装在EFI下面。操作系统不需要直接安装硬件驱动,
直接从EFI调用接口访问。这种框架下,使得硬件厂商一份驱动可以在所有操作系统上
面使用。
2、基于EFI的IBM-PC架构启动流程
传统BIOS启动流程是:设备加电->BIOS初始化/自检->boot loader引导->OS启动。
EFI启动流程如下(参考下图 ):
首先EFI初始化,EFI平台加载,设备驱动与EFI应用程序加载,boot manager启动,
OS loader启动,OS启动。
由于EFI框架比BIOS要大得多,其启动过程也比BIOS要复杂。于BIOS最大的区别就
是EFI首先需要EBC虚拟机,然后再启动设备驱动和EFI应用程序,最后通过EFI boot
manager加载操作系统引导程序。
EFI程序使用EBC (EFI byte code) 编写而不是汇编,EBC是一种类似C的语言。所有
EBC都通过EBC虚拟机解释运行。
EFI的boot manager使用GPT(guid partition table)替换MBR(mater boot record)
分区格式,但是同时兼容MBR。GPT解决BIOS下小于2TB寻址限制。GPT详细资料可以
参考:
/wiki/GUID_Partition_Table,MBR相关资料可以参考:
/wiki/Master_boot_record。
GPT分区自身并不存放OS引导程序,EFI单独在磁盘上面创建一个分区用来存储OS引
导程序,这个分区又叫system partion table,使用的FAT32文件系统格式。所有EFI
的boot manager自身已经集成fat32文件系统访问功能。
3、EFI主要组成部分
EFI整体框架模型参考下图。


发布评论