Всім привіт!
У цій статті описані кроки, які необхідно виконати, для додавання до вашого WDS, можливості завантаження в режимі UEFI.
Тобто. інструкція в цій статті, припускає, що у вас вже є приблизно наступна конфігурація:
1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu
Також тут описані дії, які не принесли мені належного результату.
Описав я їх для полегшення пошуку та економії вашого часу.
Передмова
Зробив якось на роботі WDS із безліччю плюшок, т.к. втомився постійно бігати з купою флешок і перезаписувати їх.
Допомогли мені до речі тоді ці статті:
І все було добре, додавали нові образи для завантаження, образ winPE обростав новими фічами і все працювало.
Але, вже далеко не всі пристрої підтримують режим завантаження BIOS/Legacy, або якщо підтримують, його включення може знаходиться в дуже неочевидному місці.
Та й установка windows у legacy режимі, коли є можливість встановлення в UEFI – не круто.
У підсумку вирішив додати можливість завантаження в UEFI, і вирушив у гугл.
Але структурованої інформації, як отримати робочий WDS+UEFI, я так і не знайшов.
Власне тому я і вирішив написати цю статтю.
Перед тим як почати, я опишу проблему, яка забрала найбільше часу.
При додаванні UEFI до WDS можлива наступна, досить очевидна ситуація:
Якщо ви додаєте завантажувальний файл до WDS і при спробі завантажиться на пристрої
у UEFI ви бачите наступний текст:
The selected boot device failed. Press <Enter> to Continue.
Або Boot Device Not Found
Але завантаження у legacy у вас працює.
Тоді один із можливих варіантів – відсутність файлу wdsmgfw.efi,
наступним шляхом: %WDSpath%Bootx64wdsmgfw.efi
Взяти його можна тут: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Або якщо у вас відсутній з якоїсь причини цей файл, я його виклав на
За це рішення, дякую хлопцям з
З цією проблемою я вбив найбільше часу, т.к. я думав, що проблема десь у конфігурації WDS чи DHCP.
Налаштовував політики, шляхом додавання Vendor Classes (Класи постачальників) для різних архітектур, та настроюванням опцій DHCP 060, 066, 067.
Архітектури в 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-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
Створюємо текстовий файл install.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 types
Після створення меню та додавання всіх необхідних файлів до кореневої папки IIS,
необхідно дати доступ до них.
Т.к. навіть якщо ви спробуєте з браузера завантажити файл, за його адресою, то отримаєте помилку: HTTP 404.3 - Not Found
.
Для цього необхідно в панелі керування IIS додати типи MIME, відповідно
з розширеннями файлів, які у вас будуть завантажуватися через http.
Я не шукав який тип MIME підходить для цих цілей краще, і поставив application/octet-stream
, Після чого все запрацювало.
Для файлів, які не мають розширення, використовуйте точку.
Ось так:
Висновок
Зрештою, у нас виходить можливість завантаження по локальній мережі через UEFI.
Якщо ми все зробили правильно, буде приблизно таке меню вибору завантаження:
Якщо у вас підготовлені основні інструменти і ви не морочитиметеся з конфігурацією, то на реалізацію цієї можливості йде приблизно 10-20 хвилин.
У мене пішло 2 робочих дні, т.к. довелося багато гуглити.
Вдалої реалізації!
Дякуємо за увагу та велике спасибі тим людям чиї статті мені допомогли!
На Хабре це:
Джерело: habr.com