将Windows 7 UEFI条目写入NVRAM

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


最佳答案:

引导管理器的操作在UEFI Specification第3章中定义。
如果您可以编写一个uefi应用程序并引导到uefi shell并运行您的应用程序,那么您可以使用运行时服务设置一个变量来创建bootpoption并将bootpoption的编号添加到bootorder。这就是ms bootloader在检测到没有为windows定义bootpoption时所做的操作,这是在您启动到windows之后在列表中有一个新条目的方式。
不确定您的平台的默认引导顺序是什么,但在默认情况下,可以使用uefi shell引导到usb密钥,因为这是由于制造要求而导致的常见默认配置。
查看projects on tianocore on sourceforge以更好地了解做您想做的事情所涉及的内容。