Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Salut tuturor!

În acest articol sunt descriși pașii necesari pentru a adăuga la WDS-ul dumneavoastră capacitatea de bootare în modul UEFI.

Adică, instrucțiunile din acest articol presupun că aveți deja o configurație aproximativă de genul:

1. Windows Server 2012R2 (sau mai recent)
2. DHCP complet configurat pentru a funcționa cu WDS
3. WDS-ul propriu-zis
4. IIS
5. O mașină virtuală sau un PC cu Ubuntu

De asemenea, aici sunt descrise acțiunile care nu mi-au adus rezultatele dorite.
Le-am descris pentru a facilita căutarea și a economisi timpul dumneavoastră.

Prefață

Am creat odată un WDS la lucru cu multe funcții, deoarece eram obosit să tot alerg cu o mulțime de stick-uri USB și să le rescriu.

M-au ajutat, de altfel, aceste articole:
Adăugăm versatilitatea WDS
Meniul de boot PXE cu System Center Configuration Manager


Arată așa

Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Și totul mergea bine, se adăugau imagini noi de bootare, imaginea winPE devenea mai bogată în funcții și totul funcționa.

Dar, deja nu toate dispozitivele acceptă modul de bootare BIOS/Legacy, sau dacă o fac, activarea acestuia poate fi într-un loc foarte neclar.

Și instalarea Windows în modul Legacy, atunci când există posibilitatea de instalare în UEFI — nu este ideal.

În cele din urmă, am decis să adaug posibilitatea de bootare în UEFI și m-am apucat de căutat pe Google.

Dar informațiile structurate despre cum să obțin un WDS funcțional + UEFI nu le-am găsit.
De aceea am decis să scriu acest articol.

Înainte de a începe, voi descrie problema care a ocupat cel mai mult timp.

Atunci când adăugați UEFI la WDS, poate apărea o situație destul de neclară:

Dacă adăugați un fișier de bootare la WDS și în încercarea de a boota pe dispozitiv
în UEFI vedeți următorul text:
Dispozitivul de bootare selectat a eșuat. Apăsați <Enter> pentru a continua.
Sau Dispozitiv de bootare nu găsit
Dar bootarea în legacy funcționează.
Atunci, una dintre posibilele variante este absența fișierului wdsmgfw.efi,
la următoarea cale: %WDSpath%Bootx64wdsmgfw.efi

Poate fi obținut de aici: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Sau, dacă dintr-un motiv oarecare nu aveți acest fișier, l-am uploadat pe google.
Pentru această soluție, mulțumesc băieților de pe Reddit.

Cu această problemă am pierdut cel mai mult timp, deoarece credeam că problema e în configurația WDS sau DHCP.

Am configurat politicile, adăugând Vendor Classes pentru diverse arhitecturi și setând opțiunile DHCP 060, 066, 067. Instrucțiune despre configurarea politicilor DHCP.

Arhitecturi în ASCII pentru configurarea DHCP

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

De asemenea, am încercat diferite variante de fișiere de boot. .efi

  • syslinux
  • grub 2

De asemenea, am încercat să găsesc problema în Jurnalul de evenimente.
win + r -> eventvwr -> Jurnalele aplicațiilor și serviciilor -> Microsoft -> Windows -> Diagnosticare servicii de implementare

Dar, așa cum am spus mai sus, problema era în fișierul wdsmgfw.efi.
Fie l-am șters din greșeală, fie nu a fost copiat în timpul instalării
și configurării WDS.

Ei bine, să începem!

Instrucțiune

Etapa 1 — Verificarea funcționalității WDS

Luați orice dispozitiv sau mașină virtuală cu suport pentru boot UEFI prin rețea și încercați să bootați.

Ar trebui să aveți următoarea imagine:

Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Dacă da, atunci excelent, putem continua.
Dacă nu, atunci uitați-vă la ce am scris în prefață.

Etapa 2 — Crearea fișierului de boot iPXE

