Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

Ciao a tutti!

In questo articolo sono descritti i passaggi da seguire per aggiungere al tuo WDS la possibilità di avviare in modalità UEFI.

Cioè, le istruzioni di questo articolo presuppongono che tu abbia già una configurazione più o meno simile a questa:

1. Windows Server 2012R2 (o superiore)
2. DHCP completamente configurato per lavorare con WDS
3. Il WDS stesso
4. IIS
5. Macchina virtuale o PC con Ubuntu

Inoltre, qui sono descritti alcuni passaggi che non mi hanno dato i risultati sperati.
Li ho descritti per facilitare la ricerca e risparmiare tempo.

Introduzione

Una volta ho configurato WDS al lavoro con molte funzionalità, poiché ero stanco di dover correre costantemente con un sacco di pendrive e riscriverle.

Mi hanno aiutato a proposito questi articoli:
Aggiungiamo WDS alla versatilità
Menu di avvio PXE con System Center Configuration Manager


Ecco come si presenta

Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

E tutto andava bene, venivano aggiunte nuove immagini di avvio, l'immagine winPE si arricchiva di nuove funzionalità e tutto funzionava.

Tuttavia, ormai non tutti i dispositivi supportano la modalità di avvio BIOS/Legacy, oppure, se lo fanno, l'attivazione può trovarsi in un posto molto poco evidente.

E installare Windows in modalità Legacy, quando c'è la possibilità di installare in UEFI, non è il massimo.

Alla fine ho deciso di aggiungere la possibilità di avvio in UEFI e sono andato su Google.

Ma non ho trovato informazioni strutturate su come ottenere WDS + UEFI funzionante.
Proprio per questo ho deciso di scrivere questo articolo.

Prima di iniziare, descriverò il problema che ha rubato più tempo.

Aggiungendo l'UEFI a WDS, può verificarsi la seguente situazione piuttosto inaspettata:

Se aggiungi un file di avvio a WDS e, tentando di avviare il dispositivo
in UEFI vedi il seguente testo:
The selected boot device failed. Press to Continue.
Oppure Boot Device Not Found
Ma l'avvio in Legacy funziona.
Allora una delle possibili soluzioni è l'assenza del file wdsmgfw.efi,
al seguente percorso: %WDSpath%Bootx64wdsmgfw.efi

Puoi trovarlo qui: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Oppure, se per qualche motivo non hai questo file, l'ho condiviso su google.
Per questa soluzione, grazie ragazzi di reddit.

Con questo problema ho trascorso il maggior tempo, poiché pensavo che il problema fosse da qualche parte nella configurazione di WDS o DHCP.

Ho configurato le politiche, aggiungendo Vendor Classes per diverse architetture e configurando le opzioni DHCP 060, 066, 067. Istruzioni per la configurazione delle politiche DHCP.

Architetture in ASCII per la configurazione di DHCP

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

Ho anche provato diverse varianti di file di avvio .efi

  • syslinux
  • grub 2

Ho anche cercato di trovare il problema nel Registro eventi.
win + r -> eventvwr -> Registri applicazioni e servizi -> Microsoft -> Windows -> Deployment-Services-Diagnostics

Ma, come ho già detto sopra, il problema si trovava nel file wdsmgfw.efi.
O lo ho accidentalmente eliminato io, o non è stato copiato durante l'installazione
e configurazione di WDS.

Bene, iniziamo!

Istruzioni

Fase 1 — Verifica del funzionamento di WDS

Prendi qualsiasi dispositivo o macchina virtuale con supporto per l'avvio in modalità UEFI tramite rete e prova a avviarlo.

Dovresti vedere la seguente schermata:

Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

Se è così, ottimo, possiamo continuare.
Se no, controlla cosa ho scritto nell'introduzione.

Fase 2 — Creazione del file di avvio iPXE

Avviamo Ubuntu già preparato, apriamo il terminale e incolliamo questa riga:

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

Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

