Windows 10每次更改UEFI启动顺序。

我有一台HP 500-413nl(台式机),而且Windows 10每次都会更改UEFI/BIOS中的启动顺序,所以如果我想要启动Ubuntu 16.10(64位),我总是不得不按F10键,进入BIOS设置并更改启动顺序...
我的电脑有没有解决办法?我该怎么办?我有点绝望。
附注:我已经在BIOS中禁用了“安全启动”和“快速启动”,以及在Windows选项/控制面板中禁用了“快速启动”。

你有在UEFI/BIOS设置中更改启动顺序吗?在创建双系统安装后,我不得不更改驱动器的启动顺序。我使用的是MSI笔记本电脑,而不是HP。 - code_dredd
你试过将引导程序重命名并更改标签以与Windows版本完全匹配吗?这样做可能会使事情变得固定,但代价是让手动启动变得更加混乱。 - ubfan1
有些惠普电脑在设置中有一个“定制”启动选项,需要深入查找才能找到:https://ubuntuforums.org/showthread.php?t=2332681&p=13527216#post13527216 还有一个较后的回答:http://askubuntu.com/questions/244261/how-do-i-get-my-hp-laptop-to-boot-into-grub-from-my-new-efi-file - oldfred
@ray 是的,我做了。 - JK andy-drew
@JKandy-drew 问题有点傻,但你在UEFI中保存了更改吗?我不明白为什么Windows会在没有你要求的情况下修改UEFI/BIOS设置,但如果真的是这样,我也不会感到惊讶...我还没有遇到过这个问题。 - code_dredd
@ray 是的,我保存了更改并且也进行了双重检查。 - JK andy-drew
例如,我刚刚重启电脑以再次检查设置中是否有一个"自定义"选项,但是并没有找到:好吧,现在我发现启动顺序是"ubuntu"等等,而Windows Boot Manager消失了... - JK andy-drew
@oldfred,我应该按照哪些步骤进行? - JK andy-drew
其中另一个选项是引导回退或硬盘入口,即/EFI/Boot/bootx64.efi,并且通常显示为UEFI硬盘或类似的内容。可能需要创建UEFI条目。或者使用rEFInd。索尼、惠普和其他品牌:http://askubuntu.com/questions/486752/dual-boot-win-8-ubuntu-loads-only-win/486789#486789 有些答案可能会建议复制Windows的bootmgfw.efi引导文件,最好不要这样做。Boot-Repair会复制shimx64.efi,但不会添加UEFI条目。https://askubuntu.com/questions/597052/can-not-boot-anymore-after-a-boot-repair - oldfred
谢谢@oldfred,看起来第一个链接是我的解决方案,唯一的问题是对我来说有点难以执行(正如你在回答#486752中所解释的),你能否请指导我一步一步地操作?对不起,我的英语不太好,我不是母语使用者。 有些步骤很棘手,我不想损坏我的系统,因为我不常用终端。 - JK andy-drew
(我指的是以下这段从“I”到“2.”的内容)在编程中,有许多不同的编程语言可供选择,每种语言都有其独特的特点和用途。以下是一些常见的编程语言:
  1. Python:Python是一种高级、通用且易于学习的编程语言。它具有简洁的语法和强大的功能,被广泛用于数据分析、人工智能和网络开发等领域。
  2. Java:Java是一种面向对象的编程语言,适用于跨平台应用程序开发。它具有丰富的类库和强大的安全性,被广泛应用于企业级应用和Android应用开发。
- JK andy-drew
每个灰色的命令都是你可以运行的。但是现在Boot-Repair已经完成了所有这些操作。Boot-Repair现在会创建bkpbootx64.efi并将shimx64.efi复制为bootx64.efi。这是UEFI中硬盘的默认或回退启动项。 在高级选项中选择“使用标准EFI文件”。 https://bugs.launchpad.net/boot-repair/+bug/1531178 然后唯一的问题是,在冷启动时,UEFI是否能找到标准/回退文件夹并自动添加到UEFI启动菜单,或者我们需要手动添加它。 - oldfred
好的,你有什么程序推荐给我来创建一个带有引导修复功能的USB启动盘吗?之前我使用过预装的"Boot disk creator"(在我的系统中是意大利语,叫做"Creatore di dischi di avvio",希望翻译正确),但我的系统无法识别它...UNetbootin呢? - JK andy-drew
@老弗雷德,不好意思,我没有通知你... - JK andy-drew
我认为任何Ubuntu的版本都可以。无论你用什么方法安装Ubuntu,你应该使用相同的版本。使用添加ppa的方法。https://help.ubuntu.com/community/Boot-Repair - oldfred
@oldfred 我使用了boot-repair,但是当我从Windows 10重新启动时,它直接进入了Windows系统;这是引导信息:http://paste2.org/mc9FLM2F - JK andy-drew
Grub菜单可能有太多选项或所有的HP条目。http://askubuntu.com/questions/778663/what-is-the-difference-between-windows-uefi-bootmgfw-efi-and-windows-uefi-bkpboo/778705#778705 您可能需要运行以下命令来添加一个启动硬盘或bootx64.efi条目:sudo efibootmgr -c -g -d /dev/sdX -p 2-w -L "UEFI硬盘" -l '\EFI\Boot\bootx64.efi' 我已更改设置以匹配您的sda2的ESP。有关参数的详细信息,请参阅man efibootmgr。 - oldfred
@oldfred 我遇到了一些问题:现在我的Grub是这样的(菜单中的条目实际上翻了一倍):
  1. https://drive.google.com/file/d/0BzDVdpXZTpRXLXB6b0pjTXl6ME0/view?usp=sharing
  2. https://drive.google.com/file/d/0BzDVdpXZTpRXQTFUQ2RWRlM4ZkU/view?usp=sharing 此外,当执行 sudo efibootmgr -c -g -d /dev/sdX -p 2-w -L "UEFI硬盘" -l '\EFI\Boot\bootx64.efi' 时,它给出了以下输出: efibootmgr: 无法设置变量:没有该文件或目录 efibootmgr: 无法准备引导变量:没有该文件或目录
- JK andy-drew
Boot-Repair会创建一个名为25_custom的文件,其中包含所有额外的HP .efi文件。你可能不需要大部分或者根本不需要这些文件。要进行清理,请参考以下链接:http://askubuntu.com/questions/778663/what-is-the-difference-between-windows-uefi-bootmgfw-efi-and-windows-uefi-bkpboo/778705#778705 但是看起来你有多个25_custom的副本?而且Boot-Repair应该创建了bootx64.efi,但你需要勾选高级选项。现在,Boot-Repair会创建bkpbootx64.efi,并将shimx64.efi复制为bootx64.efi。这是UEFI中硬盘的默认或备用启动项。 在高级选项中选择“使用标准EFI文件”。 - oldfred
问题出现在四个命令中的第三个(nano)此答案中,它给了我一个文本编辑器...我对Linux命令有点不熟悉,我应该怎么做?用Ctrl-O保存文本吗?(我刚刚通过谷歌搜索才知道什么是“nano”) - JK andy-drew
对我来说也是同样的问题,看起来UEFI是为了强迫用户使用Windows。太可怕了! - MaxV
4个回答

我也遇到了同样的问题,即Windows 10(教育版)在启动时会自动将Windows引导管理器EFI条目再次移至顶部。如果我更改了它,在重新启动后,下一次启动将跳过Grub直接引导进入Windows。以下是我解决这个问题的方法:
我建议使用EasyUEFI工具http://www.easyuefi.com/来查看和更改一些与EFI相关的设置。
  1. 打开工具并选择管理EFI启动选项

  2. 查看现有条目。对我来说,两个重要的条目是:

    描述:Windows引导管理器
    GPT分区GUID:{505E666C-00CD-4654-BB80-FBD2C6F9F191}
    分区号码:2
    分区起始扇区:923648
    分区结束扇区:1128447
    文件路径:\EFI\Microsoft\Boot\bootmgfw.efi
    

    和:

    描述:Ubuntu 16.04
    GPT分区GUID:{505E666C-00CD-4654-BB80-FBD2C6F9F191}
    分区号码:2
    分区起始扇区:923648
    分区结束扇区:1128447
    文件路径:\EFI\ubuntu\grubx64.efi
    
  3. 下一步是确保Windows不再使用自己的bootmgfw.efi文件,而是使用grubx64.efi。 为此,不要再将Ubuntu EFI条目移到顶部(即我们遇到的问题),而只需将Windows引导管理器的文件路径设置为\EFI\ubuntu\grubx64.efi。 您也可以从管理员命令行执行此操作:

    Bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
    

    现在,Windows不应再更改EFI设置,并且在每次启动时,GRUB是默认选项。 由于GRUB理想情况下已经识别了您的Windows操作系统,因此它还包含其值在grub设置中。


1如果Grub没有正确配置,请参考这个或者这个帖子来将Windows添加到Grub中,这样你就可以再次启动Ubuntu了。很抱歉,由于声望不足,我无法在回答中提供超过2个链接。 - patzm
解决了!谢谢你和所有为此做出贡献的人,最终我明白了这是一个Windows问题/难题(而不是Linux),总体来说,我希望这能帮助其他遇到同样麻烦的人。只需使用@maddin25报告的最后一条命令即可。 - JK andy-drew
警告!!! 可能会在BIOS中导致引导管理器冲突!请查看此问题。 - Kartik
3@Kartik,我上面的帖子涉及到UEFI而不是BIOS,这两者是不同的东西(请参见此处)。 - patzm
是的。我本应该写“在POST期间”。而我却写成了BIOS,直到现在才发现。 - Kartik
2这是共享软件对吧?有人知道有免费的工具可以用吗? - Blackbam
1我的天啊,非常感谢你!每次更新时,Windows都会破坏我的EFI配置,我简直要抓狂了。 - Hannes Landeholm
1我在Windows 11(22H2版本构建22621.1194)和Ubuntu 22.04.1上成功运行了它。另一个答案建议使用 bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi,但在加载GRUB之前会显示一个警告,而使用 …\grubx64.efi 则可以直接正常工作。非常感谢! - ilyakam
1@Blackbam 也许Disk Genius免费版的编辑器符合你的需求。 - Enno

我遇到了这个问题,并通过在UEFI/BIOS中设置密码来解决它。显然,当定义了密码后,Windows无法再对UEFI/BIOS进行更改。这台电脑是联想的。

在哪个系统上? - Elder Geek
HP 500 105ed没有起到作用。无论如何,Windows都会更改启动顺序。 - TheKitMurkit
谢谢。我以为这是最简单的方法。这是在一台华硕笔记本电脑上,运行Debian测试版和Win10系统。 - Benny Jobigan

我的索尼笔记本电脑在启动时也会更改引导顺序。另一个有效的选择是使用EasyUEFI来禁用Windows Boot Manager EFI条目。

这样可以保留现有的Ubuntu引导选项为最高优先。


我在Windows上执行了这个操作,所以Windows UEFI会启动到Grub。

 bcdedit /set '{bootmgr}' path \EFI\ubuntu\grubx64.efi