判断系统是BIOS还是UEFI启动方式

判断系统是BIOS还是UEFI启动方式

判断你的 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"

结果一目了然!

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注