Windows-11-logo

HOWTO: 解决 WDS PXE-E16 问题

        一台基于 Windows Server 2022 的 WDS 服务器已加入到 AD,并使用 AD 集成模式进行了初始化的配置,跟随向导同时导入了 WinSvr 2022 的 Boot.wim 和 Install.wim,但是在使用 Hyper-V Gen2 VM 执行首次网络引导时是正常的,但是在通过实体机进行 PXE 网络引导时,发生了 PXE-E16 故障;之后再用 VM 测试同样报错。

image

        从报错信息可见 PXE-E16: No valid offer received. 在 Configuration Manager 中 PXE 启动问题的高级故障排除 | Microsoft Learn 文档中提供了一些排查的思路。尝试创建一个 Gen1 VM 引导发现是可以正常工作的,说明 WDS 服务和发现均没有问题,看来是有其他原因。

        网上曾有文章介绍使用 WDS 的独立模式进行配置,但在本案中并不适合,回过头来分析客户端的特征,并结合 WDS 事件日志做了分析,才恍然大悟。

  1. 客户端使用 UEFI 模式启动
  2. 查阅 WDS 事件日志,可看到设备已从 PXE 启动,但并未执行后续启动步骤。在日志中可以看到一个重要的提示“客户端体系结构: 4”
    image
  3. 如果使用 Gen1 VM 执行 PXE 启动,日志中记录其客户端体系结构为1,之后会创建 Non-Shared 缓冲区来读取文件“\boot\x86\wdsnbp.com”,之后当 gOxiA 按下 F12 确认从网络引导后,WDS 又为其过程创建了“\bootx64\pxeboot.n12”,随后 TFTP 获取到 x64 的 Boot.wim 成功引导加载 PE 环境。在 Configuration Manager 中的 PXE 启动 | Microsoft Learn 这篇文档中我们可以获取到很多有用的信息。

        由于 WDS 初始提供 wdsnbp.com 来引导客户端启动,而其特性仅支持 x86 和 x64 BIOS,所以最终导致 Gen2 VM 和实体设备发生引导故障,因为两者均为 UEFI。

        为了确保 UEFI 这类的 Modern PC 能够通过 WDS 提供的 PXE 进行网络引导,我们需要强制 WDS 为客户端提供 UEFI 支持,即使用 Bootmgfw.efi 或 Wdsmgfw.efi,为此我们需要配置 DHCP,添加 067 选项,强制默认使用 UEFI 引导。

        最后再次执行启动验证,Gen2 VM 和 实体机均能够正常通过 PXE 引导。在 WDS 事件日志中,可跟踪到设备初始便会使用 067 指定的 efi 文件加载引导,之后会成功加载 x64uefi 下的 bcd 并顺利完成后续的 Boot.wim 加载任务。

        需要注意,当通过 DHCP 强制支持 UEFI 后,在使用 Gen1 VM 执行 PXE 网络引导,则会发生 PXE-E79 故障。

image

        如果在企业环境中同时存在 BIOS 和 UEFI 固件类型的设备,IT 管理员可以考虑配置 DHCP 服务器,定义供应商类别(DHCP Vendor Classes),添加 UEFI x86/x64 以及 BIOS x86&x64 的支持。

Windows Deployment | 评论(0) | 引用(0) | 阅读(3024)
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我