Cześć wszystkim!
W tym artykule opisano kroki, które należy wykonać, aby dodać możliwość uruchamiania w trybie UEFI do swojego WDS.
To znaczy, instrukcja w tym artykule zakłada, że ma Pan/Pani już mniej więcej taką konfigurację:
1. Windows Server 2012R2 (lub nowszy)
2. W pełni skonfigurowany DHCP do pracy z WDS
3. Sam WDS
4. IIS
5. Maszyna wirtualna lub komputer z UbuntuOpisałem również działania, które nie przyniosły mi oczekiwanych rezultatów.
Sporządziłem je, aby ułatwić wyszukiwanie i zaoszczędzić Państwa czas.
Wstęp
Stworzyłem kiedyś WDS w pracy z mnóstwem dodatków, ponieważ miałem dosyć ciągłego biegania z wieloma pendrive'ami i ich zapisywania.
Pomogły mi wtedy te artykuły:
Wygląda to tak

I wszystko działało dobrze, nowe obrazy do uruchamiania były dodawane, obraz winPE zyskiwał nowe funkcje i wszystko działało.
Ale nie wszystkie urządzenia wspierają tryb uruchamiania BIOS/Legacy, a jeśli tak, to jego włączenie może być w bardzo nieoczywistym miejscu.
Zresztą instalacja Windows w trybie legacy, kiedy jest możliwość instalacji w UEFI - to nie jest fajne.
Postanowiłem więc dodać możliwość uruchamiania w UEFI i wyruszyłem na Google.
Jednak nie znalazłem zorganizowanych informacji, jak uzyskać działający WDS + UEFI.
Właściwie dlatego postanowiłem napisać ten artykuł.
Zanim zaczniemy, opiszę problem, który zajął najwięcej czasu.
Podczas dodawania UEFI do WDS może wystąpić następująca, dość nieoczywista sytuacja:
Jeśli dodajesz plik uruchamiający do WDS i podczas próby uruchomienia na urządzeniu
w UEFI widzisz następujący tekst:
Urządzenie rozruchowe nie powiodło się. Naciśnij <Enter> aby kontynuować.
Lub Urządzenie rozruchowe nie zostało znalezione
Jednak uruchamianie w trybie legacy działa.
W takim przypadku jednym z możliwych rozwiązań jest brak pliku wdsmgfw.efi,
w następującej ścieżce: %WDSpath%Bootx64wdsmgfw.efi
Można go wziąć stąd: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Lub, jeśli z jakiegoś powodu brakuje Państwu tego pliku, zamieściłem go na .
Za to rozwiązanie dziękuję chłopakom z .
Ten problem zajął mi najwięcej czasu, ponieważ myślałem, że problem leży gdzieś w konfiguracji WDS lub DHCP.
Konfigurowałem polityki, dodając klasy dostawców (Vendor Classes) dla różnych architektur oraz ustawienia opcji DHCP 060, 066, 067. w zakresie konfiguracji polityk DHCP.
Architektury w ASCII do konfiguracji DHCP
PXEClient:Arch:00000 - BIOS/Legacy
PXEClient:Arch:00006 - UEFI x86
PXEClient:Arch:00007 - UEFI x64
Również próbowałem różnych wariantów plików rozruchowych .efi
- syslinux
- grub 2
Także próbowałem znaleźć problem w Dzienniku zdarzeń.
win + r -> eventvwr -> Dzienniki aplikacji i usług -> Microsoft -> Windows -> Diagnostyka usług wdrażania
Jednak, jak już wspomniałem, problem znajdował się w pliku wdsmgfw.efi.
Albo sam go przypadkowo usunąłem, albo nie skopiował się podczas instalacji
i konfiguracji WDS.
Cóż, zaczynajmy!
Instrukcja
Etap 1 — Sprawdzenie działania WDS
Weź dowolne urządzenie lub maszynę wirtualną z obsługą rozruchu w trybie UEFI przez sieć i spróbuj się uruchomić.
Powinieneś mieć następujący obraz:

