如何检查运行 Linux 的 EC2 实例使用的是 UEFI 还是 旧版 BIOS 来启动?

上次更新日期:2020 年 10 月 8 日

如何检查运行 Linux 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例使用的是 UEFI 还是旧版 BIOS 来启动?

简短描述

统一可扩展固件接口 (UEFI) 是一种为取代旧版 BIOS 固件而开发的固件规范。UEFI 固件可运行特殊的 EFI 二进制文件,其扩展名为 .efi,用以加载 Boot Loader 或操作系统。EC2 实例传统上使用的是旧版 BIOS 模式来启动。但是,基于 ARM 的 EC2 实例 (a1、c6g、m6g 和 r6g) 则使用的是较新的 UEFI 固件来启动。

有关 UEFI 的更多信息,请参阅 uefi.org 网站上的Unified Extensible Firmware Interface Forum

解决方案

1.    使用 SSH 连接到 EC2 Linux 实例

2.    运行以下命令来验证/sys/firmware/efi目录是否存在。仅当实例使用 UEFI 启动时,此目录才会存在。如果此目录不存在,该命令将返回Legacy BIOS Boot Detected

# [ -d /sys/firmware/efi ] && echo "UEFI Boot Detected" || echo "Legacy BIOS Boot Detected"

来自 m6g 实例的示例输出:

# [ -d /sys/firmware/efi ] && echo "UEFI Boot Detected" || echo "Legacy BIOS Boot Detected"
UEFI Boot Detected

来自非 ARM 实例的示例输出,例如 t2/t3/m4/m5 实例:

# [ -d /sys/firmware/efi ] && echo "UEFI Boot Detected" || echo "Legacy BIOS Boot Detected"
Legacy BIOS Boot Detected

3.    运行以下命令以验证 EFI 是否出现在dmesg输出中:

# dmesg | grep -i "EFI"

示例输出:

[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: EFI v2.70 by EDK II

这篇文章对您有帮助吗?


您是否需要账单或技术支持?