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 UbuntuInoltre, 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:
Ecco come si presenta

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 .
Per questa soluzione, grazie ragazzi di .
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. 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:

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
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.ipxeE incolliamo in questo file il seguente codice, dopo di che salviamo:
#!ipxe
dhcp
chain http://%IP-address-your-IIS-server%/install.ipxeTorniamo nel terminale e avviamo la compilazione:
make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe
Se tutto va bene, dovresti ricevere il seguente output nel terminale:

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 .
È 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:x64uefiIn questo modo imposteremo il file ottenuto per l'avvio tramite WDS.
Verifichiamo la configurazione:
wdsutil /get-server /Show:Config
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.

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 e le tue esigenze.
C'è anche una guida in russo comandi.
Io ho utilizzato 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 failedPuoi leggere riguardo la configurazione per caricare winPE .
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.

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:

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:

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 è: e .
Fonte: habr.com
