Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

Ahojte všetci!

V tomto článku sú popísané kroky, ktoré je potrebné vykonať na pridanie možnosti spúšťania v režime UEFI do vášho WDS.

To znamená, že pokyny v tomto článku predpokladajú, že už máte približne nasledujúcu konfiguráciu:

1. Windows Server 2012R2 (alebo novšie)
2. Kompletné nastavenie DHCP na prácu s WDS
3. Samotný WDS
4. IIS
5. Virtuálny stroj alebo PC s Ubuntu

Tu sú tiež opísané kroky, ktoré mi nepriniesli požadovaný výsledok.
Opísal som ich, aby som uľahčil hľadanie a ušetril váš čas.

Úvod

Raz som na práci nastavil WDS s množstvom funkcií, pretože ma unavovalo neustále behanie s kopou flash diskov a ich prepisovaním.

Pomohli mi vtedy tieto články:
Pridávame univerzálnosť WDS
Bootovacie menu PXE so System Center Configuration Managerom


Vyzerá to takto

Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

A všetko bolo v poriadku, pridávali sa nové obrazy na spúšťanie, obraz winPE sa obohacoval novými funkciami a všetko fungovalo.

Ale už nie všetky zariadenia podporujú režim spúšťania BIOS/Legacy, alebo ak ho podporujú, jeho zapnutie sa môže nachádzať na veľmi neprehľadnom mieste.

A inštalácia systému Windows v režime legacy, keď je možnosť inštalácie v UEFI — nie je optimálna.

Nakoniec som sa rozhodol pridať možnosť spúšťania v UEFI a vydal som sa na Google.

Ale štrukturované informácie o tom, ako získať funkčný WDS + UEFI, som nenašiel.
Presne preto som sa rozhodol napísať tento článok.

Predtým ako začnem, opíšem problém, ktorý mi vzal najviac času.

Pri pridávaní UEFI k WDS môže nastať nasledujúca, dosť nejasná situácia:

Ak pridávate spúšťací súbor k WDS a pri pokuse o spustenie zariadenia
v UEFI vidíte nasledujúci text:
The selected boot device failed. Press to Continue.
Alebo Boot Device Not Found
Ale spúšťanie v legacy režime funguje.
Potom jednou z možných variant je absencia súboru wdsmgfw.efi,
na nasledujúcej ceste: %WDSpath%Bootx64wdsmgfw.efi

Môžete ho získať tu: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Alebo, ak vám tento súbor z nejakého dôvodu chýba, zverejnil som ho na google.
Za toto riešenie ďakujem chalanom z Redditu.

S týmto problémom som strácal najviac času, pretože som si myslel, že problém je niekde v konfigurácii WDS alebo DHCP.

Nastavoval som politiky pridaním Vendor Classes (Klasifikácia dodávateľov) pre rôzne architektúry a nastavením možností DHCP 060, 066, 067. Návod o nastavení politík DHCP.

Architektúry v ASCII pre nastavenie DHCP

PXEClient:Arch:00000 — BIOS/Legacy
PXEClient:Arch:00006 — UEFI x86
PXEClient:Arch:00007 — UEFI x64

Tiež som skúšal rôzne varianty zavádzacích súborov .efi

  • syslinux
  • grub 2

Tiež som sa snažil nájsť problém v Zázname udalostí.
win + r -> eventvwr -> Záznamy aplikácií a služieb -> Microsoft -> Windows -> Deployment-Services-Diagnostics

Ale, ako som už povedal vyššie, problém bol v súbore wdsmgfw.efi.
Buď som ho náhodou sám vymazal, alebo sa pri inštalácii nekopíroval
a nastavení WDS.

Tak poďme na to!

Návod

Fáza 1 — Kontrola funkčnosti WDS

Vezmite akékoľvek zariadenie alebo virtuálny stroj, ktorý podporuje zavádzanie v režime UEFI cez sieť a pokúste sa načítať.

Mali by ste vidieť nasledujúci obraz:

Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

Ak áno, skvele, môžeme pokračovať.
Ak nie, pozrite sa, čo som napísal v predslove.

Fáza 2 — Zostavenie zavádzacieho súboru iPXE

