扩展WDS功能:向UEFI添加下载功能

大家好!


本文介绍了将UEFI引导选项添加到WDS时必须遵循的步骤。


即 本文中的说明假定您已经具有以下配置:


1. Windows Server 2012R2 ( ) 2.   DHCP    WDS 3.   WDS 4. IIS 5.      Ubuntu 

另外,这里还介绍了没有给我带来适当结果的操作。
我描述了它们,以方便搜索并节省您的时间。


前言


在WDS上以某种方式使它具有很多优点,因为 厌倦了不断使用一堆闪存驱动器并覆盖它们。


顺便说一下,这些文章对我有帮助:
增加WDS的多功能性
带有System Center Configuration Manager的PXE引导菜单


看起来像这样


一切都很好,添加了新图像以进行加载,winPE图像因新功能而过长,并且一切正常。


但是,绝不是所有设备都支持BIOS /旧版引导模式,或者如果它们支持,则可以将其包含在非常不明显的位置。


如果可以在UEFI中进行安装,则以传统模式安装Windows并不是一件很酷的事情。


最后,我决定添加可以上传到UEFI的功能,然后转到了Google。


但是我仍然没有找到有关如何获得有效的WDS + UEFI的结构化信息。
实际上,这就是为什么我决定写这篇文章的原因。


在开始之前,我将描述花费时间最多的问题。


将UEFI添加到WDS时,可能会发生以下情况,但情况并不明显:

如果您将启动文件添加到WDS并尝试启动到设备上
在UEFI中,您会看到以下文本:
The selected boot device failed. Press <Enter> to Continue.
Boot Device Not Found
但是,加载旧版将为您工作。
然后,可能的选择之一是缺少wdsmgfw.efi文件,
以下路径: %WDSpath%\Boot\x64\wdsmgfw.efi


您可以在这里使用它: C:\Windows\System32\RemInst\boot\x64\wdsmgfw.efi
或者,如果由于某种原因您没有此文件,我将其发布在google上
对于这个决定,感谢reddit的家伙。


由于这个问题,我自从杀死了最多的时间 我认为问题出在WDS或DHCP配置中。


通过添加各种体系结构的供应商类并配置DHCP选项060、066、067来配置策略。配置DHCP策略的说明。


用于配置DHCP的ASCII架构

PXEClient:Arch:00000-BIOS /旧版
PXEClient:拱门:00006-UEFI x86
PXEClient:存档:00007-UEFI x64


此外,我尝试了.efi启动文件的各种选项


  • syslinux
  • rub 2

我还尝试在事件日志中找到问题。
win + r -> eventvwr -> -> Microsoft -> Windows -> Deployment-Services-Diagnostics


但是,如上所述,问题出在wdsmgfw.efi文件中。
我自己不小心删除了它,或者它在安装过程中没有复制
并配置WDS。


好吧,让我们开始吧!


使用说明书


第1阶段-WDS健康检查


采取任何支持UEFI通过网络引导的设备或虚拟机,然后尝试引导。


您应该具有以下图片:



如果是这样,那么很好,您可以继续。
如果没有,请参阅我在引言中写的内容。


第2步-构建iPXE引导文件


运行预先准备的Ubuntu,打开终端并插入以下行:


 git clone https://git.ipxe.org/ipxe.git ipxe 


在这里,我想谈一谈您可能必须在Ubuntu中添加编译C和C ++所需的软件包这一事实。
我刚刚安装了它们。


已下载? -太好了!
现在,您需要为装配创建一个配置文件。
在终端中,输入:


 cd ipxe/src gedit chain.ipxe 

并将以下代码粘贴到此文件中,然后保存:


 #!ipxe dhcp chain http://%IP-address-your-IIS-server%/install.ipxe 

我们再次进入终端并开始编译:


 make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe 


如果一切正常,那么您应该在终端中获得以下输出:



以及ipxe.efi文件,其路径如下: ipxe/src/bin-x86_64-efi/ipxe.efi
如果由于某种原因您无法编译自己,
我附上了文件
它被编译为可从http://192.168.0.100/install.ipxe下载


Ubuntu就是这样。


阶段3-将ipxe.efi添加到WDS


我们将第二阶段收到的文件沿路径复制:
%WDSpath%\Boot\x64\%your-boot-folder%\EFI\BOOT\
将其重命名为BOOTX64.EFI之后。
没必要,只是更方便。


然后以管理员身份运行cmd ,并编写以下命令:


 wdsutil /set-server /bootprogram:Boot\x64\%your-boot-folder%\EFI\BOOT\BOOTX 64.EFI /architecture:x64uefi  wdsutil /set-server /N12bootprogram:Boot\x64\%your-boot-folder%\EFI\BOOT\BOOTX 64.EFI /architecture:x64uefi 

这将安装生成的文件以通过WDS下载。


检查配置:


 wdsutil /get-server /Show:Config 


我还复制了ipxe.efi文件,将其重命名为BOOTIA32.EFI,并为它配置了下载,以防万一。 architecture:x86uefi
但总的来说,这没有任何意义,因为 Bootmgfw.efi文件不支持x86


检查发生了什么。

好吧,WDS发送我们的文件以供下载,然后它会沿着以下路径查找配置: http://192.168.0.100/install.ipxe : http://192.168.0.100/install.ipxe


阶段4-菜单配置


我们转到您网站的根文件夹。
默认情况下是: C:\inetpub\wwwroot


创建一个文本文件install.ipxe


并根据文档和您的需求进行配置。
团队还有俄语描述
我在配置WDS时使用了说明。


Install.ipxe配置示例
 #!ipxe :start menu Please choose an operating system to start/install item --gap Start Win PE item WinPE-x64 WinPE x64 item --gap ipxe shell item shell Drop to iPXE shell choose target && goto ${target} :failed echo Booting failed, dropping to shell goto shell :shell echo Type 'exit' to get the back to the menu shell set menu-timeout 0 set submenu-timeout 0 goto start :WinPE-x64 kernel http://192.168.0.100/wimboot initrd http://192.168.0.100/peSE/Boot/bcd initrd http://192.168.0.100/peSE/Boot/boot.sdi initrd http://192.168.0.100/peSE/Boot/peSE64.wim boot || goto failed 

您可以在此处阅读有关加载winPE的配置的信息


阶段5-MIME类型


创建菜单并将所有必需的文件添加到IIS根文件夹后,
您必须授予他们访问权限。


因为 即使您尝试从浏览器下载文件,也会在其地址处收到错误消息: HTTP 404.3 - Not Found


为此,根据需要在IIS控制面板中添加MIME类型。
带有文件扩展名的文件,您将通过http下载。


我没有寻找适合这些目的的MIME类型,而是设置了application/octet-stream ,之后一切正常。


对于没有扩展名的文件,请使用句点。


像这样:



结论


最终,我们可以通过UEFI在本地网络上启动。


如果我们做对了所有事情,那么将会出现类似引导选择菜单的内容:



如果您已准备好基本工具,而不必担心配置,那么大约需要10到20分钟才能实现此功能。
我花了两个工作日,因为 不得不谷歌很多。


成功执行!


感谢您的关注,也非常感谢那些文章对我有所帮助的人!
在Habr it上: IngtarDeeptown

Source: https://habr.com/ru/post/zh-CN448476/


All Articles