UEFI学习1

本文主要翻译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

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UEFI Shell是一种全新的操作系统环境,在现代计算机上广泛使用。相较于BIOS,UEFI Shell在启动时间和性能方面都有着很大的优势。UEFI Shell有其独特的运行环境,为用户提供了一种类似于操作系统的命令行界面来控制计算机的硬件和软件。 UEFI Shell可以很好的应用于系统调试和维护工作。因为UEFI Shell能够与UEFI BIOS直接进行交互,可以读取和修改UEFI BIOS中的各种变量。这些变量包括了计算机的系统时间、启动磁盘分区信息、设备启用状态等等。所以,当系统出现问题时,可以通过UEFI Shell来获取更多的系统信息、检测硬件故障以及查找系统错误等。 同时,UEFI Shell也支持各种文件系统格式。这使得我们可以在UEFI Shell中查看和管理硬盘分区,从而进行数据备份与还原、系统安装和修复等操作。此外,UEFI Shell还支持各种基本的命令,如文件与目录操作、网络连接管理、进程控制等。这让我们可以在更高效的状态下调试和管理系统。 对于初学者来说,UEFI Shell学习并不是一件容易的事情。因为UEFI Shell的命令和语法都有一定的学习曲线,需要一定的时间和经验去掌握。但是,如果您熟练掌握了UEFI Shell的使用,不仅可以解决常见的操作问题,还可以探究计算机系统的底层运作机理。这对于系统工程师来说尤为重要。 总之,UEFI Shell作为一种新兴的操作系统环境,拥有着广泛的应用场景和巨大的优势,不管是对于初学者还是经验丰富的系统工程师来说,掌握UEFI Shell的各种技术是一个不可或缺的技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值