学好UEFI,
实现从工程师到架构师的跨越
2024 / 01 / 19
统一可扩展固件接口 UEFI,是由英特尔、微软等众多全球知名 IT企业共同开发、管理与推进的全新一代 BIOS 体系规范,目前作为最先进最完善的固件架构,已占据绝大部分计算机市场。X86 自然是不必多说,Arm产品也是紧随其上,现在,很多成熟的ARM服务器产品都采用了UEFI+ACPI方案,一些ARM移动和桌面产品也在采用UEFI+ACPI方案的路上,看起来形势一片大好。
UEFI之所以能迅速取代传统BIOS,得益于UEFI相对传统BIOS的几大优势。
NO.1
UEFI的开发效率高
传统BIOS开发一般采用汇编语言,代码多是硬件相关的代码。而在UEFI中,绝大部分代码采用C语言编写,UEFI应用程序和驱动甚至可以使用C++编写。UEFI通过固件-操作系统接口(BS和RT服务)为OS和OS加载器屏蔽了底层硬件细节,使得UEFI上层应用可以方便重用。
NO.2
UEFI系统的可扩展性强
UEFI系统的可扩展性体现在两个方面:一是驱动的模块化设计;二是软硬件升级的兼容性。大部分硬件的初始化通过UEFI驱动实现。每个驱动是一个独立的模块,可以包含在固件中,也可以放在设备上,运行时根据需要动态加载。UEFI中每个表、每个Protocol(包括驱动)都有版本号,这使得系统的平滑升级变得简单。
NO.3
UEFI系统的性能更强
相比传统BIOS,UEFI有了很大的性能提升,从启动到进入操作系统的时间大大缩短。性能的提高源于以下几个方面:
UEFI提供了异步操作。基于事件的异步操作,提高了CPU利用率,减少了总的等待时间。
UEFI舍弃了中断这种比较耗时的操作外部设备的方式,仅仅保留了时钟中断。外部设备的操作采用“事件+异步操作”完成。
可伸缩的遍历设备的方式,启动时可以仅仅遍历启动所需的设备,从而加速系统启动。
NO.4
UEFI系统的安全性更高
UEFI的一个重要突破就是其安全方面的考虑。当系统的安全启动功能被打开后,UEFI在执行应用程序和驱动前会先检测程序和驱动的证书,仅当证书被信任时才会执行这个应用程序或驱动。UEFI应用程序和驱动采用PE/COFF格式,其签名放在签名块中。
正因为 UEFI具有这么多优势,Arm支持UEFI自然也就顺理成章了。但目前ARM上的UEFI代码还存在一些问题,对ACPI的支持也不完善,无法自由安装通用操作系统。比如,要在 Arm 硬件上支持 Windows (WoA),目前仍有大量的工作需要做。
那么谁来完成这些工作呢?我在另一篇文章《PC 的下一波浪潮,你准备好了吗?》曾经提到,在上一波 PC 浪潮中,因为我们技术落后、起步较晚,我们已经处于很被动的地位。而在下一波 PC 浪潮(即Arm PC)中,我们再也不能袖手旁观了,我们必须义无反顾地投入到这股洪流中,学习它,体验它,参与到它的成长与壮大的过程中,这样我们才能把握它,引领它。就像马岩松所说:我不是一个旁观者,而是创造者。
这其中就包括学习UEFI,学习它的基本架构、实现方式。学好UEFI,可以加深对计算机系统的理解,可以打通知识壁垒,提高工作效率,最主要的是,可以让你实现从工程师到架构师的跨越。
幸运的是,格蠹科技创始人兼CEO张银奎老师,将在2024年初春推出一期关于UEFI编程的培训,并且已于2024年1月7号举办了一场线上直播,给大家分享了UEFI的前世今生。从与会者人数来看,大家对这个领域还是相当感兴趣的,有很多之前从事这个领域的朋友,也有很多后起之秀。
培训分6节课,都是以实战为主,以下是每节课的内容概要。
#01
UEFI跑起来
要点:下载代码、调整信息输出、构建、熟悉镜像格式、烧录、启动、接收和分析调试信息、进入UEFI图形界面和外壳环境、执行外壳命令。
#02
修改UEFI界面
要点:HII基础、定义表单、定义控件、界面和变量绑定、UEFI的配置机制(PCD)、定义PCD变量保存设置。
#03
编写UEFI应用
——PcdEdit
要点:UEFI模块、模块的基本文件(DSC、DEC、INF)、应用入口、UEFI的包、编写代码、观察和编辑PCD变量、加载和运行UEFI App、调试UEFI App的方法。
#04
开发UEFI驱动
要点:面向对象基础、UEFI Protocol、GUID、函数指针、方法表、操作Protocol的基本函数:打开、寻找、响应。
#05
权力移交——加载OS
要点:Boot Manager、通过UEFI启动Windows、通过UEFI启动grub、动态增加启动项、访问boot loader的原理和方法。
#06
电池出来——与OS配合
要点:电池设备的驱动、UEIF的标准设备、Control Method Battery、ASL、使用ASL定义设备、结构体、字段、实现UEIF的标准方法、通过标准方法报告电池的基本信息和实时状态。
关于课程的更多信息,大家可以点击下方的链接查看:https://mp.weixin.qq.com/s/ZxX0NrSzTogmhJBEJx4kVA
【盛格塾】
正心诚意,格物致知
以人文情怀审视软件,以软件技术改变人生
格友公众号
盛格塾小程序
扫描上方二维码或在微信中搜索“盛格塾”小程序
可以文章和有声读物
往期推荐
在调试器下看WoA
1元学编程2024寒假特惠季
单枪匹马难作战,组合套件发威力——GDK800闪亮登场
温笃丝再婚记