Olá pessoal!
Este artigo descreve as etapas que você deve seguir para adicionar opções de inicialização UEFI ao seu WDS.
I.e. as instruções neste artigo pressupõem que você já tenha algo como a seguinte configuração:
1. Windows Server 2012R2 ( ) 2. DHCP WDS 3. WDS 4. IIS 5. Ubuntu
Além disso, aqui estão descritas as ações que não me trouxeram o resultado adequado.
Eu os descrevi, para facilitar a pesquisa e economizar seu tempo.
Prefácio
Tornou o WDS de alguma forma no trabalho, com muitos presentes, porque cansado de correr constantemente com um monte de pen drives e substituí-los.
A propósito, esses artigos me ajudaram a propósito:
Adicionar versatilidade do WDS
Menu de inicialização PXE com System Center Configuration Manager
E tudo estava bem, novas imagens foram adicionadas para carregamento, a imagem do winPE estava cheia de novos recursos e tudo funcionou.
Mas, de modo algum todos os dispositivos suportam o modo de inicialização BIOS / Legado, ou, se o suportam, sua inclusão pode ser localizada em um local não muito óbvio.
E instalar o Windows no modo legado, quando é possível instalar no UEFI, não é legal.
No final, decidi adicionar a capacidade de enviar para a UEFI e fui para o Google.
Mas ainda não encontrei informações estruturadas sobre como obter um WDS + UEFI em funcionamento.
Na verdade, foi por isso que decidi escrever este artigo.
Antes de começar, descreverei o problema que levou mais tempo.
Ao adicionar UEFI ao WDS, é possível a seguinte situação, que não é óbvia:Se você adicionar um arquivo de inicialização ao WDS e ao tentar inicializar no dispositivo
no UEFI, você vê o seguinte texto:
The selected boot device failed. Press <Enter> to Continue.
Ou Boot Device Not Found
Mas o carregamento no legado funciona para você.
Em seguida, uma das opções possíveis é a ausência do arquivo wdsmgfw.efi ,
caminho a seguir: %WDSpath%\Boot\x64\wdsmgfw.efi
Você pode C:\Windows\System32\RemInst\boot\x64\wdsmgfw.efi
lo aqui: C:\Windows\System32\RemInst\boot\x64\wdsmgfw.efi
Ou, se por algum motivo você não tiver esse arquivo, eu o publiquei no google .
Por esta decisão, obrigado aos caras do reddit .
Com esse problema, eu matei mais tempo desde Eu pensei que o problema estava em algum lugar na configuração WDS ou DHCP.
Políticas configuradas adicionando Classes de Fornecedor para várias arquiteturas e configurando as opções DHCP 060, 066, 067. Instruções para configurar políticas DHCP.
Arquiteturas ASCII para configurar o DHCPPXEClient: Arch: 00000 - BIOS / Legado
PXEClient: Arch: 00006 - UEFI x86
PXEClient: Arch: 00007 - UEFI x64
Além disso, tentei várias opções para arquivos de inicialização .efi
Eu também tentei encontrar o problema no log de eventos.
win + r -> eventvwr -> -> Microsoft -> Windows -> Deployment-Services-Diagnostics
Mas, como eu disse acima, o problema estava no arquivo wdsmgfw.efi .
Excluí-o acidentalmente ou não copiei durante a instalação
e configure o WDS.
Bem, vamos começar!
Manual de instruções
Etapa 1 - Verificação de integridade do WDS
Pegue qualquer dispositivo ou máquina virtual que suporte a inicialização UEFI pela rede e tente inicializar.
Você deve ter a seguinte imagem:

Se sim, então tudo bem, você pode continuar.
Caso contrário, veja o que escrevi na introdução.
Etapa 2 - Crie o arquivo de inicialização do iPXE
Execute o Ubuntu pré-preparado, abra o terminal e insira esta linha:
git clone https://git.ipxe.org/ipxe.git ipxe

