在现代计算机体系中,了解系统是以统一的可扩展固件接口(UEFI)还是传统的传统输入输出系统(BIOS)模式启动,对于系统管理、故障排除以及操作系统安装都至关重要,UEFI 作为 BIOS 的继任者,提供了更快的启动速度、更强的安全性(如安全启动)、对大容量硬盘(超过2TB)的更好支持以及更图形化的配置界面,在 CentOS 系统中,判断其启动模式有多种简便且可靠的方法,本文将详细介绍这些技术手段,并辅以实例说明。
检查 /sys/firmware/efi 目录
这是判断系统是否为 UEFI 启动最直接、最权威的方法,Linux 内核在以 UEFI 模式启动时,会在 sysfs
文件系统中创建一个名为 efi
的特定目录,该目录包含了与 UEFI 运行时服务相关的信息,如果系统是通过传统 BIOS 启动的,此目录将不存在。
操作步骤非常简单,只需在终端中执行以下命令:
ls -l /sys/firmware/efi
可能的输出与解读:
- UEFI 模式: 如果系统是 UEFI 启动,您会看到一个目录列表,内容可能包含
vars
,config
,systab
等文件和子目录。total 0 dr-xr-xr-x. 1 root root 0 Dec 12 10:30 config dr-xr-xr-x. 1 root root 0 Dec 12 10:30 vars dr-xr-xr-x. 1 root root 0 Dec 12 10:30 systab
- BIOS(Legacy)模式: 如果系统是 BIOS 启动,终端将返回如下错误信息:
ls: cannot access '/sys/firmware/efi': No such file or directory
仅凭该目录是否存在,即可做出100%准确的判断。
使用 efibootmgr 命令
efibootmgr
是一个用于管理 UEFI 启动项的工具,它能够与主板的 UEFI 固件进行交互,读取、创建、删除或修改启动顺序,如果一个系统能够成功使用此命令,那么它几乎可以肯定是以 UEFI 模式启动的。
确保该工具已安装,在较新的 CentOS 版本中,可能需要手动安装:
# 对于 CentOS 7/8 sudo yum install efibootmgr # 对于 CentOS Stream/9 sudo dnf install efibootmgr
安装完成后,直接运行命令:
sudo efibootmgr
可能的输出与解读:
- UEFI 模式: 您会看到当前系统的启动项列表,包括
BootOrder
,BootCurrent
,BootXXXX
等信息,每个启动项都有其对应的文件路径(如EFIcentosshim.efi
)。BootCurrent: 0001 Timeout: 1 seconds BootOrder: 0001,0000,0002,0003 Boot0000* EFI DVD/CDROM Boot0001* CentOS Boot0002* EFI Hard Drive Boot0003* Embedded NIC
- BIOS(Legacy)模式: 命令执行后会报错,明确提示 EFI 变量不受支持。
EFI variables are not supported on this system.
分析磁盘分区表类型
虽然这是一种间接方法,但通常也非常有效,UEFI 规范要求系统使用 GUID 分区表(GPT),而传统的 BIOS 模式通常与主引导记录(MBR,也称为 MS-DOS 分区表)关联,通过检查系统启动盘的分区表类型,可以推断出启动模式。
使用 fdisk
命令可以轻松查看磁盘信息:
sudo fdisk -l
可能的输出与解读:
- UEFI 模式: 在输出信息中寻找类似
Disklabel type: gpt
的行,您通常还会看到一个较小的、格式化为 FAT32 的 EFI 系统分区(ESP),其类型标识为EFI System
。 - BIOS(Legacy)模式: 您会看到
Disklabel type: dos
的行,并且可能包含一个“主引导记录”签名。
注意: 这种方法并非绝对,某些 BIOS 系统也可能使用 GPT 分区表,反之亦然,但这种情况较为罕见,它更多作为一种辅助验证手段。
通过 dmesg 内核环缓冲区
系统启动时,内核会记录大量初始化信息,包括固件类型,我们可以通过 dmesg
命令来筛选这些信息。
执行以下命令:
dmesg | grep -i efi
可能的输出与解读:
- UEFI 模式: 如果系统是 UEFI 启动,您会看到包含 “EFI”, “UEFI” 关键字的日志行,
[ 0.000000] EFI v2.70 by American Megatrends [ 0.000000] ACPI: UEFI 0x000000007DC60000 000014 (v01 ALASKA A M I 01072009 AMI)
如果看到了
efi: EFI v...
这样的明确信息,即可确认是 UEFI 模式。 - BIOS(Legacy)模式: 通常不会有任何与 EFI 相关的输出,或者输出非常少且不表明是运行在 UEFI 环境下。
下表小编总结了上述几种方法的对比:
检查方法 | 关键命令 | 可靠性说明 |
---|---|---|
检查 /sys/firmware/efi 目录 | ls -l /sys/firmware/efi | 极高,内核直接提供的信息,是判断的根本依据。 |
使用 efibootmgr 命令 | sudo efibootmgr | 极高,工具直接与 UEFI 运行时服务交互。 |
分析磁盘分区表类型 | sudo fdisk -l | 较高,GPT 分区表与 UEFI 强相关,但非绝对。 |
通过 dmesg 内核环缓冲区 | dmesg | grep -i efi | 较高,启动日志会明确记录固件类型。 |
掌握这些方法后,您可以轻松地在任何 CentOS 系统上准确判断其启动模式,从而为后续的系统维护、双系统安装或性能优化提供关键信息。
相关问答 (FAQs)
我的硬件支持UEFI,但当前正以Legacy(传统BIOS)模式启动,如何切换到UEFI模式?
解答: 要从 Legacy 模式切换到 UEFI 模式,您需要进入计算机的主板设置界面(通常称为 BIOS 或 UEFI Setup),具体步骤如下:
- 重启计算机。
- 在开机自检画面出现时,立即按下特定按键进入设置界面,常见按键包括
Delete
,F2
,F10
,F12
或Esc
,具体取决于您的主板制造商。 - 在设置菜单中,寻找与 “Boot”(启动)、”Boot Mode”(启动模式)或 “CSM” (Compatibility Support Module) 相关的选项。
- 将启动模式从 “Legacy” 或 “CSM Enabled” 修改为 “UEFI” 或 “UEFI Only”。
- 保存设置并退出(通常是按
F10
)。
修改此设置后,可能需要重新安装操作系统才能正常引导,因为以 Legacy 模式安装的系统引导文件与 UEFI 模式不兼容。
为什么我无法使用 efibootmgr
命令?终端提示 “bash: efibootmgr: command not found”。
解答: 这个错误信息表明 efibootmgr
工具没有在您的 CentOS 系统上安装,它不属于默认的最小化安装包集,您需要手动进行安装,根据您的 CentOS 版本,使用对应的包管理器即可:
- 对于 CentOS 7 或 CentOS 8,使用
yum
:sudo yum install efibootmgr
- 对于 CentOS Stream 8/9 或更新的版本,使用
dnf
:sudo dnf install efibootmgr
安装完成后,再次运行
sudo efibootmgr
命令即可,如果安装后运行命令仍然提示 EFI 变量不受支持,那说明您的系统本身就不是 UEFI 启动的。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复