Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

Olá a todos!

Este artigo descreve as etapas que você precisa seguir para adicionar o recurso de inicialização UEFI ao seu WDS.

Aqueles. As instruções neste artigo pressupõem que você já tenha a seguinte configuração:

1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu

Além disso, aqui estão descritas ações que não me trouxeram o resultado adequado.
Eu os descrevi para facilitar a busca e economizar seu tempo.

Prefácio

Fiz um WDS no trabalho com muitas guloseimas, tk. cansado de correr constantemente com um monte de pen drives e sobrescrevê-los.

A propósito, esses artigos me ajudaram:
Adicionando Versatilidade WDS
Menu de inicialização PXE com o System Center Configuration Manager


Se parece com isso

Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

E estava tudo bem, novas imagens foram adicionadas para carregar, a imagem winPE foi repleta de novos recursos e tudo funcionou.

Mas, nem todos os dispositivos suportam o modo de inicialização BIOS / legado ou, se o fizerem, sua inclusão pode estar em um local nada óbvio.

Sim, e instalar o windows em modo legado, quando é possível instalar em UEFI, não é legal.

Como resultado, decidi adicionar a capacidade de inicializar no UEFI e fui para o Google.

Mas não encontrei informações estruturadas sobre como obter um WDS + UEFI funcional.
Na verdade, é por isso que decidi escrever este artigo.

Antes de começar, descreverei o problema que levou mais tempo.

Ao adicionar UEFI ao WDS, a seguinte situação não óbvia é possível:

Se você adicionar um arquivo de inicialização ao WDS e tentar inicializar no dispositivo
em UEFI você vê o seguinte texto:
The selected boot device failed. Press <Enter> to Continue.
Ou Boot Device Not Found
Mas carregar no legado funciona para você.
Então uma das opções possíveis é a ausência de um arquivo wdsmgfw.efi,
pelo seguinte caminho: %WDSpath%Bootx64wdsmgfw.efi

Você pode pegar aqui: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Ou, se por algum motivo este arquivo estiver faltando para você, eu postei no google.
Obrigado pessoal por esta solução. reddit.

Com esse problema, matei mais tempo, porque. Achei que o problema estava em algum lugar na configuração WDS ou DHCP.

Políticas configuradas adicionando classes de fornecedores para várias arquiteturas e definindo as opções de DHCP 060, 066, 067. Instrução para configurar políticas DHCP.

Arquiteturas em ASCII para configuração de DHCP

PXEClient: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

  • syslinux
  • grub 2

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.
Eu mesmo o apaguei acidentalmente ou não foi copiado durante a instalação
e configuração do WDS.

Bem, vamos começar!

Instrução

Estágio 1 - Verifique se o WDS está funcionando

Pegue qualquer dispositivo ou máquina virtual com suporte para inicializar no modo UEFI na rede e tente inicializar.

Você deve ter a seguinte imagem:

Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

Se assim for, ótimo, você pode continuar.
Se não, veja o que escrevi no prefácio.

Estágio 2 - Construindo o Arquivo de Inicialização iPXE

Lançamos o Ubuntu pré-preparado, abrimos um terminal e colamos esta linha:

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

Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

Aqui, gostaria de fazer uma pequena observação de que talvez você precise adicionar pacotes ao Ubuntu necessários para compilar C e C ++.
Acabei de instalá-los.

Baixou? - Ótimo!
Agora você precisa fazer um arquivo de configuração para a montagem.
No terminal, escrevemos:

cd ipxe/src
gedit chain.ipxe

E cole o seguinte código neste arquivo e salve:

#!ipxe

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

Voltamos ao terminal e iniciamos a compilação:

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

Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

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

Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

E arquivo ipxe.efi, pelo caminho: ipxe/src/bin-x86_64-efi/ipxe.efi
Se por algum motivo você não conseguir compilar sozinho,
eu anexei o meu arquivo.
Ele é compilado para inicializar a partir http://192.168.0.100/install.ipxe

Isso é tudo para o Ubuntu.

Etapa 3 - Adicionando ipxe.efi ao WDS

Pegamos o arquivo que recebemos na segunda etapa e copiamos ao longo do caminho:
%WDSpath%Bootx64%your-boot-folder%EFIBOOT
Depois de renomeá-lo para BOOTX64.EFI.
Não é necessário, é apenas mais conveniente.

Então nós lançamos cmd em nome do administrador e escreva os seguintes comandos:

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

Isso definirá o arquivo resultante a ser baixado via WDS.

Vamos verificar a configuração:

wdsutil /get-server /Show:Config

Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

Também copiei o arquivo ipxe.efi, renomeei-o para BOOTIA32.EFI e configurei a inicialização 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

Vamos verificar o que aconteceu.
Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI
Ótimo, o WDS envia nosso arquivo para download e ele, por sua vez, procura a configuração pelo caminho: http://192.168.0.100/install.ipxe

Passo 4 - Configuração do Menu

Vá para a pasta raiz do seu site.
O padrão é: C:inetpubwwwroot

Criar um arquivo de texto instalar.ipxe.

e configurá-lo de acordo com documentação e suas necessidades.
Há também uma língua russa описание comandos.
eu aproveitei este instruções ao configurar seu 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.

Estágio 5 - tipos MIME

Depois de criar o menu e adicionar todos os arquivos necessários à pasta raiz do IIS,
você precisa dar-lhes acesso.

Porque mesmo se você tentar baixar um arquivo do navegador, receberá um erro em seu endereço: HTTP 404.3 - Not Found.
Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

Para fazer isso, você precisa adicionar tipos MIME no painel de controle do IIS, de acordo com
com extensões de arquivo que você baixará via http.

Não procurei qual tipo MIME é melhor para esse fim e perguntei application/octet-stream, depois do qual tudo funcionou.

Para arquivos que não possuem extensão, use um ponto.

Aqui, então:

Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

Conclusão

Por fim, temos a capacidade de inicializar em uma rede local por meio de UEFI.

Se fizermos tudo corretamente, haverá algo como este menu de seleção de inicialização:

Expandindo a funcionalidade WDS: adicionando capacidade de inicialização UEFI

Se você preparou as ferramentas básicas e não se incomodará com a configuração, levará cerca de 10 a 20 minutos para implementar esse recurso.
Levei 2 dias úteis, porque. Eu 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é é: Intar и Cidade Profunda.

Fonte: habr.com

Adicionar um comentário