Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

Усім прывітанне!

У дадзеным артыкуле, апісаны крокі якія неабходна выканаць, для дадання да вашага WDS, магчымасці загрузкі ў рэжыме UEFI.

Г.зн. інструкцыя ў дадзеным артыкуле, мяркуе, што ў вас ужо маецца, прыкладна наступная канфігурацыя:

1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu

Таксама, тут апісаны дзеянні, якія не прынеслі мне належнага выніку.
Апісаў я іх, для палягчэння пошуку і эканоміі вашага часу.

Прадмова

Зрабіў неяк на працы WDS з мноствам плюшак, т.я. стаміўся ўвесь час бегаць з кучай флэшак і перазапісваць іх.

Дапамаглі мне дарэчы тады вось гэтыя артыкулы:
Дадаем WDS ўніверсальнасці
Загрузнае меню PXE з System Center Configuration Manager


Выглядае гэта вось так

Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

І ўсё было добра, дадаваліся новыя выявы для загрузкі, выява 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
Або, калі ў вас адсутнічае па нейкім чынніку гэты файл, я яго выклаў на Google.
За гэтае рашэнне, дзякуй рабятам з рэдзіта.

З гэтай праблемай я забіў больш за ўсё часу, т.я. я думаў, што праблема недзе ў канфігурацыі 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 па сетцы і паспрабуйце загрузіцца.

У вас павінна быць наступная карціна:

Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

Калі так, то добра, можна працягваць.
Калі ж не, то гледзіце, што я напісаў у прадмове.

Этап 2 - Зборка загрузнага файла iPXE

Запускаем загадзя падрыхтаваную Ubuntu, адчыняны тэрмінал і ўстаўляемы гэты радок:

git clone https://git.ipxe.org/ipxe.git ipxe

Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

Тут жадалася б зрабіць невялікую заўвагу, аб тым, што магчыма вам у 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

Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

Калі ўсё ў парадку, то вы павінны атрымаць наступную выснову ў тэрмінале:

Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

І файл 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

Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

Я гэтак жа скапіяваў файл ipxe.efi, пераназваў яго ў BOOTIA32.EFI і сканфігураваў загрузку для яго, на ўсялякі выпадак. architecture:x86uefi
Але па вялікім рахунку ў гэтым няма сэнсу, т.я. файл Bootmgfw.efi не падтрымлівае x86

Праверым, што атрымалася.
Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI
Выдатна, 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 types

Пасля стварэння меню і даданні ўсіх неабходных файлаў у каранёвую тэчку IIS,
неабходна даць да іх доступ.

Т.к. нават калі вы паспрабуеце з браўзэра спампаваць файл, па ім адрасу то атрымаеце памылку: HTTP 404.3 - Not Found.
Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

Для гэтага неабходна ў панэлі кіравання IIS дадаць тыпы MIME, у адпаведнасці
з пашырэннямі файлаў якія ў вас будуць загружацца праз http.

Я не шукаў які тып MIME падыходзіць для гэтых мэт лепш, і задаў application/octet-stream, пасля чаго ўсё зарабіла.

Для файлаў у якіх няма пашырэння, выкарыстоўвайце кропку.

Вось так:

Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

Заключэнне

У канчатковым выніку, у нас атрымліваецца магчымасць загрузкі па лакальнай сетцы праз UEFI.

Калі мы ўсё зрабілі правільна, то будзе прыкладна такое меню выбару загрузкі:

Пашыраем функцыянал WDS: даданне магчымасці загрузкі ў UEFI

Калі ў вас падрыхтаваны асноўныя прылады і вы не будзеце затлумляцца з канфігурацыяй, то на рэалізацыю дадзенай магчымасці сыходзіць прыкладна 10-20 хвілін.
У мяне ж сышло 2 працоўныя дні, т.я. прыйшлося шмат гугліць.

Удалай рэалізацыі!

Дзякуй за ўвагу і вялікі дзякуй тым людзям чые артыкулы мне дапамаглі!
На Хабре гэта: Ingtar и Deeptown.

Крыніца: habr.com

Дадаць каментар