如何知道我是否正在使用UEFI引导?


54

我在搜索,但是没有找到一种明显的方法来知道GRUB是在系统引导中使用UEFI,还是在BIOS兼容模式下使用完整的BIOS。我发现只有Windows方法。GRUB或内核启动日志中是否显示某些信息,显示我使用的是UEFI,EFI还是BIOS?


没有时间查找答案,但是最近我也进行了很多UEFI故障排除。该站点对于了解UEFI很有帮助。rodsbooks.com/refind/index.html
0xSheepdog 2014年

1
我并不是故意要冒昧,但是机器的固件要做什么?
ericx

1
@ericx这个问题假装你不知道如何检出它。这就是为什么所有解决方案都可以在引导的系统上完成的原因。
Braiam

Answers:


34

如果使用UEFI固件而不是BIOS固件进行引导,则系统应在以下位置提供EFI NVRAM变量:

/sys/firmware/efi/vars/

要么

/sys/firmware/efi/efivars/

使用BIOS(或UEFI固件的BIOS仿真模式)引导时,这些变量不可用。

实际上,正如@Santropedro指出的那样,路径

/sys/firmware/efi

使用BIOS引导时缺少此属性,这更易于检查。


+1是一种更快,更直接的方法,而不是依赖固件输出的特定字符串或当前启动中可能不直接相关的其他软件包。
underscore_d

3
什么是“变量不可用”?检查其中是否没有文件夹就足够了:/ sys / firmware /称为“ efi”吗?
Santropedro

@Santropedro-看来确实如此。我将编辑帖子。谢谢。
garethTheRed

42

第一种方法:

好的,我启动了UEFI框进行检查。第一条线索,靠近的顶部dmesg。如果通过BIOS引导,则不应显示以下内容:

[    0.000000] efi: EFI v2.31 by American Megatrends
[    0.000000] efi:  ACPI=0xd8769000  ACPI 2.0=0xd8769000  SMBIOS=0xd96d4a98 
[    0.000000] efi: mem00: type=6, attr=0x800000000000000f, range=[0x0000000000000000-0x0000000000001000) (0MB)
⋮


第二种方法:

$ sudo efibootmgr
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000
Boot0000* debian

如果您不是,则应显示以下内容:

$ sudo efibootmgr        

EFI variables are not supported on this system.

请注意,您必须安装efibootmgr软件包。您也可以尝试列出EFI变量:

$ efivar -l 
... over 100 lines of output ...


第三种方法:

检查您是否有/boot/efi

$ df -h --local | grep /boot
/dev/sda2       229M   31M  187M  14% /boot
/dev/sda1       120M  250K  119M   1% /boot/efi

在该分区内应该是UEFI执行以引导的文件。

如果使用这些方法中的任何一种,则相关条目不会出现,很可能是您未使用UEFI。


6
/boot/efi只是其中的某个目录,/boot其余的是已安装的软件包-所有这些软件包都可能存在于以UEFI模式安装的系统上,但现在已通过兼容性支持模块引导。尽管如此,第一个还是很肯定的……您可以使用某种偏执选项来禁用efivarfs的挂载。
mikeserv

@mikeserv /boot/efi是一个安装点,即使与固件相关,我也不确定是否需要安装它。因此,是的,仅存在一个占位符文件夹就意味着几乎没有什么,即使它包含内容,也可能当前不使用这些内容。
underscore_d

1
该解决方案(90个投票)将其/sys/firmware/efi作为可靠的指标来讨论... askubuntu.com/a/162896/479118 –也许这样更可靠?
Frank Nocke
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.