我有与此主题相同的问题,[连接/移除 USB 时如何获得 UEFI BIOS 启动顺序一致性?
当 CMS/EFI 未检测到无效启动条目时会自动删除该条目,我该如何维护用户指定的启动顺序?
当我进入设置程序并将启动顺序安排如下时,使用 CMS 启动:
- USB(grub4dos)
- 磁盘 1(Windows 7)
- 磁盘 2(Windows 7)
只要我插入 USB 驱动器,一切就都正常,并且符合规定。但是,一旦我移除 USB 驱动器,重新启动一次,然后重新插入驱动器,就会发生以下情况:
- 磁盘 1(Windows 7)
- 磁盘 2(Windows 7)
- USB(grub4dos)
根据上面的链接,这可能是我的主板制造商的不当实施。但我只是希望有一个解决方法。
答案1
我认为“CMS”是指兼容性支持模块 (CSM)。
无论如何,我不知道您遇到的问题有真正的解决方案;但是,有一个潜在的解决方法:您可以编写一个 EFI 程序,以您喜欢的任何方式调整启动顺序,并将其设置为默认启动程序。我不知道有任何程序可以做到这一点(尽管许多 Linux 发行版附带的fallback.efi
/fbx64.efi
程序在原理上有点相似 - 但它仅适用于 EFI 引导加载程序,不适用于任何可启动的 USB 设备)。因此,您需要自己编写程序,这是一项不简单的任务,除非您已经足够专业,不会问这个问题。
我所知道的最接近现成的解决方案是我自己的解决方案rEFInd 启动管理器。这对您的问题来说肯定是过度的,但您可以安装它,编辑refind.conf
以启用 BIOS/CSM/传统模式启动(通过scanfor
选项行),并将该default_selection
行设置为可以拾取可启动 USB 设备的内容。不幸的是,可启动 USB 设备的确切描述可能因设备而异,因此,除非您想要启动的设备有限,否则即使是这种过度的解决方法也可能无法真正发挥作用。另一方面,也许它会起作用;您需要尝试一下才能知道。(可行性取决于您的固件如何命名可启动 USB 设备;如果有一个一致的字符串是 USB 设备独有的,如“USB”,那么这种方法可能会奏效。如果 USB 设备的名称完全唯一,并且您有很多,那么 rEFInd 不会有太大帮助。)使用 rEFInd 会使您的启动路径复杂化并增加启动过程的时间,即使您将其配置为 0 的超时时间。
总的来说,如果你真的非常绝望,你可能需要研究一下 rEFInd。但如果这只是一个小麻烦,那么最好还是忍受它,除非别人有更好的建议。