判断你的 Linux 系统是使用 BIOS(传统启动) 还是 UEFI(统一可扩展固件接口) 启动,有多种简单可靠的方法。以下是几种常用方式:
✅ 方法一:检查 /sys/firmware/efi 目录(最推荐)
ls /sys/firmware/efi
- 如果目录存在且能列出内容 → 系统是 UEFI 启动
- 如果提示
No such file or directory→ 系统是 BIOS(Legacy)启动
💡 原理:Linux 内核在 UEFI 模式下启动时,会挂载 EFI 固件信息到
/sys/firmware/efi。
✅ 方法二:使用 efibootmgr 命令
sudo efibootmgr
- 如果输出类似以下内容:
BootCurrent: 0001 Timeout: 1 seconds BootOrder: 0001,0002 Boot0001* ubuntu Boot0002* Windows Boot Manager→ 说明系统支持并正在使用 UEFI - 如果报错:
EFI variables are not supported on this system.→ 说明是 BIOS 启动
⚠️ 注意:某些 BIOS 系统即使安装了
efibootmgr也会报错,这是正常现象。
✅ 方法三:查看 /boot 分区是否有 EFI 文件
UEFI 系统通常有一个 FAT32 格式的 EFI 系统分区(ESP),挂载在 /boot/efi 或单独挂载。
mount | grep efi
或
ls /boot/efi/EFI/
- 如果看到类似
ubuntu/,centos/,Microsoft/等子目录 → UEFI - 如果
/boot/efi不存在或为空 → 很可能是 BIOS
✅ 方法四:检查 GRUB 安装位置(辅助判断)
- BIOS 系统:GRUB 安装在 MBR(主引导记录),通常是
/dev/sda - UEFI 系统:GRUB 安装为一个 EFI 应用程序,路径如:
/boot/efi/EFI/ubuntu/grubx64.efi
你可以用以下命令查看:
ls /boot/efi/EFI/*/grub*.efi
如果有输出 → UEFI
✅ 方法五:使用 dmesg 查看内核启动日志
dmesg | grep -i "efi\|bios"
- 出现
EFI v2.xx by ...→ UEFI - 出现
BIOS-provided physical RAM map但无 EFI 信息 → BIOS
示例(UEFI):
[ 0.000000] EFI v2.70 by EDK II
[ 0.000000] efi: ACPI=0x..., SMBIOS=0x...
📌 快速总结表
| 判断方法 | UEFI 系统 | BIOS 系统 |
|---|---|---|
ls /sys/firmware/efi | ✅ 存在 | ❌ 不存在 |
efibootmgr | ✅ 正常输出 | ❌ 报错 |
ls /boot/efi/EFI/ | ✅ 有内容 | ❌ 无或不存在 |
| 启动模式 | 使用 .efi 文件 | 使用 MBR + boot sector |
💡 额外提示
- 虚拟机用户:VMware、VirtualBox、QEMU/KVM 默认可能使用 BIOS,但可以手动切换为 UEFI(需启用 OVMF)。
- 双启动系统(Windows + Linux):Windows 自 Win8 起强制 UEFI,因此这类机器几乎都是 UEFI。
- 云服务器(AWS EC2、阿里云等):大多数现代实例默认使用 UEFI(尤其是基于 Nitro、AEP 等新平台的)。
✅ 推荐操作:
直接运行这个命令即可快速判断:
[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS"
结果一目了然!


发表回复