Lansați Ubuntu pregătit anterior, deschideți terminalul și lipiți această linie:

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

Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Aici aș dori să fac o mică observație, că posibil în Ubuntu va trebui să adăugați pachetele necesare pentru compilarea C și C++.
Pur și simplu eu le-am avut deja instalate.

S-a descărcat? — Excelent!
Acum trebuie să facem un fișier de configurare pentru compilare.
În terminal, scriem:

cd ipxe/src
gedit chain.ipxe

Și lipim în acest fișier următorul cod, după care salvăm:

#!ipxe

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

Mergem din nou în terminal și lansăm compilarea:

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

Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Dacă totul este în regulă, ar trebui să obțineți următoarea ieșire în terminal:

Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Și fișierul ipxe.efi, pe calea: ipxe/src/bin-x86_64-efi/ipxe.efi
Dacă dintr-un motiv oarecare nu ați reușit să compilați singuri,
am atașat fișierul meu. fișier.
Este compilat pentru boot via http://192.168.0.100/install.ipxe

Aici se încheie tot cu Ubuntu.

Etapa 3 — Adăugarea ipxe.efi la WDS

Luăm fișierul pe care l-am obținut în a doua etapă și îl copiem pe calea:
%WDSpath%Bootx64%your-boot-folderIBOOT
După aceea, îl redenumim în BOOTX64.EFI.
Acest lucru nu este obligatoriu, doar că este mai convenabil.

Apoi lansăm cmd cu drepturi de administrator și scriem următoarele comenzi:

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

Astfel, vom stabili fișierul obținut pentru boot prin WDS.

Haideți să verificăm configurația:

wdsutil /get-server /Show:Config

Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

De asemenea, am copiat fișierul ipxe.efi, l-am redenumit în BOOTIA32.EFI și am configurat boot-ul pentru el, ca măsură de precauție. architecture:x86uefi
Dar, în esență, nu are sens, deoarece fișierul Bootmgfw.efi nu suportă x86.

Să verificăm ce a ieșit.
Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI
Excelent, WDS transmite fișierul nostru pentru încărcare și acesta la rândul său caută configurația pe calea: http://192.168.0.100/install.ipxe

Etapa 4 — Configurarea meniului

Mergem în folderul rădăcină al site-ului dumneavoastră.
În mod implicit, acesta este: C:inetpubwwwroot

Cream un fișier text install.ipxe.

Și îl configurăm conform documentația și nevoilor dumneavoastră.
Există de asemenea un descriere comenzi în limba rusă.
Am folosit această instrucțiile pentru a configura propriul meu WDS.

Exemplu de configurație 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

Despre configurația pentru încărcarea winPE se poate citi aici.

Etapa 5 — Tipuri MIME

După ce ați creat meniul și ați adăugat toate fișierele necesare în folderul rădăcină IIS,
este necesar să le oferiți acces.

Pentru că, chiar dacă încercați să descărcați un fișier din browser, la adresa sa veți primi o eroare: HTTP 404.3 - Not Found.
Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Pentru aceasta, trebuie să adăugați tipuri MIME în panoul de control IIS, conform
extensiilor fișierelor care vor fi încărcate prin http.

Nu am căutat ce tip MIME se potrivește cel mai bine pentru aceste scopuri și am setat application/octet-stream, după care totul a funcționat.

Pentru fișierele care nu au extensie, folosiți un punct.

Așa:

Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Concluzie

În cele din urmă, avem posibilitatea de a încărca prin rețeaua locală prin UEFI.

Dacă am făcut totul corect, va arăta cam așa un meniu de selecție a încărcării:

Extindem funcționalitatea WDS: adăugarea opțiunii de boot în UEFI

Dacă aveți pregătite instrumentele de bază și nu vă veți complica cu configurația, realizarea acestei posibilități durează aproximativ 10-20 de minute.
La mine au fost necesare 2 zile lucrătoare, deoarece a trebuit să caut multe lucruri pe Google.

Succes în realizare!

Mulțumesc pentru atenție și un mare mulțumesc celor care au scris articolele care m-au ajutat!
Pe Habr este: Ingtar și Deeptown.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster