Linux on UEFI-如何像Windows 8一样重新启动到UEFI设置屏幕?


33

makeuseof.com解释说,Windows 8认证的硬件具有一种进入UEFI设置屏幕的新方法(等效于BIOS)。从如何访问Windows 8计算机上的BIOS

在引导过程中,我们不再按某个键来显示BIOS –而是在Windows 8的引导选项菜单中提供了访问BIOS的选项...如果您只是在这里访问计算机的UEFI BIOS,请单击故障排除磁贴。

Linux的Secure Boot的主要开发人员表示,替代OS不能假设旧方法会继续起作用。那么Linux是否也有一种进入UEFI设置的新方法?

我有一个华硕主板。这表明固件的升级版本包含快速启动选项。不利的一面是,该选项可能比现在更难以“公开BIOS”。

我不介意修补。就算这是个坏主意,我也不想冒任何风险进行固件升级(也许不得不将机箱拆开,重新设置,然后再次进行设置)。


或者,如何为Windows 7用户处理此问题?如果他们乐观地选择了快速启动选项,他们如何在需要时再次访问“ BIOS”设置?


该死的。现在我希望我不会选择华硕而不是技嘉来进行新升级
kluka

使用适用于Windows 7的任何设置,它将是默认设置,这将是很好的:)。在UEFI中必须有一种标准的方法来执行此操作,我只是没有发现它在任何地方都被调用过。甚至根本没有快速启动选项的原始固件也相当灵活,因此我不后悔。我们正在查看特定于UEFI的功能;我不会依靠技嘉来实现EFI。我感到周围的问题正与1)USB3接口和2个)USB键盘,其放在一起在原则上是有点令人失望。OTOH,一周后我的新RAM出现故障时,内存测试LED对我很有用。
sourcejedi

1
一个与UEFI的一个问题是,尽管2000页的规范文档,有NO的用户界面问题规范化。固件开发人员可以自由地向用户提供他们认为合适的任何方式来访问其设置实用程序。
罗德·史密斯Rod

文章说,Windows 8最终使用户能够以标准方式访问通常的安装实用程序。因此,Windows认证必须指定一种支持此方法的方法。希望它是UEFI的一部分,而不是未记录的MS扩展。请注意,这不是有关“安全启动”的问题。该问题假设我已经设法安装和引导Linux。
sourcejedi

我最近在我的华擎Z77 Pro3主板上运行Windows 8,只是最近在UEFI设置中实现了此“超快速启动”选项。华擎为我提供了一个实用工具,它位于我的托盘栏中,可以按一下以访问UEFI设置。CMOS清除功能将重置快速启动选项,因此您随时可以尝试一下。我的vBIOS不允许此设置,因为它不支持GOP,因此我没有机会试用。我不具备对Linux,只有Windows 8类似的软件
斯蒂恩舒特

Answers:


39

在使用systemd的现代Linux发行版上,您可以使用以下方法直接进入“固件设置”菜单:

systemctl reboot --firmware-setup

文档:https : //www.freedesktop.org/software/systemd/man/systemctl.html#--firmware-setup


1
呵呵,那文档有点简洁。看起来不错-并非特定于给定的启动管理器。遗憾的是,没有独立的工具,但我对systemd没有任何反对。 github.com/systemd/systemd/blob/…–
sourcejedi

1
另请参见此Unix.SE答案。使用时要非常小心efivar,我设法设法删除了该8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications变量,可能是通过将空数据传递给efivar程序来实现的。现在,我必须找到一种重新创建此文件的方法,如果没有该文件,systemctl reboot --firmware-setup程序将无法正常工作。
Lekensteyn '16

抱歉听到您的麻烦。我印象深刻的是,将变量设置为0很好(从此评论github.com/systemd/systemd/blob/…),尽管相同的代码表明systemd不在乎是否删除了变量。
sourcejedi

1
这似乎可以重新创建该变量,但是在重新引导后它会丢失:(printf '\7\0\0\0''\0\0\0\0\0\0\0\0' > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c基于firmware.intel.com/blog/accessing-uefi-variables-linux和我之前转储的内容)。请注意,您rm ...需要chattr -i ...先删除它(有关安全措施rm -rf /)。
Lekensteyn '16

1
@sourcejedi Arch Linux随systemd 230一起提供。我终于设法找回了我的变量。由于某种原因,通过efivars创建变量的结果导致OsIndications-89efde67-ffcd-12de-ab01-01efff012389GUID不同。引导到UEFI Shell后,我将调用命令setvar OsIndications -nv -bs -rt =0000000000000000以在非易失性存储中设置OsIndications变量,以用于引导服务和运行时访问表示64位数字(0)的十六进制序列。
Lekensteyn

4

我不确定Windows 8如何做到这一点,但是我可以猜测它利用了用于启动选项的UEFI变量。

您可以使用efibootmgr来确定各种引导变量的含义。在我的系统上,Boot0000是Setup,因此使用efibootmgr -n 0应该会导致系统在下次引导时引导进入setup。


