- PVSM.RU - https://www.pvsm.ru -
Всем привет!
В данной статье, описаны шаги которые необходимо выполнить, для добавления к вашему WDS, возможности загрузки в режиме UEFI.
Т.е. инструкция в данной статье, предполагает, что у вас уже имеется, примерно следующая конфигурация:
1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu
Так же, здесь описаны действия, которые не принесли мне должного результата.
Описал я их, для облегчения поиска и экономии вашего времени.
Сделал как-то на работе WDS с множеством плюшек, т.к. устал постоянно бегать с кучей флешек и перезаписывать их.
Помогли мне кстати тогда вот эти статьи:
Добавляем WDS универсальности [1]
Загрузочное меню PXE с System Center Configuration Manager [2]
И всё было хорошо, добавлялись новые образы для загрузки, образ 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%Bootx64wdsmgfw.efi
Взять его можно тут: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Либо, если у вас отсутствует по какой-то причине этот файл, я его выложил на google [3].
За это решение, спасибо ребятам с реддита [4].
С этой проблемой я убил больше всего времени, т.к. я думал, что проблема где-то в конфигурации WDS или DHCP.
Настраивал политики, путём добавления Vendor Classes(Классы поставщиков) для различных архитектур, и настройкой опций DHCP 060, 066, 067. Инструкция [5] по настройке политик 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, открываем терминал и вставляем эту строку:
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
Если у вас по какой-то причине не получилось скомпилировать самостоятельно,
я приложил свой файл [6].
Он скомпилирован для загрузки с http://192.168.0.100/install.ipxe
На этом с Ubuntu всё.
Берём файл, который мы получили во втором этапе и копируем по пути:
%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
Идём в корневую папку вашего сайта.
По умолчанию это: C:inetpubwwwroot
Создаём текстовый файл install.ipxe.
И конфигурируем его в соответствии с документацией [7] и вашими нуждами.
Так же имеется русскоязычное описание [8] команд.
Я пользовался этой [9] инструкцией при конфигурации своего WDS.
#!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 можно прочитать здесь [10].
После создания меню и добавления всех необходимых файлов в корневую папку IIS,
необходимо дать к ним доступ.
Т.к. даже если вы попробуете из браузера скачать файл, по его адресу то получите ошибку: HTTP 404.3 - Not Found
.
Для этого необходимо в панели управления IIS добавить типы MIME, в соответствии
с расширениями файлов которые у вас будут загружаться через http.
Я не искал какой тип MIME подходит для этих целей лучше, и задал application/octet-stream
, после чего всё заработало.
Для файлов у которых нет расширения, используйте точку.
Вот так:
В конечном итоге, у нас получается возможность загрузки по локальной сети через UEFI.
Если мы всё сделали правильно, то будет примерно такое меню выбора загрузки:
Если у вас подготовлены основные инструменты и вы не будете заморачиваться с конфигурацией, то на реализацию данной возможности уходит примерно 10-20 минут.
У меня же ушло 2 рабочих дня, т.к. пришлось много гуглить.
Удачной реализации!
Спасибо за внимание и огромное спасибо тем людям чьи статьи мне помогли!
На Хабре это: Ingtar [11] и Deeptown [12].
Автор: BlackFIlms
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows/314886
Ссылки в тексте:
[1] Добавляем WDS универсальности: https://habr.com/ru/post/171329/
[2] Загрузочное меню PXE с System Center Configuration Manager: https://habr.com/ru/post/175669/
[3] google: https://drive.google.com/file/d/10uNaSnlcDz98pihzPkiOfvP1OsPbYsEg/view?usp=sharing
[4] реддита: https://www.reddit.com/r/sysadmin/comments/9fj6ct/cant_get_uefi_pxe_boot_to_wds_working_ive_tried/
[5] Инструкция: https://gal.vin/2017/05/05/pxe-booting-for-uefi-bios/
[6] файл: https://drive.google.com/file/d/189NZhU0hdZSiYvFoLI83AZbfAv3cQCOK/view?usp=sharing
[7] документацией: http://ipxe.org/docs
[8] описание: http://tdkare.ru/sysadmin/index.php/IPXE
[9] этой: https://doc.rogerwhittaker.org.uk/ipxe-installation-and-EFI/
[10] здесь: http://ipxe.org/howto/winpe
[11] Ingtar: https://habr.com/ru/users/ingtar/
[12] Deeptown: https://habr.com/ru/users/deeptown/
[13] Источник: https://habr.com/ru/post/448476/?utm_campaign=448476
Нажмите здесь для печати.