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:
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
Za to rozwiązanie dziękuję chłopakom z
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.
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:
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
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
Jeśli wszystko jest w porządku, powinieneś otrzymać następujące wyjście w terminalu:
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
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.
Ś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
Jest też język rosyjski
podobało mi się
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
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
.
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:
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:
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:
Źródło: www.habr.com