Spustíme vopred pripravenú Ubuntu, otvoríme terminál a vložíme tento riadok:

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

Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

Chcel by som pridať malú poznámku, že možno budete musieť v Ubuntu pridať balíky potrebné na kompiláciu C a C++.
Ja som ich už mal nainštalované.

Stiahlo sa? — Skvele!
Teraz je potrebné vytvoriť konfiguračný súbor pre zostavenie.
V termináli napíšeme:

cd ipxe/src
gedit chain.ipxe

A vložíme do tohto súboru nasledujúci kód, po ktorom ho uložíme:

#!ipxe

dhcp
chain http://%IP-address-your-IIS-server%/install.ipxe

Ideme opäť do terminálu a spúšťame kompiláciu:

make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe

Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

Ak je všetko v poriadku, mali by ste vidieť nasledujúci výstup v termináli:

Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

A súbor ipxe.efi, na ceste: ipxe/src/bin-x86_64-efi/ipxe.efi
Ak sa vám z nejakého dôvodu nepodarilo skompilovať ho sami,
priložil som svoj súbor.
Je skompilovaný na zavádzanie z http://192.168.0.100/install.ipxe

Na tomto s Ubuntu končíme.

Fáza 3 — Pridanie ipxe.efi do WDS

Zoberieme súbor, ktorý sme získali v druhej fáze a skopírujeme ho na cestu:
%WDSpath%Bootx64%your-boot-folderIBOOT
Potom ho premeníme na BOOTX64.EFI.
Nie je to povinné, ale je to pohodlnejšie.

Potom spustíme cmd ako administrátor a napíšeme nasledujúce príkazy:

wdsutil /set-server /bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefi
а
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefi

Týmto nastavíme získaný súbor na zavádzanie cez WDS.

Skontrolujeme konfiguráciu:

wdsutil /get-server /Show:Config

Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

Takisto som skopíroval súbor ipxe.efi, premenujem ho na BOOTIA32.EFI a nakonfiguroval načítanie pre neho, pre prípad. architecture:x86uefi
Ale vo veľkej miere to nemá zmysel, pretože súbor Bootmgfw.efi nepodporuje x86

Skontrolujeme, čo sme dosiahli.
Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI
Výborne, WDS prenáša náš súbor na načítanie a ten následne hľadá konfiguráciu na ceste: http://192.168.0.100/install.ipxe

Krok 4 — Konfigurácia menu

Prejdite do koreňového priečinka vášho webu.
Predvolene je to: C:inetpubwwwroot

Vytvorte textový súbor install.ipxe.

A nastavte ho v súlade s dokumentáciou a vašimi potrebami.
Taktiež je k dispozícii aj slovenská verzia popis príkazov.
Používal som tejto návod pri konfigurácii svojho WDS.

Príklad konfigurácie 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

O konfigurácii pre načítanie winPE sa môžete dočítať tu.

Krok 5 — MIME typy

Po vytvorení menu a pridaní všetkých potrebných súborov do koreňového priečinka IIS,
je potrebné im udeliť prístup.

Keďže aj keby ste sa pokúsili stiahnuť súbor z prehliadača, dostanete chybu: HTTP 404.3 - Not Found.
Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

Na to je potrebné v ovládacom paneli IIS pridať MIME typy, podľa
prípon súborov, ktoré sa budú načítavať cez http.

Nehľadal som, ktorý MIME typ je pre tieto účely najlepší, a nastavil som application/octet-stream, po čom všetko fungovalo.

Pre súbory, ktoré nemajú príponu, použite bodku.

Takto:

Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

Záver

Nakoniec máme možnosť načítania cez lokálnu sieť pomocou UEFI.

Ak sme všetko urobili správne, malo by byť približne takéto zvolenie načítania:

Rozširujeme funkčnosť WDS: pridávanie možnosti bootovania do UEFI

Ak máte pripravené základné nástroje a nebudete sa zaoberať konfiguráciou, realizácia tejto možnosti trvá približne 10-20 minút.
Mne to trvalo 2 pracovné dni, pretože som musel veľa googliť.

Úspešnú realizáciu!

Ďakujem za pozornosť a veľké poďakovanie tým ľuďom, ktorých články mi pomohli!
Na Habré to je: Ingtar a Deeptown.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster