您好!
本文介绍将 UEFI 引导功能添加到 WDS 需要遵循的步骤。
那些。 本文中的说明假定您已经具有以下配置:
1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu
此外,这里描述了没有给我带来正确结果的操作。
我描述它们是为了方便搜索并节省您的时间。
前言
我用很多好东西制作了一个 WDS,tk。 厌倦了不断地带着一堆闪存驱动器跑来跑去并覆盖它们。
这些文章顺便帮助了我:
一切都很好,添加了新图像以供加载,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 的 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 模式启动的设备或虚拟机并尝试启动。
你应该有下图:
如果是这样,很好,你可以继续。
如果没有,那就看我在前言里写的。
第 2 阶段 - 构建 iPXE 启动文件
我们启动预先准备好的 Ubuntu,打开终端并粘贴此行:
git clone https://git.ipxe.org/ipxe.git ipxe
在这里我想做一个小小的评论,您可能必须将编译 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
如果一切正常,那么您应该在终端中获得以下输出:
和文件 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
我还复制了 ipxe.efi 文件,将其重命名为 BOOTIA32.EFI 并为其配置启动,以防万一。 architecture:x86uefi
但总的来说,这是没有意义的,因为。 Bootmgfw.efi 文件不支持 x86
让我们检查一下发生了什么。
很好,WDS 发送我们的文件以供下载,然后它会沿着路径查找配置: http://192.168.0.100/install.ipxe
第 4 步 - 菜单配置
转到您网站的根文件夹。
默认值是: C:inetpubwwwroot
创建一个文本文件 安装.ipxe.
并根据配置
也有俄语
我喜欢
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 分钟。
我花了 2 个工作日,因为。 我不得不谷歌很多。
实施成功!
感谢您的关注,也非常感谢那些文章对我有帮助的人!
在哈布雷上它是:
来源: habr.com