我目前正在制作一个脚本来对我负责Windows 7的多台实验室机器进行成像,不幸的是它们是UEFI戴尔机器,它们以愚蠢的方式工作。在我使用Dell设置实用程序创建映像的计算机上,Windows的启动菜单中有一个UEFI条目,它加载了/boot/Microsoft/bootx64.efi文件或一些此类等效文件,当我对机器进行映像时一切正常,除了当我启动它时,我得到了旧的'No Bootable device found error',当我进入Dell设置实用程序时,没有Windows条目。我可以手动添加一个指向此UEFI分区的条目和引导文件,然后引导文件将很好地启动并且在引导时奇怪地添加另一条指向NVRAM的条目,该条目指向典型名称“Windows Boot Manager”下的同一文件。我一直试图找到一些方法来添加这个NVRAM条目,而不必手动进入戴尔设置,因为我正在对大量机器进行成像,这只会使过程复杂化。我最初尝试只是在成像完成后链式加载grub引导加载程序以检测Windows安装并启动它,这理论上会将条目添加到NVRAM本身并阻止我有两个条目或者必须自己与机器交互。我还无法找到有关直接在linux端向NVRAM添加条目的任何信息,这些信息与我通过Dell设置实用程序完成的操作相同。有人对此有经验吗?
由于
答案 0 :(得分:2)
引导管理器的操作在UEFI Specification,第3章中定义。
如果您可以编写UEFI应用程序并启动到UEFI shell并运行您的应用程序,则可以使用运行时服务设置变量以创建BootOption,并将该BootOption的编号添加到BootOrder。这是MS引导加载程序在检测到没有为Windows定义BootOption时所执行的操作,这是在引导到Windows后列表中有新条目的方式。
不确定您的平台的默认启动顺序是什么,但默认情况下可以使用UEFI shell启动到USB密钥,因为这是由于制造要求而导致的默认配置。
查看projects on tianocore on sourceforge,以便更好地了解您想要做的事情。