扩展 WDS 功能:添加 UEFI 引导功能

您好!

本文介绍将 UEFI 引导功能添加到 WDS 需要遵循的步骤。

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

1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu

此外,这里描述了没有给我带来正确结果的操作。
我描述它们是为了方便搜索并节省您的时间。

前言

我用很多好东西制作了一个 WDS,tk。 厌倦了不断地带着一堆闪存驱动器跑来跑去并覆盖它们。

这些文章顺便帮助了我:
添加 WDS 多功能性
System Center Configuration Manager 的 PXE 启动菜单


看起来像这样

扩展 WDS 功能:添加 UEFI 引导功能

一切都很好,添加了新图像以供加载,winPE 图像上长满了新功能,一切正常。

但是,并非所有设备都支持 BIOS / Legacy 启动模式,或者如果支持,那么它可能位于一个非常不明显的地方。

是的,当可以在 UEFI 中安装时,以传统模式安装 Windows 并不酷。

因此,我决定添加启动到 UEFI 的功能,然后去谷歌。

但我没有找到关于如何获得工作 WDS + UEFI 的结构化信息。
事实上,这就是我决定写这篇文章的原因。

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

将 UEFI 添加到 WDS 时,可能会出现以下不太明显的情况:

如果您将启动文件添加到 WDS 并且当您尝试在设备上启动时
在 UEFI 中,您会看到以下文本:
The selected boot device failed. Press <Enter> to Continue.
Boot Device Not Found
但是加载旧版适合你。
那么可能的选择之一是缺少文件 wdsmgfw.efi,
沿着以下路径: %WDSpath%Bootx64wdsmgfw.efi

你可以在这里拿走: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
或者,如果由于某种原因你找不到这个文件,我把它贴在 谷歌.
对于这个解决方案,感谢来自 红迪网.

有了这个问题,我杀了最多的时间,因为。 我认为问题出在 WDS 或 DHCP 配置中。

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

用于配置 DHCP 的 ASCII 体系结构

PXEClient:Arch:00000 - BIOS/旧版
PXEClient:Arch:00006 - UEFI x86
PXEClient:Arch:00007 - UEFI x64

另外,我尝试了各种引导文件选项。 .efi

  • SYSLINUX
  • 蛴螬 2

我还尝试在事件日志中查找问题。
win + r -> eventvwr -> Журналы приложений и служб -> Microsoft -> Windows -> Deployment-Services-Diagnostics

但是,正如我上面所说,问题出在文件中 wdsmgfw.efi.
要么是我自己不小心删了,要么是安装的时候没有复制
并配置 WDS。

好吧,让我们开始吧!

说明

第 1 阶段 - 验证 WDS 是否正常工作

使用任何支持通过网络以 UEFI 模式启动的设备或虚拟机并尝试启动。

你应该有下图:

扩展 WDS 功能:添加 UEFI 引导功能

如果是这样,很好,你可以继续。
如果没有,那就看我在前言里写的。

第 2 阶段 - 构建 iPXE 启动文件

我们启动预先准备好的 Ubuntu,打开终端并粘贴此行:

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

扩展 WDS 功能:添加 UEFI 引导功能

在这里我想做一个小小的评论,您可能必须将编译 C 和 C++ 所必需的包添加到 Ubuntu。
我刚刚安装了它们。

下载了吗? - 伟大的!
现在您需要为程序集制作一个配置文件。
在终端中,我们写:

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

扩展 WDS 功能:添加 UEFI 引导功能

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

扩展 WDS 功能:添加 UEFI 引导功能

和文件 ipxe文件, 一路上: ipxe/src/bin-x86_64-efi/ipxe.efi
如果由于某种原因你不能自己编译,
我附上了我的 文件.
它被编译为从 http://192.168.0.100/install.ipxe

这就是 Ubuntu 的全部内容。

第 3 步 - 将 ipxe.efi 添加到 WDS

我们获取在第二阶段收到的文件并沿途复制它:
%WDSpath%Bootx64%your-boot-folder%EFIBOOT
我们将其重命名为 BOOTX64.EFI 之后。
没必要,只是更方便。

然后我们发射 CMD 代表管理员,编写如下命令:

wdsutil /set-server /bootprogram:Bootx64%your-boot-folder%EFIBOOTBOOTX
64.EFI /architecture:x64uefi
и
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folder%EFIBOOTBOOTX
64.EFI /architecture:x64uefi

这会将生成的文件设置为通过 WDS 下载。

让我们检查一下配置:

wdsutil /get-server /Show:Config

扩展 WDS 功能:添加 UEFI 引导功能

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

让我们检查一下发生了什么。
扩展 WDS 功能:添加 UEFI 引导功能
很好,WDS 发送我们的文件以供下载,然后它会沿着路径查找配置: http://192.168.0.100/install.ipxe

第 4 步 - 菜单配置

转到您网站的根文件夹。
默认值是: C:inetpubwwwroot

创建一个文本文件 安装.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.
扩展 WDS 功能:添加 UEFI 引导功能

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

我没有寻找最适合此目的的 MIME 类型,并询问 application/octet-stream,之后一切正常。

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

在这里,它是:

扩展 WDS 功能:添加 UEFI 引导功能

结论

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

如果我们做的一切都正确,那么就会有类似这个引导选择菜单的东西:

扩展 WDS 功能:添加 UEFI 引导功能

如果您已经准备好基本工具,并且不会为配置而烦恼,那么实现此功能大约需要 10-20 分钟。
我花了 2 个工作日,因为。 我不得不谷歌很多。

实施成功!

感谢您的关注,也非常感谢那些文章对我有帮助的人!
在哈布雷上它是: 英达 и 深城.

来源: habr.com

添加评论