Qui vorrei fare una piccola osservazione, che potrebbe essere necessario in Ubuntu aggiungere i pacchetti necessari per la compilazione di C e C++.
Semplicemente io già li avevo installati.

Scaricato? — Ottimo!
Ora dobbiamo creare un file di configurazione per la compilazione.
Nel terminale, scriviamo:

cd ipxe/src
gedit chain.ipxe

E incolliamo in questo file il seguente codice, dopo di che salviamo:

#!ipxe

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

Torniamo nel terminale e avviamo la compilazione:

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

Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

Se tutto va bene, dovresti ricevere il seguente output nel terminale:

Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

E il file ipxe.efi, nel percorso: ipxe/src/bin-x86_64-efi/ipxe.efi
Se per qualche motivo non sei riuscito a compilarlo da solo,
ho allegato il mio un file.
È compilato per l'avvio da http://192.168.0.100/install.ipxe

Questo è tutto da Ubuntu.

Fase 3 — Aggiunta di ipxe.efi a WDS

Prendi il file che abbiamo ottenuto nel secondo passaggio e copialo nel percorso:
%WDSpath%Bootx64%your-boot-folderIBOOT
Dopo lo rinominiamo in BOOTX64.EFI.
Non è obbligatorio, è solo più conveniente.

Poi avviamo cmd come amministratore, e scriviamo i seguenti comandi:

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

In questo modo imposteremo il file ottenuto per l'avvio tramite WDS.

Verifichiamo la configurazione:

wdsutil /get-server /Show:Config

Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

Ho anche copiato il file ipxe.efi, l'ho rinominato in BOOTIA32.EFI e ho configurato l'avvio per esso, giusto per sicurezza. architecture:x86uefi
Ma in fin dei conti non ha molto senso, poiché il file Bootmgfw.efi non supporta x86

Controlliamo cosa abbiamo ottenuto.
Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI
Ottimo, WDS sta caricando il nostro file e in questo modo cerca la configurazione nel percorso: http://192.168.0.100/install.ipxe

Fase 4 — Configurazione del menu

Andiamo nella cartella principale del tuo sito.
Di default è: C:inetpubwwwroot

Creiamo un file di testo install.ipxe.

E lo configuriamo secondo documentazione e le tue esigenze.
C'è anche una guida in russo descrizione comandi.
Io ho utilizzato questo le istruzioni per configurare il mio WDS.

Esempio di configurazione 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

Puoi leggere riguardo la configurazione per caricare winPE qui.

Fase 5 — Tipi MIME

Dopo aver creato il menu e aggiunto tutti i file necessari nella cartella principale di IIS,
è necessario dare accesso a questi file.

Infatti, anche se provi a scaricare il file dal browser utilizzando il suo indirizzo, otterrai un errore: HTTP 404.3 - Not Found.
Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

Per questo è necessario aggiungere i tipi MIME nel pannello di controllo IIS, secondo
le estensioni dei file che caricherai tramite http.

Non ho cercato quale tipo MIME fosse più adatto a questo scopo e ho impostato application/octet-stream, dopo di che tutto ha funzionato.

Per i file senza estensione, usa il punto.

Ecco come:

Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

Conclusione

In definitiva, abbiamo la possibilità di avviare tramite rete locale tramite UEFI.

Se abbiamo fatto tutto correttamente, ci sarà un menu di scelta di avvio simile a questo:

Espandiamo le funzionalità di WDS: aggiunta della possibilità di avvio in UEFI

Se hai preparato gli strumenti fondamentali e non ti preoccupi della configurazione, ci vogliono circa 10-20 minuti per implementare questa funzionalità.
Io ci ho impiegato 2 giorni lavorativi, poiché ho dovuto cercare molto.

Buona implementazione!

Grazie per l'attenzione e un enorme grazie a tutte quelle persone le cui articoli mi hanno aiutato!
Su Habr è: Ingtar e Deeptown.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster