UEFI

来自 阿尔派 Linux
(重定向自 Alpine and UEFI)

统一可扩展固件接口 (UEFI) 是计算机平台固件架构的规范。当计算机开机时,UEFI 实现通常是第一个运行的,在启动操作系统之前。此页面记录了 Alpine Linux 如何与使用 UEFI 固件的设备一起工作。

待办事项:本文档以 PC 为中心 (i686+x86_64) 的角度编写。 非常感谢您帮助使本文档更适用于其他 UEFI 架构,特别是 ARM。


UEFI 的磁盘布局

Alpine Linux 需要一个根分区,但在 UEFI 系统上,还需要一个 EFI 系统分区 (ESP)。EFI 系统分区必须在 \EFI\$bootloader.efi 中包含引导加载程序。 [需要引证]

常规 UEFI 启动有多个可能的启动项列表,存储在 UEFI 配置变量(通常在 NVRAM 中)和与它们一起存储的启动顺序配置变量中。 可以使用 efibootmgr 软件包中提供的 efibootmgr 实用程序查看和编辑这些启动项。

当从本地磁盘启动时,使其工作的正确方法是让启动变量指向 EFI 系统分区 (ESP) 上 \EFI\$bootloader.efi 中特定于供应商的引导加载程序程序,这是一个特殊标记的分区。

建议您的 EFI 系统分区 (ESP) 使用 vfat(即 FAT16 或 FAT32)文件系统格式。根分区以及任何其他分区或 LVM 卷组,可以使用内核能够读取的任何格式。

UEFI/GPT 最小布局

挂载点 分区 分区类型 用途 建议最小大小
/boot 或 /efi 或 /boot/efi /dev/sda1 EFI 系统分区 260 MiB
/ /dev/sda2 Alpine Linux 根系统 操作系统 1–32 GiB

BIOS 布局

BIOS/MBR 最小布局

UEFI 取代了所有 IBM PC 兼容个人电脑启动 ROM 中存在的 BIOS。UEFI 使用 CSM 启动提供与 BIOS 的向后兼容性。

挂载点 分区 分区类型 用途 建议最小大小
/boot /dev/sda1 Boot grub 分区(可选) 100 MiB
/ /dev/sda2 Alpine Linux 根系统 操作系统 1–32 GiB

BIOS/GPT 最小布局

挂载点 分区 分区类型 用途 建议最小大小
/dev/sda1 BIOS 启动分区 8 MiB
/ /dev/sda2 Alpine Linux 根系统 操作系统 1–32 GiB

启动标志和启动分区

UEFI 启动不涉及任何“启动”标志,这只是 BIOS 启动的需要。UEFI 启动完全依赖于 NVRAM 中的启动项。Parted 及其前端在 GPT 上使用“启动”标志来指示分区是 EFI 系统分区。

仅当使用 GRUB 从 GPT 磁盘进行 BIOS 启动时,才需要 BIOS 启动分区。此分区不得格式化为文件系统或挂载。

启动过程

BIOS 启动过程

BIOS 主要支持两种启动方法 - 从软盘的开头加载大约 448 字节的 8088 机器代码,或者从固定 IDE 磁盘的开头加载相同的内容。

BIOS 只能假定一个引导加载程序占据硬盘驱动器的开头。因此,每个操作系统都会用自己的引导加载程序覆盖它。

MBR 无法处理大于 2 TiB (232 × 512 字节) 的磁盘。 因此,使用 MBR 布局无法使用超过 2 TiB 的任何驱动器空间。因此,如果您的启动驱动器为 2TB 或更大,并且您从它启动并使用 BIOS,则必须使用 MBR - 并且您根本无法使用超过该大小的任何空间。

现代主板(大约自 2011 年起)原生使用 UEFI,但大多数可以通过 CSM(兼容性支持模块)模拟 BIOS,以保持对 BIOS 样式启动的支持。

UEFI 启动过程

UEFI 固件可以读取 UDF 或 FAT32 格式的 USB 驱动器或 DVD,并查找文件 /efi/boot/bootx64.efi 并运行它。

UEFI 使用称为 GPT 而不是 MBR 的分区系统,并且需要一个名为“EFI 系统分区” (ESP) 的分区 - 一个 FAT32 分区,引导加载程序应用程序安装到该分区中。

每个操作系统都会将其引导加载程序放在 ESP 中的某个位置,并且以这种方式安装的每个条目都将在固件上的“启动设备”列表中获得自己的列表 - 因此,如果您安装了 MACOSX,您将在重新启动后在 DVD 驱动器和硬盘驱动器旁边看到“MACOSX 启动管理器”作为条目。

安全启动

当设备开机时,安全启动会检查引导加载程序和操作系统的数字签名。如果签名有效并与系统中存储的受信任密钥匹配,则启动过程继续。 否则,安全启动会停止该过程以防止篡改。您可以提供您信任的证书列表,然后固件会强制执行与启动过程相关的所有内容(不仅是引导加载程序,还有操作系统内核本身,以及您的所有设备固件,例如您的 GPU BIOS)都使用受信任的密钥签名。它使用加密校验和和签名。它可以阻止您的系统启动未签名的代码。您可以签署自己的代码,并信任您用于进行签名的证书。

几乎所有新的计算机系统,即每块主板都有一个小的预信任证书列表,其中几乎(总是)包括微软的证书,他们目前允许任何人付费使用这些证书。这是由于微软作为安全启动的证书颁发机构 (CA) 的行为。他们代表其他受信任的组织签署程序/引导加载程序,以便他们的程序可以运行,但需要付出代价。

Alpine Linux 没有一些其他 Linux 发行版(主要是企业相关的)所拥有的证书。这意味着在新计算机系统上,用户必须首先禁用安全启动才能安装 Alpine Linux

提示:在 UEFI 中禁用安全启动固件才能安装 Alpine Linux。有关在安装 Alpine Linux 后启用它的信息,请参阅安全启动页面。

大多数预期在 UEFI 环境中运行的程序都是引导加载程序,但也存在其他程序。还有一些程序用于处理主板制造商的固件更新,这些程序可以在操作系统启动之前运行(例如 fwupdate/fwupd),其他实用程序也可能存在于此。

参见