Jeśli tak, to świetnie, możesz kontynuować.
Jeśli nie, to zobacz, co napisałem we wstępie.
Etap 2 — Budowa pliku rozruchowego iPXE
Uruchamiamy wcześniej przygotowaną Ubuntu, otwieramy terminal i wklejamy tę linię:
git clone https://git.ipxe.org/ipxe.git ipxe
Tutaj chciałbym zwrócić uwagę, że być może będziesz musiał dodać pakiety potrzebne do kompilacji C i C++ w Ubuntu.
Po prostu u mnie były już zainstalowane.
Pobrało się? — Świetnie!
Teraz trzeba stworzyć plik konfiguracyjny do budowy.
W terminalu wpisz:
cd ipxe/src
gedit chain.ipxeI wklej w tym pliku poniższy kod, a następnie zapisz:
#!ipxe
dhcp
chain http://%IP-address-your-IIS-server%/install.ipxeWracamy znowu do terminala i uruchamiamy kompilację:
make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe
Jeśli wszystko w porządku, powinieneś otrzymać następujący wynik w terminalu:

I plik ipxe.efi, w ścieżce: ipxe/src/bin-x86_64-efi/ipxe.efi
Jeśli z jakiegoś powodu nie udało ci się skompilować samodzielnie,
dołączyłem swój .
Został skompilowany do rozruchu z http://192.168.0.100/install.ipxe
Na tym etapie z Ubuntu to wszystko.
Etap 3 — Dodanie ipxe.efi do WDS
Bierzemy plik, który otrzymaliśmy w drugim etapie i kopiujemy go w ścieżkę:
%WDSpath%Bootx64%your-boot-folderIBOOT
Następnie zmieniamy jego nazwę na BOOTX64.EFI.
To nie jest konieczne, po prostu tak jest wygodniej.
Potem uruchamiamy cmd jako administrator i wpisujemy następujące komendy:
wdsutil /set-server /bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefi
or
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefiDzięki temu ustanowimy otrzymany plik do rozruchu przez WDS.
Sprawdzimy konfigurację:
wdsutil /get-server /Show:Config
Również skopiowałem plik ipxe.efi, zmieniłem jego nazwę na BOOTIA32.EFI i skonfigurowałem rozruch dla niego, na wszelki wypadek. architecture:x86uefi
Jednak ogólnie nie ma to większego sensu, ponieważ plik Bootmgfw.efi nie obsługuje x86.
Sprawdzimy, co się udało.

Doskonałe, WDS przesyła nasz plik do załadowania i on z kolei szuka konfiguracji w ścieżce: http://192.168.0.100/install.ipxe
Etap 4 — Konfiguracja menu
Przechodzimy do głównego folderu Twojej strony.
Domyślnie jest to: C:inetpubwwwroot
Tworzymy plik tekstowy install.ipxe.
I konfigurujemy go zgodnie z i Twoimi potrzebami.
Dostępne jest również polskojęzyczne polecenie.
Korzystałem z instrukcji przy konfiguracji mojego WDS.
Przykład konfiguracji 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 failedO konfiguracji do ładowania winPE można przeczytać .
Etap 5 — Typy MIME
Po utworzeniu menu i dodaniu wszystkich niezbędnych plików do głównego folderu IIS,
konieczne jest udzielenie do nich dostępu.
Ponieważ nawet jeśli spróbujesz pobrać plik z przeglądarki pod jego adresem, otrzymasz błąd: HTTP 404.3 - Nie znaleziono.

W tym celu należy w panelu sterowania IIS dodać typy MIME, zgodnie
z rozszerzeniami plików, które będą ładowane przez http.
Nie szukałem, jaki typ MIME najlepiej pasuje do tych celów, i ustawiłem application/octet-stream, po czym wszystko zadziałało.
Dla plików, które nie mają rozszerzenia, użyj kropki.
Oto jak:

Podsumowanie
Ostatecznie mamy możliwość ładowania przez sieć lokalną za pomocą UEFI.
Jeśli wszystko zrobiliśmy poprawnie, powinno wyjść mniej więcej takie menu wyboru ładowania:

Jeśli masz przygotowane podstawowe narzędzia i nie będziesz się martwić o konfigurację, realizacja tej możliwości zajmuje około 10-20 minut.
Mi to zajęło 2 dni robocze, ponieważ musiałem dużo googlować.
Powodzenia w realizacji!
Dziękuję za uwagę i ogromne podziękowania dla tych, którzy napisali artykuły, które mi pomogły!
Na Habra to: i .
Źródło: habr.com
