概述
本文主要翻译wikipedia:https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
统一可扩展固件接口(UEFI)是定义操作系统和平台固件之间的软件接口的规范。UEFI替换了最初出现在所有IBM pc兼容的个人计算机上的基本输入/输出系统(BIOS)固件接口,大多数UEFI固件实现都为BIOS服务提供了遗留支持。UEFI可以支持远程诊断和修复计算机,即使没有安装操作系统。
UEFI要求固件和操作系统加载程序(或内核)大小匹配;例如,64位UEFI固件实现只能加载64位操作系统(OS)引导加载程序或内核。在系统从“引导服务”转换到“运行时服务”之后,操作系统内核接管。此时,如果内核愿意,它可以改变处理器模式,但是这会限制运行时服务的使用(除非内核再次切换回来)。在3.15版本中,Linux内核支持64位内核在运行在x86-64 cpu上的32位UEFI固件实现上启动,UEFI从UEFI引导加载程序切换支持是必需的。UEFI切换协议删除了内核和UEFI引导加载程序之间的UEFI初始化代码,使初始化只由Linux内核的UEFI引导存根.
1、EFI在软件栈中的位置(EFI's position in the software stack)
如上图所示,UEFI介于硬件与操作系统之间。
2、UEFI提供的服务(service)
EFI定义了两种类型的服务:引导服务和运行时服务。只有当固件拥有平台(即它们包括各种设备上的文本和图形控制台,以及总线、块和文件服务。运行时服务仍然可以在操作系统运行时访问;它们包括日期、时间和NVRAM访问等服务。
此外,图形输出协议(GOP)提供有限的运行时服务支持;请参阅下面的图形特性部分。允许操作系统在运行时模式下直接写入GOP提供的framebuffer。然而,在转换到运行时服务模式后,直到加载操作系统图形驱动程序之前,更改视频模式的能力将丢失。
变量服务(Variable services)
UEFI变量提供了一种存储数据的方法,特别是在平台固件和操作系统或UEFI应用程序之间共享的非易失性数据。变量名称空间由GUIDs标识,变量是键/值对。例如,变量可用于在NVRAM中保存崩溃消息,以便操作系统在重启后检索。
时间服务(Time services)
UEFI提供设备独立的时间服务。时间服务包括对时区和夏令时字段的支持,这些字段允许将硬件实时时钟设置为本地时间或UTC。在使用PC-AT - real-time时钟的机器上,默认情况下,硬件时钟仍然必须设置为本地时间,以便与基于bios的Windows兼容,除非使用最新版本,并且在Windows注册表中设置一个条目以指示UTC的使用。
3、应用(Applications)
除了装载操作系统,UEFI还可以运行UEFI应用程序,这些应用程序作为文件驻留在EFI系统分区上。它们可以通过UEFI命令shell、固件的引导管理器或其他UEFI应用程序执行。UEFI应用程序可以独立于系统制造商开发和安装。
UEFI应用程序的一种类型是操作系统加载器,如GRUB、rEFInd、Gummiboot和Windows Boot Manager;它将操作系统文件加载到内存中并执行它。另外,操作系统加载程序可以提供用户界面,允许选择另一个UEFI应用程序运行。像UEFI shell这样的实用程序也是UEFI应用程序。
4、协议(Protocols)
EFI将协议定义为用于两个二进制模块之间通信的一组软件接口。所有EFI驱动程序都必须通过协议向其他人提供服务。
5、设备驱动程序(Device drivers)
除了标准的特定于处理器体系结构的设备驱动程序之外,EFI还提供了存储在内存中的独立于处理器的设备驱动程序,它们被存储为EFI字节码或EBC。系统固件为EBC映像提供了解释器。从这个意义上说,EBC类似于Open Firmware,即基于powerpc的苹果Macintosh和Sun Microsystems SPARC等计算机中使用的与硬件无关的固件。
某些设备类型的特定于体系结构的(非EFI字节码)EFI驱动程序可以有供操作系统使用的接口。这使得操作系统能够依赖于EFI驱动程序在加载操作系统特定驱动程序之前执行基本的图形和网络功能。
6、图形特征(Graphics features)
EFI规范定义了一个UGA(通用图形适配器)协议,作为一种支持独立于设备的图形的方式。UEFI没有包含UGA,而是用GOP(图形输出协议)代替了它,明确的目标是消除VGA硬件的依赖性。两者相似。
UEFI 2.1定义了一个“人工接口基础结构”(HII)来管理用户输入、本地化字符串、字体和表单(在HTML意义上)。这使原始设备制造商(oem)或独立BIOS供应商(IBVs)能够为预引导配置设计图形界面;UEFI本身并不定义用户界面。
大多数早期UEFI固件实现都是基于控制台的,但早在2007年,一些实现就以图形用户界面为特色。
7、EFI系统分区(EFI System partition)
EFI系统分区,通常缩写为ESP,是一个数据存储设备分区,在遵循UEFI规范的计算机中使用。当计算机启动时,UEFI固件可以访问它,它存储UEFI应用程序和这些应用程序需要运行的文件,包括操作系统内核。支持的分区表方案包括MBR和GPT,以及光盘上的El Torito卷。UEFI定义了一个特定的文件系统版本,这是维护的一部分UEFI规范和独立于原来的规范,包括对esp FAT32文件系统的一个变体,和FAT16 FAT12文件系统。ESP还为引导扇区提供了空间,作为向BIOS兼容的一部分
UEFI学习2:https://blog.csdn.net/qq_28629687/article/details/81289609
最后
以上就是呆萌红牛为你收集整理的UEFI学习1的全部内容,希望文章能够帮你解决UEFI学习1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复