EFI shell 中的启动问题可能是 startup.nsh

EFI shell 中的启动问题可能是 startup.nsh

我有一台迷你电脑,无论在 UEFI 中设置了什么启动顺序,它总是会启动到 Windows。我认为 ESP/EFI 分区上有一个启动脚本,它会在每次启动时覆盖启动顺序,所以我删除了 ESP 分区,重新创建了它,并使用 Windows 10 安装介质恢复了启动配置。但这并没有改变任何东西。默认情况下,PC 仍然启动 Windows。要从实时 USB 启动,我必须按 F7,然后选择 USB 的条目。我还尝试安装 Ubuntu 和 Phoenix OS,但它们只在第一次启动(再次使用 F7),之后再也没有启动过。我读过这些页面: https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#UEFI_Shell

https://software.intel.com/en-us/articles/efi-shells-and-scripting

如何从启动菜单中删除操作系统

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Installation_Guide_x8664/s3-ia64-postinstall-startup.nsh.html

但是“bcfg”不起作用(看起来我的 efi shell 不支持该命令),“fs0 - edit startup.nsh”也不起作用(它打开了 fs0 并说它没有映射)

我还尝试在 Windows 中安装 ESP 分区并探索其中的内容。我没有在那里找到任何 startup.nsh。有 3 个目录:Microsoft、Boot 和 PhoenixOS。Boot 和 PhoenixOS 包含 bootia32.efi,Microsoft 包含许多文件,包括 .efi 文件。

我正在寻找一种方法来摆脱任何启动脚本并改用 UEFI 启动菜单,我想知道是否有人可以给我指明正确的方向。任何帮助都将不胜感激。

更新:

每次启动时都会创建指向 EFI/Microsoft/Boot/bootmgfw.efi 的 NVRAM 条目 Boot0001。有人知道此类脚本存储在哪里以及如何禁用它吗?

答案1

这可能是一个有缺陷的固件,如这里

建议的解决方案是

劫持 Windows 引导加载程序 — 一些有缺陷的 EFI 仅引导 Windows 引导加载程序,该程序在 ESP 上名为 EFI/Microsoft/Boot/bootmgfw.efi。因此,您可能需要将此引导加载程序重命名为其他名称(我建议将其向下移动一级,即 EFI/Microsoft/bootmgfw.efi),并将您首选的引导加载程序的副本放在其位置。(大多数发行版将 GRUB 的副本放在以自己命名的 EFI 子目录中,例如 Ubuntu 的 EFI/ubuntu 或 Fedora 的 EFI/fedora。)请注意,此解决方案是一种丑陋的黑客行为,一些用户报告说 Windows 将替换其引导加载程序,因此它甚至可能无法 100% 正常工作。然而,这是对一些严重损坏的 EFI 起作用的唯一解决方案。在尝试此解决方案之前,我建议升级您的固件并使用 Linux 中的 efibootmgr 或 Windows 中的 bcdedit 重新注册您自己的引导加载程序。

相关内容