Linux如何判断系统是以BIOS还是UEFI模式启动

在 Linux 系统排查启动、分区、引导修复或安装双系统时,经常需要先确认当前系统是通过传统 BIOS 模式启动,还是通过 UEFI 模式启动。两种启动方式对应的引导结构不同,例如 UEFI 通常会使用 EFI System Partition(ESP),而传统 BIOS 启动则更多依赖 MBR 或兼容模式。

最简单、可靠的判断方式,是检查系统中是否存在 /sys/firmware/efi 目录。

推荐命令

在 Linux 命令行中执行:

[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

如果当前系统是以 UEFI 模式启动,输出结果如下:

UEFI

如果当前系统是以传统 BIOS 模式启动,输出结果如下:

BIOS

命令说明

这条命令由三部分组成:

[ -d /sys/firmware/efi ]

用于判断 /sys/firmware/efi 是否是一个存在的目录。

&& echo UEFI

如果目录存在,说明当前内核检测到了 EFI 固件接口,因此系统是以 UEFI 模式启动。

|| echo BIOS

如果目录不存在,则通常表示当前系统是以传统 BIOS 或兼容模式启动。

为什么可以通过这个目录判断

/sys/firmware/efi 是 Linux 内核在 UEFI 启动环境下暴露出来的 sysfs 接口。系统只有在通过 UEFI 固件启动,并且内核成功获取到 EFI 运行时服务信息时,才会创建这个目录。

因此,这个目录是否存在,可以作为判断当前启动模式的直接依据:

  • 存在 /sys/firmware/efi:UEFI 启动
  • 不存在 /sys/firmware/efi:传统 BIOS 启动或兼容模式启动

需要注意的是,主板支持 UEFI 并不代表当前系统一定是以 UEFI 模式启动。有些机器虽然支持 UEFI,但如果开启了 CSM/Legacy 模式,系统仍可能以传统 BIOS 方式启动。判断当前实际启动模式时,应以运行中的系统检测结果为准。

补充验证方式

如果系统安装了 efibootmgr,也可以执行:

efibootmgr

在 UEFI 启动模式下,该命令通常可以显示 EFI 启动项;如果系统不是以 UEFI 模式启动,可能会提示 EFI variables 不可用。

也可以查看目录内容:

ls /sys/firmware/efi

如果能够看到 efivars 等相关内容,一般也说明系统正在使用 UEFI 启动。

未经允许不得转载:编源视界 » Linux如何判断系统是以BIOS还是UEFI模式启动