Всем привет! В данной статье, описаны шаги, которые необходимо выполнить для добавления к вашему WDS, возможности загрузки в режиме UEFI. Т.е. инструкция в данной статье, предполагает, что у вас уже имеется, примерно следующая конфигурация: Так же, здесь описаны действия, которые не принесли мне должного результата.
Описал я их, для облегчения поиска и экономии вашего времени. Сделал как-то на работе WDS с множеством плюшек, т.к. устал постоянно бегать с кучей флешек и перезаписывать их. Помогли мне кстати тогда вот эти статьи:
Добавляем WDS универсальности
Загрузочное меню PXE с System Center Configuration Manager  И всё было хорошо, добавлялись новые образы для загрузки, образ winPE обрастал новыми фичами и всё работало. Но, уже далеко не все устройства поддерживают режим загрузки BIOS/Legacy, либо если поддерживают, то его включение может находится в очень неочевидном месте. Да и установка windows в legacy режиме, когда есть возможность установки в UEFI — не круто. В итоге решил добавить возможность загрузки в UEFI, и отправился в гугл. Но структурированной информации, как получить рабочий WDS + UEFI, я так и не нашёл.
Собственно, поэтому я и решил написать эту статью. Перед тем как начать, я опишу проблему, которая отняла больше всего времени. Если вы добавляете загрузочный файл к WDS и при попытке загрузится на устройстве
в UEFI вы видите следующий текст:
The selected boot device failed. Press <Enter> to Continue.
Или Boot Device Not Found
Но загрузка в legacy у вас работает.
Тогда один из возможных вариантов — отсутствие файла wdsmgfw.efi,
по следующему пути: %WDSpath%\Boot\x64\wdsmgfw.efi Взять его можно тут: C:\Windows\System32\RemInst\boot\x64\wdsmgfw.efi
Либо, если у вас отсутствует по какой-то причине этот файл, я его выложил на google.
За это решение, спасибо ребятам с реддита. С этой проблемой я убил больше всего времени, т.к. я думал, что проблема где-то в конфигурации WDS или DHCP. Настраивал политики, путём добавления Vendor Classes(Классы поставщиков) для различных архитектур, и настройкой опций DHCP 060, 066, 067. Инструкция по настройке политик DHCP. PXEClient:Arch:00000 — BIOS/Legacy
PXEClient:Arch:00006 — UEFI x86
PXEClient:Arch:00007 — UEFI x64 Так же, пробовал различные варианты загрузочных файлов .efi Так же пытался найти проблему в Журнале событий.
win + r -> eventvwr -> Журналы приложений и служб -> Microsoft -> Windows -> Deployment-Services-Diagnostics Но, как я уже говорил выше, проблема крылась в файле wdsmgfw.efi.
Либо я его сам случайно удалил, либо он не скопировался при установке
и настройке WDS. Ну, приступим! Возьмите любое устройство или виртуальную машину с поддержкой загрузки в режиме UEFI по сети и попробуйте загрузится. У вас должна быть следующая картина:  Если так, то отлично, можно продолжать.
Если же нет, то смотрите, что я написал в предисловии. Запускаем заранее подготовленную Ubuntu, открываем терминал и вставляем эту строку:  Тут хотелось бы сделать небольшое замечание, о том, что возможно вам в Ubuntu придётся добавить пакеты, необходимые для компиляции C и C++.
Просто у меня они уже были установлены. Скачалось? — Отлично!
Теперь нужно сделать конфигурационный файл для сборки.
В терминале, пишем: И вставляем в этот файл, следующий код, после чего сохраняем: Идём опять в терминал и запускаем компиляцию:  Если всё в порядке, то вы должны получить следующий вывод в терминале:  И файл ipxe.efi, по пути: ipxe/src/bin-x86_64-efi/ipxe.efi
Если у вас по какой-то причине не получилось скомпилировать самостоятельно,
я приложил свой файл.
Он скомпилирован для загрузки с http://192.168.0.100/install.ipxe На этом с Ubuntu всё. Берём файл, который мы получили во втором этапе и копируем по пути:
%WDSpath%\Boot\x64\%your-boot-folder%\EFI\BOOT\
После переименовываем его в BOOTX64.EFI.
Это не обязательно, так просто удобней. Потом запускаем cmd от имени администратора, и пишем следующие команды: Этим мы установим полученный файл для загрузки через WDS. Проверим конфигурацию:  Я так же скопировал файл ipxe.efi, переименовал его в BOOTIA32.EFI и сконфигурировал загрузку для него, на всякий случай. architecture:x86uefi
Но по большому счёту в этом нет смысла, т.к. файл Bootmgfw.efi не поддерживает x86 Проверим, что получилось.

Отлично, WDS передаёт для загрузки наш файл и он в свою очередь ищет конфигурацию по пути: http://192.168.0.100/install.ipxe Идём в корневую папку вашего сайта.
По умолчанию это: C:\inetpub\wwwroot Создаём текстовый файл install.ipxe. И конфигурируем его в соответствии с документацией и вашими нуждами.
Так же имеется русскоязычное описание команд.
Я пользовался этой инструкцией при конфигурации своего WDS. Про конфигурацию для загрузки winPE можно прочитать здесь. После создания меню и добавления всех необходимых файлов в корневую папку IIS,
необходимо дать к ним доступ. Т.к. даже если вы попробуете из браузера скачать файл, по его адресу то получите ошибку: HTTP 404.3 - Not Found.
 Для этого необходимо в панели управления IIS добавить типы MIME, в соответствии
с расширениями файлов которые у вас будут загружаться через http. Я не искал какой тип MIME подходит для этих целей лучше, и задал application/octet-stream, после чего всё заработало. Для файлов у которых нет расширения, используйте точку. Вот так:  В конечном итоге, у нас получается возможность загрузки по локальной сети через UEFI. Если мы всё сделали правильно, то будет примерно такое меню выбора загрузки:  Если у вас подготовлены основные инструменты, и вы не будете заморачиваться с конфигурацией, то на реализацию данной возможности уходит примерно 10-20 минут.
У меня же ушло 2 рабочих дня, т.к. пришлось много гуглить. Удачной реализации! Спасибо за внимание и огромное спасибо тем людям чьи статьи мне помогли!
На Хабре это: Ingtar и Deeptown.