是否有可能绕过 EFI shell 中的 5 秒延迟?

是否有可能绕过 EFI shell 中的 5 秒延迟?

由于我的硬件配置不寻常(见显卡在 Mac 上的 Windows 8.1 上无法工作),我被迫使用mmEFI 命令设置两个 PCI 寄存器,然后才能启动 Windows。现在我有一个 EFI shell 的构建(我的主板没有内置的),如下bootx64.efi所示startup.nsh

mm 0010003E 1 ;PCI :8
mm 02000004 1 ;PCI :7
fs0:\EFI\Microsoft\Boot\bootmgfw.efi

是否可以用更轻量级的东西来替换 EFI shell,最好不允许中断启动过程?

答案1

您是否在 Mac 上执行了 Windows 的 EFI 启动?我刚刚在 2009 年中期的 MacBook Pro 5,4 上完成了同样的事情

我的 EFI shell 也是非固件。我必须将其放入 EFI 分区并bless手动操作。我仍然能够使用Set StartupDelay [X]我的 EFI shellPrecompiled x86_64 UEFI Shell v1 binary位于https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#Obtaining_UEFI_Shell或者更直接地说:https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Fu​​ll.efi 我使用的是 v1 而不是 v2,因为据说 v2 在 UEFI(v2)系统上更有用,而我的 Mac 使用 1.10 EFI 固件。

这样Set StartupDelay [x]对我来说就有用了,但是不要把它放在你的 startup.nsh 中!您只需调用一次。否则,您将在每次启动后不必要地重写 NVRAM,从而不必要地缩短其使用寿命。我还没有尝试将“0”用作启动值。我只是需要较小的延迟。对我来说,我的 startup.nsh 启动 Refind。如果我从 refind 启动 shell,我需要一些时间来绕过它。虽然 refind 有一个可通过退出 refind 访问的 shell,并且其中没有发出 nsh 启动。我不确定这个 shell 是否通过 shell.efi 工具启用,或者它是否一直在那里。

help set -b显示有关该命令的有用信息set。它指出,如果没有与 shell 关联的 NVRAM 环境,它将把变量保存到 /efi/boot/bootstr.nvr 中,这意味着该命令应该适用于任何没有 NVRAM 的人。但该文件从未在我的计算机上创建过,所以它肯定在 NVRAM 中。我通过使用 dmpstore StartupDelay 转储 NVRAM 变量(在本例中,仅针对 StartupDelay,如果存在)来证明这一点

希望有所帮助。

答案2

您可以通过在 startup.nsh 的开头输入“set StartupDelay 0”来消除启动延迟,其中 0 是等待的秒数。这对我来说很有效。

相关内容