在 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模式启动

编源视界