Extienda la funcionalidad WDS: agregue la capacidad de descarga a UEFI

Hola a todos!


Este artículo describe los pasos que debe seguir para agregar opciones de arranque UEFI a su WDS.


Es decir las instrucciones en este artículo asumen que ya tiene algo como la siguiente configuración:


1. Windows Server 2012R2 ( ) 2.   DHCP    WDS 3.   WDS 4. IIS 5.      Ubuntu 

Además, aquí se describen las acciones que no me dieron el resultado adecuado.
Los describí para facilitar la búsqueda y ahorrar tiempo.


Prólogo


Hecho de alguna manera en el trabajo WDS con muchas cosas buenas, porque cansado de correr constantemente con un montón de unidades flash y sobrescribirlas.


Por cierto, estos artículos me ayudaron por cierto:
Añadir versatilidad WDS
Menú de inicio PXE con System Center Configuration Manager


Se parece a esto


Y todo estuvo bien, se agregaron nuevas imágenes para cargar, la imagen winPE se cubrió de nuevas características y todo funcionó.


Pero, de ninguna manera, todos los dispositivos admiten el modo de arranque BIOS / Legacy, o si lo admiten, su inclusión puede ubicarse en un lugar muy poco obvio.


E instalar Windows en modo heredado, cuando es posible instalarlo en UEFI, no es genial.


Al final, decidí agregar la capacidad de subir a UEFI y fui a Google.


Pero todavía no encontré información estructurada sobre cómo obtener un WDS + UEFI que funcione.
En realidad, por eso decidí escribir este artículo.


Antes de comenzar, describiré el problema que tomó más tiempo.


Al agregar UEFI a WDS, es posible la siguiente situación, bastante obvia:

Si agrega un archivo de inicio a WDS y cuando intenta iniciar en el dispositivo
en UEFI ves el siguiente texto:
The selected boot device failed. Press <Enter> to Continue.
O Boot Device Not Found
Pero cargar en el legado funciona para usted.
Entonces, una de las opciones posibles es la ausencia del archivo wdsmgfw.efi ,
siguiente ruta: %WDSpath%\Boot\x64\wdsmgfw.efi


Puede tomarlo aquí: C:\Windows\System32\RemInst\boot\x64\wdsmgfw.efi
O, si por alguna razón no tiene este archivo, lo publiqué en google .
Por esta decisión, gracias a los chicos del reddit .


Con este problema, maté la mayor parte del tiempo desde Pensé que el problema estaba en algún lugar de la configuración WDS o DHCP.


Configuramos políticas agregando clases de proveedores para diversas arquitecturas y configurando las opciones de DHCP 060, 066, 067. Instrucciones para configurar las políticas de DHCP.


Arquitecturas ASCII para configurar DHCP

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


Además, probé varias opciones para archivos de arranque .efi


  • syslinux
  • comida 2

También intenté encontrar el problema en el registro de eventos.
win + r -> eventvwr -> -> Microsoft -> Windows -> Deployment-Services-Diagnostics


Pero, como dije anteriormente, el problema radica en el archivo wdsmgfw.efi .
O lo eliminé accidentalmente, o no se copió durante la instalación
y configurar WDS.


Bueno, empecemos!


Manual de instrucciones


Etapa 1 - Verificación de salud de WDS


Tome cualquier dispositivo o máquina virtual que admita el arranque UEFI a través de la red e intente arrancar.


Deberías tener la siguiente imagen:



Si es así, entonces bien, puedes continuar.
Si no, entonces mira lo que escribí en la introducción.


Paso 2: compila el archivo de arranque iPXE


Ejecute el Ubuntu preparado previamente, abra la terminal e inserte esta línea:


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


Aquí me gustaría hacer un pequeño comentario sobre el hecho de que puede que tenga que agregar paquetes en Ubuntu que sean necesarios para compilar C y C ++.
Acabo de tenerlos ya instalados.


Descargado? - Genial!
Ahora necesita hacer un archivo de configuración para el ensamblaje.
En la terminal, escribe:


 cd ipxe/src gedit chain.ipxe 

Y pegue en este archivo, el siguiente código, y luego guarde:


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

Volvemos a la terminal y comenzamos la compilación:


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


Si todo está en orden, debería obtener la siguiente salida en el terminal:



Y el archivo ipxe.efi , a lo largo de la ruta: ipxe/src/bin-x86_64-efi/ipxe.efi
Si por alguna razón no pudieras compilarte,
Adjunté mi archivo .
Se compila para su descarga desde http://192.168.0.100/install.ipxe


Eso es todo con Ubuntu.


Etapa 3 - Agregar ipxe.efi a WDS


Tomamos el archivo que recibimos en la segunda etapa y lo copiamos a lo largo de la ruta:
%WDSpath%\Boot\x64\%your-boot-folder%\EFI\BOOT\
Después de renombrarlo a BOOTX64.EFI.
No es necesario, es más conveniente.


Luego ejecute cmd como administrador y escriba los siguientes 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 

Esto instalará el archivo resultante para descargar a través de WDS.


Verifique la configuración:


 wdsutil /get-server /Show:Config 


También copié el archivo ipxe.efi, lo renombré a BOOTIA32.EFI y configuré la descarga, por si acaso. architecture:x86uefi
Pero en general esto no tiene sentido, porque El archivo Bootmgfw.efi no es compatible con x86


Mira lo que pasó.

Bueno, WDS envía nuestro archivo para descargar y, a su vez, busca la configuración a lo largo de la ruta: http://192.168.0.100/install.ipxe


Etapa 4 - Configuración del menú


Vamos a la carpeta raíz de su sitio.
Por defecto es: C:\inetpub\wwwroot


Cree un archivo de texto install.ipxe .


Y configúrelo de acuerdo con la documentación y sus necesidades.
También hay una descripción en ruso de los equipos.
Usé estas instrucciones al configurar mi WDS.


Ejemplo de configuración de 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 

Puede leer sobre la configuración para cargar winPE aquí .


Etapa 5 - Tipos MIME


Después de crear el menú y agregar todos los archivos necesarios a la carpeta raíz de IIS,
debes darles acceso.


Porque incluso si intenta descargar un archivo desde el navegador, recibirá un error en su dirección: HTTP 404.3 - Not Found .


Para hacer esto, agregue los tipos MIME en el panel de control de IIS, de acuerdo con
con extensiones de archivo que descargará a través de http.


No busqué qué tipo de MIME es mejor para estos fines, y configuré application/octet-stream , después de lo cual todo funcionó.


Para los archivos que no tienen una extensión, use un punto.


Así:



Conclusión


En última instancia, tenemos la capacidad de arrancar a través de la red local a través de UEFI.


Si hicimos todo bien, habrá algo como el menú de selección de arranque:



Si ha preparado las herramientas básicas y no se molestará con la configuración, la implementación de esta característica demorará entre 10 y 20 minutos.
Me tomó 2 días hábiles, porque Tuve que googlear mucho.


Implementación exitosa!


¡Gracias por su atención y muchas gracias a aquellas personas cuyos artículos me ayudaron!
En Habr it: Ingtar y Deeptown .

Source: https://habr.com/ru/post/448476/


All Articles