Усім прывітанне!
У дадзеным артыкуле, апісаны крокі якія неабходна выканаць, для дадання да вашага 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