ArchWiki 中 UEFI 部分

ArchWiki
UEFI 是 Unified Extensible Firmware Interface, 统一可扩展固件接口, 是操作系统和固件之间接口的模型。UEFI 提供了启动操作系统或预启动程序的标准环境.

Arch boot process

ArchWiki中相关部分

固件类型

固件是开机时最先执行的程序。

BIOS

Basic Input-Output System, 是系统开启时最先运行的程序 (固件), 大多数情况存储在主板本身的一块闪存内,独立于其他系统存储。

其分区受限制, 在 2010 年起逐渐被 UEFI 替换.

UEFI

其不从主引导记录 (MBR) 中启动任何引导代码.

UEFI 启动过程依赖非易失性随机访问存储器 (NVRAM)

UEFI 会启动 EFI 应用程序,例如 boot loader, bootmanager 和 UEFI Shell等。这些程序通常以文件形式存储在 EFI 系统分区中. 厂商可以将其特定文件存储在 EFI 系统分区的 /EFI/vendor_name 文件夹下.

UEFI 规范通过 Compatibility Support Module, CSM, 来支持 BIOS 引导.

NVRAM

其全称为 Non-volatile random-access memory.

它可以在断电时仍然保存其中的数据.

而 DRAM (dynammic random-access memory) 和 SRAM (static random-access memory) 都需要在连接电源的情况下.

Read-only memory device 可以用作存储 system firmware in 嵌入式系统。它们可以保存 initial processor instructions required to bootstrap a computer system.

系统初始化.

系统开启后,会先执行加电自检 (Power-on self-test, POST). 具体见官网。

引导加载程序

Boot loader. 是由计算机固件 (BIOS 或 UEFI) 启动的软件。它负责用想要的内核参数加载内核,并根据配置文件初始化 RAM 磁盘.

文件系统支持是从固件继承的。UEFI 规范要求支持 FAT12, FAT16 和 FAT32 文件系统.

.efi 就是 EFI 应用程序.

内核

内核是操作系统的核心。它运行于一个叫 “内核空间” 的底层上,负责机器硬件和应用程序之间的交流。

UEFI

UEFI 固件架构

UEFI 下的每一个程序,无论它是某个 OS 引导其还是某个内存测试或数据恢复工具,都要兼容于 EFI 固件位数或体系结构。

目前主流的 UEFI 固件都采用 x86_64 EFI 固件。

x86_64 EFI 不能兼容 32 位 EFI 程序.

查看 UEFI 系统位数:

1
$ cat /sys/firmware/efi/fw_platform_size

UEFI 变量

获取变量列表:

1
$ efivar -l

用户空间工具

efibootmgr

UEFI Shell

UEFI Shell 是固件的终端,可用于启动包括引导器的 UEFI 程序.

也可用于采集固件和系统的各种信息.


ArchWiki 中 UEFI 部分
http://example.com/2022/09/03/ArchWiki-中-UEFI-部分/
作者
Jie
发布于
2022年9月3日
许可协议