1.UEFI概述(一)

从我们按下开机键到进入到操作系统之前的系统初始化动作,即是BIOS run的过程。如今操作系统已经从枯燥的文本时代演化到丰富多彩的图形界面,而BIOS却一直延续着枯燥的过程,BIOS设置也一直是单调的蓝底白字格式。BIOS的坚持出于两个原因:1⃣️  外因是BIOS基本能够满足市场需求;2⃣️  内因是BIOS的设计使得BIOS的升级和扩增变得非常困难。

随着64位CPU逐渐取代32位CPU,BIOS越来越不能满足市场需求,这使得UEFI作为BIOS的替代者应运而生。


BIOS全称“基本输入输出系统”(Basic Input/Output System),它是存储子主板ROM里的一组代码。BIOS程序运行在实模式下,是模式下最大的寻址范围是1MB,0xC0000~0xFFFFF保留给BIOS使用。开机后,CPU跳转到0xFFFF0处执行,一般这里是一条跳转指令,跳转到真正的BIOS入口处执行。BIOS POST阶段执行完后,BIOS会将控制权交给引导程序,最终引导进入操作系统。

1.BIOS缺点:

①开发效率低:大部分BIOS代码使用汇编开发,开发效率低;汇编开发的另一个缺点是使得代码与设备的耦合程度太高,代码受硬件变化的影响大;

②性能差:BIOS基本输入输出服务需要通过中断来完成,开销大,并且BIOS没有提供异步工作模式,大量时间消耗在等待时间上;

③功能扩展性差,升级缓慢:BIOS代码采用静态链接,增加硬件功能时,必须将16位代码放置在0xC0000~0xDFFFF区间,初始化时将其设置为约定的中断处理程序。而且BIOS没有提供动态加载设备驱动的方案;

④安全性差:BIOS运行过程中对可执行代码没有安全方面的考虑;

⑤不支持从硬盘2TB以上的地址引导:受限于BIOS硬盘的寻址方式,BIOS硬盘采用32位地址,因而引导扇区的最大逻辑块地址是2的32次方(2TB)。


UEFI全称“统一可扩展固件接口”(Unified Extensible Firmware Interface),定义了操作系统和平台固件之间的接口,它是UEFI Forum发布的一种标准。它是一种标准,没有提供实现。其实现由其他公司或开源组织提供。如Intel公司提供的开源UEFI实现TianoCore和Phoenix公司提供的SecureCore Tiano。

UEFI发端于20世纪90年代中期的安腾处理器。相对于当时流行的IA32(Intel Architecture 32)系统,安腾是一种全新的64位系统,BIOS的限制对于这种64位系统变得不可接受。1998年Intel发起了Intel Boot Initiate项目,后来更名为EFI。2005年,Intel联手微软、AMD、联想等11家公司成立了Unified EFI Forum,负责制定统一的EFI标准。第一个UEFI标准--UEFI2.0在2006年发布。

UEFI提供给系统的的接口包括启动服务(Boot Services)和运行时服务(Runtime Services)。

1.Boot Sevices:

从操作系统加载器(OS Loader)被加载到OS Loader执行ExitBootServices()的这段时间,是从UEFI环境向操作系统过渡的过程。这个过程被称为TSL(Transient System Load)。

在TSL阶段,系统资源通过Boot Service管理,Boot Service提供如下服务

--事件服务:事件是异步操作的基础,有了事件的支持,才可以在UEFI系统内执行并发操作;

--内存管理:主要提供内存的分配与释放,管理系统内存映射;

--Protocol管理:安装与卸载Protocol的服务,以及注册Protocol通知函数的服务;

--Protocol使用类管理:Protocol的打开关闭,查找支持Protocol的控制器;例如要读写某个PCI设备的寄存器,可以通过OpenProtocol服务打开这个设备上的PciIoProtocol,用PciIo->Io.Read()服务可以读取这个设备上的寄存器;

--驱动管理:包括将驱动安装到控制器的connect服务,以及将驱动从控制器上卸载的disconnect服务。例如启动时,我们需要网络支持,则可以通过LoadImage将驱动加载到内存,然后通过connect服务将驱动安装到设备;

--Image管理:包括加载、卸载、启动和退出UEFI应用程序或驱动。

--ExitBootServices服务:用以结束启动服务;

2.Runtime Service:

--时间服务:读取设定时间,读取设定系统从睡眠中唤醒的时间

--读写UEFI系统变量:读取设置系统变量,例如BootOrder用于指定启动顺序,通过这些系统变量可以保存系统配置;

--虚拟内存服务:将物理地址转换为虚拟地址;

--其他服务:包括启动系统的ResetSystem

3.UEFI优点:

--开发效率高:BIOS开发一般采用汇编语言,代码多是硬件相关。而在UEFI中,绝大部分代码采用C语言编写,UEFI应用程序和驱动甚至可以用C++编写。UEFI通过固件-操作系统接口(BS、RT)为OS和OS加载器屏蔽了底层硬件细节,使得UEFI上层应用可以方便重用;

--可扩展:UEFI可扩展性体现在两个方面:一是驱动的模块化设计;二是软硬件升级的兼容性。大部分硬件的初始化通过UEFI驱动实现,每个驱动是一个独立模块,可以包含在固件中,也可以放在设备上,运行时根据需要动态加载;UEFI中每个表、每个Protocol都有版本号,这使得系统的平滑升级变得简单;

--UEFI系统性能:相比Legacy BIOS,系统有了很大提升,从启动到进入操作系统的时间大大缩短。性能提高源于:一、UEFI提供了一步操作,提高了CPU的利用率,减少了总的等待时间;二、UEFI舍弃了中端这种比较耗时的操作系统外部设备的方式,仅仅保留了时钟中断,外部设备的操作采用“时间+异步操作”完成;三、可伸缩的遍历设备的方式,启动时可以仅仅遍历启动所需要的设备,从而加速系统启动;四、系统安全性提高,这是UEFI的一个重要突破。当系统的安全启动设置被打开后,UEFI在执行应用程序和驱动前会先检测程序和驱动的安全证书,仅当安全证书被信任时才会执行这个应用程序或驱动。UEFI应用程序和驱动采用PE/COFF格式,其签名放在签名块中。

4.UEFI启动过程:

UEFI系统启动遵循UEFI平台初始化标准,分为7个阶段:SEC(Security,安全验证)--PEI(Pre-EFI Initialization,EFI前期初始化)--DXE(Driver Execution Environment,驱动执行环境)--BDS(Boot Device Select,启动设备选择)--TSL(Transient System Load,操作系统加载前期)--RT(Runtime,运行时)--AL(系统灾难恢复期)。

前三个阶段是UEFI初始化阶段,DXE阶段结束后,UEFI环境已经准备好。BDS和TSL是操作系统加载器作为UEFI应用程序运行阶段,操作系统调用ExitBootServices()服务后进入RT阶段。

其中我们关注的位SEC、PEI、DXE、BDS四个阶段。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容