【问题标题】:Adding UEFI firmware boot entry using bcdedit使用 bcdedit 添加 UEFI 固件启动项
【发布时间】:2015-09-26 06:35:14
【问题描述】:

如何使用bcdedit 添加新的 UEFI 固件启动菜单项(在 NVRAM 中)。例如我尝试了以下步骤,但没有添加引导条目。

bcdedit /create /d "LinuxLoader" /application osloader 

这将返回一个新的 guid(比如 newguid)

bcdedit /set {newguid} device partition=S:
bcdedit /set {newguid} path \boot\efi\bootx64.efi
bcdedit /set {fwbootmgr} displayorder {newguid} /addfirst

提前致谢。

【问题讨论】:

    标签: windows boot uefi bcdedit bcdstore


    【解决方案1】:

    您不能使用 OSLOADER 类型的应用程序来启动 Linux:这种类型适用于 Windows 加载程序,此类应用程序是 启动应用程序(不是与 EFI 应用程序 相同),它们由 Microsoft 独家签名并由 Windows 启动管理器启动(有关该过程的详细描述,请参阅 this UEFI document 的第一张幻灯片。)

    另一方面,应该可以添加另一个启动管理器以及Windows',并在UEFI中注册(在NVRAM存储中);步骤和你写的差不多,直接用

    bcdedit /create /d "LinuxLoader" {bootmgr}

    作为第一个操作。 bcdeditbcdsrv真的)的操作原理是,在最后一步,条目也应该复制到NVRAM;因此,您的 UEFI 管理器现在至少有两个选项可供选择,Windows 引导管理器可能仍是默认选项。 这意味着在实践中您可能必须使用一些魔术键来启动此菜单(UEFI 引导管理器)。要更改默认条目,您可以尝试

    bcdedit /set {fwbootmgr} default $newguid

    这将更新 NVRAM 中的 BootCurrent 变量,因此 UEFI 固件应该然后选择 Linux 加载程序而不是 Windows;但不能保证,我相信有一些 UEFI 固件在这个问题上编程不当;根据this question,恢复这种更改甚至似乎是 Windows 8 启动过程的标准行为:-(

    另外,我还会在 {fwbootmgr} 列表中创建一个不同于标准位置 (ESP)\EFI\BootX64.efi 的条目:当某些(不明智的)工具时,这样的条目将继续存在将决定恢复 正确值并用微软的bootmgfw.efi...

    【讨论】:

    • 感谢您的详细回复。我的要求发生了变化,我使用 Windows API SetFirmwareEnvironmentVariable() 完成了同样的任务。
    猜你喜欢
    • 2014-05-07
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2016-02-19
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多