如何知道我是否使用 UEFI 启动?

Bra*_*iam 60 boot grub2 uefi

我一直在搜索,但没有找到一种明显的方法来了解 GRUB 是在系统引导中使用 UEFI,还是 BIOS 兼容模式,或完整的 BIOS。我只找到了Windows 方法。GRUB 或内核引导日志中是否有显示我使用的是 UEFI、EFI 或 BIOS 的内容?

der*_*ert 46

第一种方法:

好的,我启动了我的 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)
?
Run Code Online (Sandbox Code Playgroud)


第二种方法:

$ sudo efibootmgr
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000
Boot0000* debian
Run Code Online (Sandbox Code Playgroud)

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

$ sudo efibootmgr        

EFI variables are not supported on this system.
Run Code Online (Sandbox Code Playgroud)

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

$ efivar -l 
... over 100 lines of output ...
Run Code Online (Sandbox Code Playgroud)


第三种方法:

检查您是否有/boot/efi

$ df -h --local | grep /boot
/dev/sda2       229M   31M  187M  14% /boot
/dev/sda1       120M  250K  119M   1% /boot/efi
Run Code Online (Sandbox Code Playgroud)

该分区内应该是 UEFI 执行启动的文件。

如果使用这些方法中的任何一种,相关条目没有出现,很可能您没有使用 UEFI。

  • `/boot/efi` 只是 `/boot` 中的一些目录,其余的都是已安装的包 - 所有这些都可能存在于以 UEFI 模式安装但现在使用兼容性支持模块启动的系统上。尽管如此,第一个是非常确定的......您可以使用某种偏执选项禁用 efivarfs 的安装。 (6认同)

gar*_*Red 44

如果您使用 UEFI 固件而不是使用 BIOS 固件启动,那么您的系统应该在以下位置提供 EFI NVRAM 变量:

/sys/firmware/efi/vars/
Run Code Online (Sandbox Code Playgroud)

或者

/sys/firmware/efi/efivars/
Run Code Online (Sandbox Code Playgroud)

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

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

/sys/firmware/efi
Run Code Online (Sandbox Code Playgroud)

使用 BIOS 启动时丢失,这更容易检查。

  • 什么是“变量不可用”?检查里面没有文件夹就足够了:/sys/firmware/ 名为“efi”? (3认同)