Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

Witam wszystkich!

W tym artykule opisano kroki, które należy wykonać, aby dodać funkcję rozruchu UEFI do WDS.

Te. Instrukcje w tym artykule zakładają, że masz już następującą konfigurację:

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

Opisane są tu również działania, które nie przyniosły mi właściwego rezultatu.
Opisałem je, aby ułatwić wyszukiwanie i zaoszczędzić czas.

Przedmowa

Zrobiłem WDS w pracy z dużą ilością gadżetów, tk. zmęczony ciągłym bieganiem z wieloma dyskami flash i nadpisywaniem ich.

Przy okazji pomogły mi te artykuły:
Dodanie wszechstronności WDS
Menu rozruchu środowiska PXE z programem System Center Configuration Manager


To wygląda tak

Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

I wszystko było w porządku, dodano nowe obrazy do załadowania, obraz winPE został zarośnięty nowymi funkcjami i wszystko działało.

Ale nie wszystkie urządzenia obsługują tryb rozruchu BIOS / Legacy, a jeśli tak, to jego włączenie może znajdować się w bardzo nieoczywistym miejscu.

Tak, a instalowanie systemu Windows w trybie legacy, gdy można zainstalować w UEFI, nie jest fajne.

W rezultacie zdecydowałem się dodać możliwość uruchamiania w UEFI i poszedłem do Google.

Ale nie znalazłem uporządkowanych informacji o tym, jak uzyskać działający WDS + UEFI.
Właściwie to dlatego zdecydowałem się napisać ten artykuł.

Zanim zacznę, opiszę problem, który zajął najwięcej czasu.

Przy dodawaniu UEFI do WDS możliwa jest następująca, raczej nieoczywista sytuacja:

Jeśli dodasz plik rozruchowy do usługi WDS i spróbujesz uruchomić urządzenie
w UEFI widzisz następujący tekst:
The selected boot device failed. Press <Enter> to Continue.
Lub Boot Device Not Found
Ale ładowanie w starszej wersji działa dla Ciebie.
Wtedy jedną z możliwych opcji jest brak pliku wdsmgfw.efi,
wzdłuż następującej ścieżki: %WDSpath%Bootx64wdsmgfw.efi

Możesz to wziąć tutaj: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Lub, jeśli z jakiegoś powodu brakuje tego pliku, umieściłem go na google.
Za to rozwiązanie dziękuję chłopakom z reddit.

Z tym problemem zabiłem najwięcej czasu, bo. Myślałem, że problem leży gdzieś w konfiguracji WDS lub DHCP.

Skonfigurowano zasady, dodając klasy dostawców dla różnych architektur i konfigurując opcje DHCP 060, 066, 067. Instrukcja do konfigurowania zasad DHCP.

Architektury w ASCII do konfigurowania DHCP

PXEClient:Arch:00000 — BIOS/starsza wersja
PXEClient:Arch:00006 - UEFI x86
PXEClient:Arch:00007 - UEFI x64

Próbowałem też różnych opcji dla plików rozruchowych. .efi

  • syslinux
  • gruba 2

Próbowałem również znaleźć problem w dzienniku zdarzeń.
win + r -> eventvwr -> Журналы приложений и служб -> Microsoft -> Windows -> Deployment-Services-Diagnostics

Ale, jak powiedziałem powyżej, problem leżał w pliku wdsmgfw.efi.
Albo sam go przypadkowo usunąłem, albo nie został skopiowany podczas instalacji
i konfiguracji WDS.

Cóż, zaczynajmy!

Instrukcja

Etap 1 — Sprawdź, czy WDS działa

Weź dowolne urządzenie lub maszynę wirtualną z obsługą uruchamiania w trybie UEFI przez sieć i spróbuj uruchomić.

Powinieneś mieć następujący obraz:

Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

Jeśli tak, świetnie, możesz kontynuować.
Jeśli nie, to zobacz, co napisałem we wstępie.

Etap 2 — budowanie pliku rozruchowego iPXE

Uruchamiamy wstępnie przygotowane Ubuntu, otwieramy terminal i wklejamy tę linię:

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

Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