谢谢。我现在尝试在当前的BIOS上进行UEFI引导。Boot0000似乎被正常的启动项之一占用。(我也意识到我误读了发行说明,因此没有理由指望新版本会更快。哦:)。
sourcejedi 2013年

@sourcejedi固件的快速启动选项实际上可能会启动1或2秒钟,而超快速启动可能会再刮1至2秒钟:unix.stackexchange.com/questions/149761/…–
Pro Backup

3

我尝试用Ubuntu 12.04进行EFI引导,并找到了我自己问题的答案。

(我尚未升级固件。我最初误读了发行说明-可能不会更快)。

从grub-efi引导菜单输入固件设置

efibootmgr我似乎不支持重新启动到固件设置。但是grub-efi确实如此。它可以在GRUB引导菜单中为固件设置创建一个条目。

您可以通过按住Shift键“在启动过程中尽早”来进入GRUB启动菜单。在键盘上的NumLock指示灯打开后,我立即将其按下,这对我有用。

如果您好奇的话,我也查看了命令:“ fwsetup”。也就是说,您可以进入GRUB菜单,按照屏幕上的说明切换到命令行,然后键入“ fwsetup”并按回车键。

如果您从头开始安装EFI,我相信菜单项将自动创建。我没有安装为EFI,这意味着我不得不踢它(请参阅下面的第4步)。

从BIOS-GPT引导转换为UEFI-GPT引导而不刻录EFI引导CD?

编辑:本节可能在某些系统上工作。但是,我现在认为它依赖于UEFI标准不包含的额外行为。 有一天我会弄清楚这里发生了什么。

我正在将现有安装转换为EFI,而没有启用EFI的启动CD。有人认为这是不可能的。诚然,有一些令人困惑的警告消息。我看看发生了什么事。 如果您目前可以输入固件设置,那还不算太糟。

困难的部分是您可能仍在使用MBR分区表,并且几乎可以肯定需要将其转换为GPT。我不会介绍从MBR到GPT的转换。分区总是有点危险。 gdisk可以转换,但是有很多麻烦的地方。我还没有在这里列出全部。但是,对于其中一个,您可能需要缩小最后一个分区,以为磁盘末尾GPT腾出空间。如果安装了分区,则无法执行此操作,因此需要使用引导CD。(我还进行了转换,以确保在尝试UEFI-GPT之前可以从BIOS-GPT引导,这涉及到必须创建另一种引导分区。)

假设您已设置GPT:

  1. 安装grub-efi。这删除了grub-pc,并使其停止工作。(grub-efi在删除后实际上仍然可以正常工作!)。Fedora似乎有点不同。我只在Ubuntu上尝试过。在安装过程中,您将看到有关无法访问EFI变量的错误,这是因为您没有通过EFI引导。
  2. 关掉。
  3. 打开。确保您通过EFI引导!这是与系统有关且令人担忧的部分。我的系统刚开始默认使用MBR引导,所以我从GRUB看到了一个可怕的错误-但这是来自旧的grub-pc。在我的系统上,此时很容易进入固件设置屏幕(见下文),并将引导优先级更改为“ ubuntu”(这是通过EFI引导我的OS的条目)。
  4. 现在,您可以重做grub安装(grub-installgrub2-installFedora上的安装),它不会显示任何错误。而现在,运行update-grub(或者grub2-mkconfig -o /boot/grub/grub.cfg,在Fedora)将进入固件设置创建菜单项。

在我的ASUS系统上进入固件设置/启动菜单

免责声明:这不是最新的固件/板。您的ASUS系统的行为可能与我的不同。

我当前的ASUS固件会在“启动配置”更改时发出通知-例如,当我安装grub-efi时。有文字说,如果您查看初始的“ EZ设置”屏幕,它将被更改。而且,当它检测到这种变化时,可以更轻松地进入设置屏幕。它的作用是显示启动屏幕,并显示“按DEL进入设置”几秒钟。(如果启用了“快速启动”选项,则通常会跳过初始屏幕)。

我认为也可以通过在重新启动之前关闭系统电源并拔出电源插头一分钟左右的时间来触发启动屏幕。

在当前固件上,即使没有启动画面,也可以在启动过程中通过闪动DEL键进入固件设置。 但是,这是在固件中启用键盘支持的条件。

可以在引导过程中将固件切换为不探测键盘,这可以加快速度。我想这是下一个要尝试的实验,现在,我对这种EFI东西更有信心!(这似乎也可能会取消GRUB引导菜单中的键盘支持。但是我仍然应该能够使用grub-set-default,以便GRUB引导fwsetup条目并以这种方式恢复)。


0

在@Lekensteyn的答案的基础上,我制作了一个UI快捷方式(如果您的环境中仍然有其中一个,则在“管理”菜单中)。如果您的键盘直到POST之后似乎都无法工作,则很有用。

/usr/share/applications/uefi-reboot.desktop

[Desktop Entry]
Name=UEFI Firmware Setup (Reboot)
Comment=Access the motherboard configuration utility
Exec=systemctl reboot --firmware-setup
Icon=system-restart
Terminal=false
Type=Application
Categories=System;Settings;
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.