UEFI 固件代码(编译后的二进制文件和源代码)保存在哪里?

UEFI 固件代码(编译后的二进制文件和源代码)保存在哪里?

旧版 BIOS 程序位于 PC 的 ROM 中。 UEFI 的使用比 BIOS 更广泛。
UEFI 代码(编译后的二进制形式)保存在哪里?
UEFI 驱动程序现在是由操作系统提供的吗?
如果有人能给我使用 UEFI 引导程序的简要解释,我将不胜感激。
谢谢你!

ADD(2021.7.13)
这是一年后的更新,包含了自从我发布这个问题以来我所了解的一些知识。我知道 UEFI 固件保存在 EEPROM 中(现在他们将其保存在 EEPROM 中,因为可以就地升级)或闪存(我猜他们使用 NAND 闪存块设备,应该首先加载到 RAM 或 NOR 闪存 - 随机访问可能,可以直接执行)
当我检查ESP(EFI系统分区)/boot/efi目录时,我看到/boot/efi/EFI下有一个目录bootubuntu在这两个目录中,都有一些 .efi 文件,使用file命令我可以看到这些是 PE32 虚拟机的二进制可执行文件(EFI 固件使用独立于 CPU 架构或 ISA 的 PE32 机器代码)。现在很多固件也都在ESP中了。我知道有一些表(我猜是在 ESP 中)用于将固件服务与操作系统运行时或启动时连接起来。

答案1

UEFI 固件位于 ROM 中,就像 BIOS 一样。这就是它“坚定”的原因。 BIOS 和 UEFI 之间的概念差异在于 UEFI 固件更先进(有些人会说“臃肿”)并且能够从文件系统读取文件,而不仅仅是像 BIOS 那样的磁盘块。 UEFI还包含一个执行环境,即它能够从EFI系统分区加载EFI程序并执行它们。

UEFI 固件还可以读取和写入特殊的非易失性变量,这些变量可以指示在启动时加载哪个文件。该文件可以是引导加载程序,也可以直接是 Linux 内核,因为可以编译内核映像以包含 UEFI 应用程序所需的结构。

答案2

编辑(感谢@telcoM指出)

从技术上讲,它是一个固件(BIOS 的升级),因此它应该位于非易失性存储器中(此处为 ROM)

引用维基百科文章EFI系统分区

EFI(可扩展固件接口)系统分区或 ESP 是数据存储设备(通常是硬盘驱动器或固态驱动器)上的分区,由遵循统一可扩展固件接口 (UEFI) 的计算机使用。当计算机启动时,UEFI 固件会加载存储在 ESP 上的文件以启动已安装的操作系统和各种实用程序。

我想这会解决你的疑惑,无论如何,请检查一下文章。

相关内容