Tutaj chciałbym zrobić małą uwagę, że być może będziesz musiał dodać pakiety do Ubuntu, które są niezbędne do kompilacji C i C ++.
Właśnie mam je zainstalowane.

Pobrano? - Świetnie!
Teraz musisz utworzyć plik konfiguracyjny dla zespołu.
W terminalu piszemy:

cd ipxe/src
gedit chain.ipxe

I wklej następujący kod do tego pliku, a następnie zapisz:

#!ipxe

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

Wracamy do terminala i rozpoczynamy kompilację:

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

Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

Jeśli wszystko jest w porządku, powinieneś otrzymać następujące wyjście w terminalu:

Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

I plik ipxe.efi, po drodze: ipxe/src/bin-x86_64-efi/ipxe.efi
Jeśli z jakiegoś powodu nie możesz skompilować samodzielnie,
Załączyłem swoje файл.
Jest kompilowany do rozruchu http://192.168.0.100/install.ipxe

To wszystko dla Ubuntu.

Krok 3 - Dodanie ipxe.efi do WDS

Bierzemy plik, który otrzymaliśmy w drugim etapie i kopiujemy go po drodze:
%WDSpath%Bootx64%your-boot-folder%EFIBOOT
Po zmianie nazwy na BOOTX64.EFI.
Nie jest to konieczne, jest po prostu wygodniejsze.

Następnie uruchamiamy cmd w imieniu administratora i napisz następujące polecenia:

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

Spowoduje to ustawienie pliku wynikowego do pobrania przez WDS.

Sprawdźmy konfigurację:

wdsutil /get-server /Show:Config

Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

Skopiowałem również plik ipxe.efi, zmieniłem jego nazwę na BOOTIA32.EFI i skonfigurowałem dla niego rozruch, na wszelki wypadek. architecture:x86uefi
Ale ogólnie rzecz biorąc, nie ma to sensu, ponieważ. Plik Bootmgfw.efi nie obsługuje architektury x86

Sprawdźmy, co się stało.
Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI
Świetnie, WDS wysyła nasz plik do pobrania, a ten z kolei szuka konfiguracji po ścieżce: http://192.168.0.100/install.ipxe

Krok 4 - Konfiguracja menu

Przejdź do folderu głównego swojej witryny.
Wartość domyślna to: C:inetpubwwwroot

Utwórz plik tekstowy zainstaluj.ipxe.

i skonfiguruj go wg dokumentacja i Twoje potrzeby.
Jest też język rosyjski описание polecenia.
podobało mi się to instrukcje podczas konfigurowania WDS.

przykład konfiguracji pliku 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

Możesz przeczytać o konfiguracji ładowania winPE tutaj.

Etap 5 - Typy MIME

Po utworzeniu menu i dodaniu wszystkich niezbędnych plików do folderu głównego IIS,
musisz dać im dostęp.

Ponieważ nawet jeśli spróbujesz pobrać plik z przeglądarki, pojawi się błąd pod jego adresem: HTTP 404.3 - Not Found.
Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

W tym celu należy dodać typy MIME w panelu sterowania IIS zgodnie z
z rozszerzeniami plików, które pobierzesz przez http.

Nie szukałem, który typ MIME jest najlepszy do tego celu i zapytałem application/octet-stream, po czym wszystko działało.

W przypadku plików, które nie mają rozszerzenia, użyj kropki.

Oto tak:

Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

wniosek

Docelowo otrzymujemy możliwość bootowania przez sieć lokalną poprzez UEFI.

Jeśli zrobiliśmy wszystko poprawnie, pojawi się coś takiego jak to menu wyboru rozruchu:

Rozszerzanie funkcjonalności WDS: Dodanie możliwości rozruchu UEFI

Jeśli masz przygotowane podstawowe narzędzia i nie będziesz zawracał sobie głowy konfiguracją, to wdrożenie tej funkcji zajmie około 10-20 minut.
Zajęło mi to 2 dni robocze, bo. Musiałem dużo googlować.

Udana realizacja!

Dziękuję za uwagę i wielkie podziękowania dla osób, których artykuły mi pomogły!
Na Habré jest: Ingtar и Głębokie miasto.

Źródło: www.habr.com

Dodaj komentarz