Aqui, gostaria de fazer uma pequena observação sobre o fato de que talvez você precise adicionar pacotes no Ubuntu necessários para compilar C e C ++.
Acabei de instalá-los.
Transferido? Ótimo!
Agora você precisa criar um arquivo de configuração para a montagem.
No terminal, escreva:
cd ipxe/src gedit chain.ipxe
E cole neste arquivo, o seguinte código e salve:
#!ipxe dhcp chain http://%IP-address-your-IIS-server%/install.ipxe
Vamos novamente para o terminal e iniciamos a compilação:
make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe

Se tudo estiver em ordem, você deverá obter a seguinte saída no terminal:

E o arquivo ipxe.efi , no caminho: ipxe/src/bin-x86_64-efi/ipxe.efi
Se, por algum motivo, você não conseguir se compilar,
Anexei meu arquivo .
É compilado para download em http://192.168.0.100/install.ipxe
Isso é tudo com o Ubuntu.
Etapa 3 - Adicionando ipxe.efi ao WDS
Pegamos o arquivo que recebemos no segundo estágio e copiamos ao longo do caminho:
%WDSpath%\Boot\x64\%your-boot-folder%\EFI\BOOT\
Depois de renomeá-lo para BOOTX64.EFI.
Não é necessário, é apenas mais conveniente.
Em seguida, execute o cmd como administrador e escreva os seguintes comandos:
wdsutil /set-server /bootprogram:Boot\x64\%your-boot-folder%\EFI\BOOT\BOOTX 64.EFI /architecture:x64uefi wdsutil /set-server /N12bootprogram:Boot\x64\%your-boot-folder%\EFI\BOOT\BOOTX 64.EFI /architecture:x64uefi
Isso instalará o arquivo resultante para download via WDS.
Verifique a configuração:
wdsutil /get-server /Show:Config

Também copiei o arquivo ipxe.efi, renomeei para BOOTIA32.EFI e configurei o download para ele, apenas por precaução. architecture:x86uefi
Mas, em geral, isso não faz sentido, porque O arquivo Bootmgfw.efi não suporta x86
Veja o que aconteceu.

Bem, o WDS envia nosso arquivo para download e, por sua vez, procura a configuração no caminho: http://192.168.0.100/install.ipxe
Etapa 4 - Configuração do menu
Vamos para a pasta raiz do seu site.
Por padrão, é: C:\inetpub\wwwroot
Crie um arquivo de texto install.ipxe .
E configure-o de acordo com a documentação e suas necessidades.
Há também uma descrição em russo das equipes.
Eu usei esta instrução ao configurar meu WDS.
Exemplo de configuração 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
Você pode ler sobre a configuração para carregar o winPE aqui .
Etapa 5 - tipos MIME
Depois de criar o menu e adicionar todos os arquivos necessários à pasta raiz do IIS,
você deve dar acesso a eles.
Porque mesmo se você tentar baixar um arquivo do navegador, você receberá um erro no endereço: HTTP 404.3 - Not Found
.

Para fazer isso, adicione os tipos MIME no painel de controle do IIS, de acordo com
com extensões de arquivo que você fará o download via http.
Não procurei que tipo de MIME é melhor para esses fins e configurei application/octet-stream
, após o qual tudo funcionou.
Para arquivos que não têm extensão, use um ponto.
Assim:

Conclusão
Por fim, temos a capacidade de inicializar pela rede local via UEFI.
Se fizermos tudo certo, haverá algo como o menu de seleção de inicialização:

Se você preparou as ferramentas básicas e não se preocupará com a configuração, leva cerca de 10 a 20 minutos para implementar esse recurso.
Levei 2 dias úteis, porque tive que pesquisar muito no google.
Implementação bem sucedida!
Obrigado pela atenção e muito obrigado às pessoas cujos artigos me ajudaram!
Em Habr: Ingtar e Deeptown .