2

我目前正在编写一个脚本来对我负责的多台实验室机器使用 Windows 7 进行映像,不幸的是它们是 UEFI Dell 机器,它们以一种愚蠢的方式工作。在我使用戴尔设置实用程序创建映像的机器上,Windows 的启动菜单中有一个 UEFI 条目,它加载了 /boot/Microsoft/bootx64.efi 文件或类似的文件,当我对机器进行映像时,一切正常,除了当我启动它们时,我得到了很好的旧“找不到可启动设备错误”,当我进入戴尔设置实用程序时,没有 Windows 条目。我可以手动添加一个指向此 UEFI 分区和启动文件的条目,然后它会在启动时正常启动并奇怪地向 NVRAM 添加另一个条目,该条目以典型名称“Windows 启动管理器”或其他名称指向同一文件。我一直在尝试找到某种方法来添加此 NVRAM 条目,而无需手动进入戴尔设置,因为我正在对大量机器进行映像,这只会使过程复杂化。我最初尝试在映像完成后链式加载 grub 引导加载程序以检测 Windows 安装并启动它,理论上这会将条目添加到 NVRAM 本身并阻止我拥有两个条目或不得不自己与机器交互。我也找不到任何有关在 linux 端直接向 NVRAM 添加条目的信息,这与我通过戴尔设置实用程序完成的操作相同。有人对此有经验吗?我最初尝试在映像完成后链式加载 grub 引导加载程序以检测 Windows 安装并启动它,理论上这会将条目添加到 NVRAM 本身并阻止我拥有两个条目或不得不自己与机器交互。我也找不到任何有关在 linux 端直接向 NVRAM 添加条目的信息,这与我通过戴尔设置实用程序完成的操作相同。有人对此有经验吗?我最初尝试在映像完成后链式加载 grub 引导加载程序以检测 Windows 安装并启动它,理论上这会将条目添加到 NVRAM 本身并阻止我拥有两个条目或不得不自己与机器交互。我也找不到任何有关在 linux 端直接向 NVRAM 添加条目的信息,这与我通过戴尔设置实用程序完成的操作相同。有人对此有经验吗?无法找到有关在 linux 端直接向 NVRAM 添加条目的任何信息,这与我通过戴尔设置实用程序完成的操作相同。有人对此有经验吗?无法找到有关在 linux 端直接向 NVRAM 添加条目的任何信息,这与我通过戴尔设置实用程序完成的操作相同。有人对此有经验吗?

谢谢

4

1 回答 1

2

Boot Manager 的操作在UEFI 规范的第 3 章中定义。

如果您可以编写 UEFI 应用程序并引导至 UEFI shell 并运行您的应用程序,则可以使用运行时服务设置变量以创建 BootOption 并将该 BootOption 的编号添加到 BootOrder。这就是 MS 引导加载程序在检测到没有为 Windows 定义的 BootOption 时所做的事情,这就是在您引导到 Windows 后列表中有一个新条目的方式。

不确定您的平台的默认引导顺序是什么,但默认情况下可能可以使用 UEFI shell 引导到 USB 密钥,因为由于制造要求,这是默认的常见配置。

在 sourceforge 上查看有关 tianocore 的项目,以更好地了解做您想做的事情所涉及的内容。

于 2012-07-26T21:05:01.833 回答