有没有办法知道您所使用的系统是 BIOS 还是 UEFI?

有没有办法知道您所使用的系统是 BIOS 还是 UEFI?

有没有办法从运行的系统中猜测您是否有 BIOS 或 UEFI?如果是,那么怎么做?我正在运行 Debian 作为我的主要操作系统。

如果没有,如果我进入 BIOS 或 UEFI 菜单,是否有办法检查哪种方式有效?这是在联想 T 系列 T-440 笔记本电脑上。

答案1

在大多数 Linux 发行版中,最简单的方法是检查是否存在名为的目录/sys/firmware/efi

$ ls -F /sys/firmware
acpi/  efi/  memmap/

如果它存在,如本例所示,则说明您已在 EFI 模式下启动。如果它不存在,则说明您已大概在 BIOS 模式下启动;但是,有方法可以在 EFI 模式下启动并且不包含此目录。这些方法通常涉及罕见的配置或将启动选项传递给内核以禁用 EFI 支持。

如果您认为其中一个问题可能在起作用,则可以使用 检查内核环形缓冲区dmesg,并搜索包含字符串的行EFI(或efi,对于某些行):

$ dmesg | grep -i efi
[    0.000000] Command line: \vmlinuz-3.13.0-65-generic.efi.signed ro root=/dev/mapper/louiswu-trusty_crypt  quiet splash  initrd=\initrd.img-3.13.0-65-generic
[    0.000000] efi: EFI v2.31 by INSYDE Corp.
[    0.000000] efi:  ACPI=0x9cffe000  ACPI 2.0=0x9cffe014  SMBIOS=0x9cebef98 
[    0.000000] efi: mem00: type=3, attr=0xf, range=[0x0000000000000000-0x0000000000001000) (0MB)
[    0.000000] efi: mem01: type=2, attr=0xf, range=[0x0000000000001000-0x0000000000007000) (0MB)
...
[    0.950130] efifb: probing for efifb
[    0.951549] efifb: framebuffer at 0xa0000000, mapped to 0xffffc90010f00000, using 8100k, total 8100k
[    0.951551] efifb: mode is 1920x1080x32, linelength=7680, pages=1
[    0.951552] efifb: scrolling: redraw
[    0.951554] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.963414] fb0: EFI VGA frame buffer device
[    1.033729] EFI Variables Facility v0.08 2004-May-17
[    1.145930] fb: conflicting fb hw usage inteldrmfb vs EFI VGA - removing generic driver
[    1.911331] tsc: Refined TSC clocksource calibration: 2394.456 MHz

解析起来可能有点棘手,因为即使在基于 BIOS 的计算机上,您也可能会发现几行“EFI”,尤其是当固件实际上是 EFI 但使用 CSM/旧版支持在 BIOS 模式下启动时。不过,EFI 模式启动将有许多类似于上面显示的行,特别是一长串行efi: mem##。(为了简洁起见,我在此示例中将其缩减为只有两行。)

这种方法的一个问题是内核环形缓冲区的大小有限,随着越来越多的消息被记录到其中,旧消息可能会消失。因此,如果计算机已经运行了很长时间,所有相关的 EFI 消息都可能丢失。

还有一点:你的问题有点模棱两可——不太清楚你是否想发现你处于什么模式目前正在运行或者你的硬件是什么有能力做。到目前为止,我都假设了这个问题的答案。如果您想了解硬件的功能,那么前面的测试可能会有所帮助;如果您已在 EFI 模式下启动,那么您几乎肯定拥有 EFI 固件。(可以使用 DUET 或 Clover 在旧式 BIOS 上运行 EFI,但这些配置非常罕见,需要花费大量精力进行设置,因此如果您这样做了,您可能会知道,至少在您管理的计算机上。)但是,如果您发现您已在 BIOS 模式下启动,则您仍然可能拥有 EFI。如果您认为是这种情况,则只需仔细查看固件设置实用程序的选项以寻找线索。特别查找带有术语“EFI”、“UEFI”、“CSM”或“传统启动”的任何内容;这些术语通常都表明固件是 EFI。最后两个表示它提供了 CSM 来支持 BIOS 模式启动。大多数 EFI 都提供 CSM,但也有少数(尤其是平板电脑等低功耗机器)不提供。计算机的年龄也可能很重要。2011 年中期及以后推出的大多数计算机都提供 EFI,在此之前出售的少数计算机也提供 EFI。所有基于 Intel 的 Mac 也都使用 EFI。不过,日期测试并不完美;我于 2007 年左右购买了一台基于 EFI 的机器,并于 2014 年购买了一台基于 BIOS 的计算机,这只是一个例子。

答案2

嗯,我不熟悉基于 Linux 的操作系统,但您随时可以转到 BIOS,并在“高级”(如果存在)或“安全”选项卡中检查该信息:通常是一个设置,您可以将其值设置为 UEFI 启动或传统支持。

相关内容