Здравейте на всички!
В тази статия са описани стъпките, които трябва да изпълните, за да добавите възможност за стартиране в режим UEFI към вашия WDS.
Тоест, инструкцията в тази статия предполага, че вече имате приблизително следната конфигурация:
1. Windows Server 2012R2 (или нова версия)
2. Пълно настроен DHCP за работа с WDS
3. Самият WDS
4. IIS
5. Виртуална машина или ПК с UbuntuСъщо така, тук са описани действия, които не ми донесоха желаните резултати.
Описах ги, за да улесня търсенето и да спестя вашето време.
Предговор
Работя WDS с много допълнителни функции, защото се уморих постоянно да търся куп цифрови ключове и да ги записвам отново.
Тези статии ми помогнаха тогава:
Изглежда така

И всичко беше наред, новите образи за стартиране се добавяха, образът WinPE получаваше нови функции и всичко работеше.
Но вече далеч не всички устройства поддържат BIOS/Legacy режим на стартиране, или ако го поддържат, неговото активиране може да е на много неочевидно място.
И инсталацията на Windows в legacy режим, когато има възможност за инсталация в UEFI — не е особено удобно.
В крайна сметка реших да добавя възможност за стартиране в UEFI и се отправих към Google.
Но структурирана информация за това как да получите работещ WDS + UEFI не намерих.
Всъщност, затова реших да напиша тази статия.
Преди да започна, ще опиша проблема, който ми отне най-много време.
При добавяне на UEFI към WDS може да възникне следната, доста неочевидна ситуация:
Ако добавите стартиращ файл към WDS и при опит за стартиране на устройството
в UEFI виждате следния текст:
Избраното устройство за стартиране е неуспешно. Натиснете <Enter> за продължение.
Или Устройство за стартиране не е намерено.
Но стартирането в legacy режим работи.
Тогава едно от възможните решения е липсата на файла wdsmgfw.efi,
на следния път: %WDSpath%Bootx64wdsmgfw.efi
Можете да го вземете тук: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Или, ако по някаква причина нямате този файл, го публикувах на .
За това решение благодаря на момчетата от .
С този проблем убих най-много време, защото мислех, че проблемът е някъде в конфигурацията на WDS или DHCP.
Настроих политиките, като добавих класове на доставчици (Vendor Classes) за различни архитектури и настройване на опции DHCP 060, 066, 067. за настройка на политиките на DHCP.
Архитектурите в ASCII за настройка на DHCP
PXEClient:Arch:00000 — BIOS/Legacy
PXEClient:Arch:00006 — UEFI x86
PXEClient:Arch:00007 — UEFI x64
Също така, пробвах различни варианти на зареждащи файлове .efi
- syslinux
- grub 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%Bootx64%your-boot-folderIBOOT
След това го преименувайте на BOOTX64.EFI.
Това не е задължително, просто така е по-удобно.
След това стартирайте cmd като администратор и пишете следните команди:
wdsutil /set-server /bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefi
и
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
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
Създаваме текстов файл 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 минути за реализиране на тази възможност.
На мен ми отне 2 работни дни, тъй като трябваше да гугля много.
Успешна реализация!
Благодаря за вниманието и огромно благодаря на онези хора, чиито статии ми помогнаха!
На Хабра това е: и .
Източник: habr.com
