¡Hola a todos!
En este artículo, se describen los pasos que es necesario seguir para añadir a su WDS la capacidad de arranque en modo UEFI.
Es decir, la instrucción en este artículo supone que ya tiene, aproximadamente, la siguiente configuración:
1. Windows Server 2012R2 (o más reciente)
2. DHCP completamente configurado para trabajar con WDS
3. El propio WDS
4. IIS
5. Una máquina virtual o PC con UbuntuTambién se describen aquí acciones que no me produjeron el resultado esperado.
Las he anotado para facilitar la búsqueda y ahorrar su tiempo.
Prólogo
Una vez configuré un WDS en el trabajo con muchas características, ya que estaba cansado de correr constantemente con un montón de memorias USB y regrabarlas.
Me ayudaron, por cierto, estos artículos:
Así se ve esto

Y todo iba bien, se añadían nuevas imágenes para el arranque, la imagen de winPE se enriquecía con nuevas funciones y todo funcionaba.
Sin embargo, ya no todos los dispositivos soportan el modo de arranque BIOS/Legacy, o si lo soportan, puede que la opción de activarlo esté en un lugar muy poco obvio.
Y, además, instalar Windows en modo Legacy, cuando hay posibilidad de instalación en UEFI, no está bien.
Así que decidí añadir la capacidad de arranque en UEFI y busqué en Google.
Pero no encontré información estructurada sobre cómo obtener un WDS + UEFI funcional.
Por eso decidí escribir este artículo.
Antes de comenzar, describiré el problema que más tiempo me ocupó.
Al añadir UEFI a WDS, puede surgir la siguiente situación bastante no obvia:
Si agrega un archivo de arranque a WDS y al intentar arrancar en un dispositivo
en UEFI ve el siguiente texto:
The selected boot device failed. Press to Continue.
O Boot Device Not Found
Pero el arranque en Legacy funciona.
Entonces, una de las posibles opciones es la ausencia del archivo wdsmgfw.efi,
en la siguiente ruta: %WDSpath%Bootx64wdsmgfw.efi
Puede obtenerlo aquí: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
O, si por alguna razón le falta este archivo, lo he subido en .
Por esta solución, gracias a los chicos de .
Con este problema perdí más tiempo, ya que pensé que el problema estaba en la configuración de WDS o DHCP.
Estuve configurando políticas, añadiendo Vendor Classes para diferentes arquitecturas y configurando las opciones DHCP 060, 066, 067. sobre la configuración de políticas DHCP.
Arquitecturas en ASCII para la configuración de DHCP
PXEClient:Arch:00000 — BIOS/Legacy
PXEClient:Arch:00006 — UEFI x86
PXEClient:Arch:00007 — UEFI x64
También probé varias opciones de archivos de arranque .efi
- syslinux
- grub 2
También intenté encontrar el problema en el Registro de Eventos.
win + r -> eventvwr -> Registros de Aplicaciones y Servicios -> Microsoft -> Windows -> Deployment-Services-Diagnostics
Pero, como ya mencioné anteriormente, el problema estaba en el archivo wdsmgfw.efi.
O bien lo borré accidentalmente, o no se copió durante la instalación
y configuración de WDS.
¡Bueno, empecemos!
Instrucción
Etapa 1 — Verificación del funcionamiento de WDS
Toma cualquier dispositivo o máquina virtual que soporte arranque en modo UEFI por red e intenta arrancar.
Deberías ver lo siguiente:

Si es así, excelente, se puede continuar.
Si no, consulta lo que escribí en la introducción.
Etapa 2 — Creación del archivo de arranque iPXE
Iniciamos Ubuntu previamente preparado, abrimos la terminal y pegamos esta línea:
git clone https://git.ipxe.org/ipxe.git ipxe
Aquí me gustaría hacer una pequeña nota, sobre que es posible que debas agregar paquetes necesarios para compilar C y C++ en Ubuntu.
Simplemente yo ya los tenía instalados.
¿Se descargó? — ¡Excelente!
Ahora necesitas crear el archivo de configuración para la compilación.
En la terminal, escribimos:
cd ipxe/src
gedit chain.ipxeY pegamos en este archivo el siguiente código, luego lo guardamos:
#!ipxe
dhcp
chain http://%IP-address-your-IIS-server%/install.ipxeVamos de nuevo a la terminal y comenzamos la compilación:
make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe
Si todo está bien, deberías obtener la siguiente salida en la terminal:

Y el archivo ipxe.efi, en la ruta: ipxe/src/bin-x86_64-efi/ipxe.efi
Si por alguna razón no pudiste compilarlo tú mismo,
he adjuntado el mío .
Está compilado para arrancar desde http://192.168.0.100/install.ipxe
Con esto, todo con Ubuntu.
Etapa 3 — Adición de ipxe.efi a WDS
Tomamos el archivo que obtuvimos en la segunda etapa y lo copiamos en la ruta:
%WDSpath%Bootx64%your-boot-folderIBOOT
Después lo renombramos a BOOTX64.EFI.
Esto no es obligatorio, es solo más conveniente.
Luego ejecutamos cmd como administrador, y escribimos los siguientes comandos:
wdsutil /set-server /bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefi
y
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefiCon esto estableceremos el archivo obtenido para arrancar a través de WDS.
Verifiquemos la configuración:
wdsutil /get-server /Show:Config
También copié el archivo ipxe.efi, lo renombré a BOOTIA32.EFI y configuré el arranque para él, por si acaso. architecture:x86uefi
Pero en realidad esto no tiene sentido, ya que el archivo Bootmgfw.efi no soporta x86.
Verifiquemos lo que se obtuvo.

Excelente, WDS transmite nuestro archivo para cargarlo y, a su vez, busca la configuración en la ruta: http://192.168.0.100/install.ipxe
Etapa 4 — Configuración del menú
Vamos a la carpeta raíz de su sitio web.
Por defecto, esto es: C:inetpubwwwroot
Creamos un archivo de texto install.ipxe.
y lo configuramos de acuerdo con y tus necesidades.
También hay comandos en español. comando.
Usé las instrucciones para 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 failedPuedes leer sobre la configuración para cargar winPE .
Etapa 5 — tipos MIME
Después de crear el menú y agregar todos los archivos necesarios en la carpeta raíz de IIS,
es necesario darles acceso.
Ya que, incluso si intentas descargar un archivo desde el navegador, por su dirección obtendrás un error: HTTP 404.3 - No encontrado.

Para esto, es necesario agregar tipos MIME en el panel de control de IIS, de acuerdo
a las extensiones de los archivos que se cargarán a través de http.
No busqué qué tipo MIME es el más adecuado para estos fines, y configuré application/octet-stream, después de lo cual todo funcionó.
Para archivos sin extensión, usa un punto.
Así:

Conclusión
Al final, tenemos la posibilidad de cargar a través de la red local usando UEFI.
Si hicimos todo correctamente, el menú de selección de carga será aproximadamente así:

Si tienes las herramientas básicas preparadas y no vas a complicarte con la configuración, lleva aproximadamente 10-20 minutos implementar esta funcionalidad.
A mí me tomó 2 días hábiles, ya que tuve que buscar mucho en Google.
¡Buena implementación!
Gracias por su atención y un enorme agradecimiento a las personas cuyas artículos me ayudaron.
En Habr esto es: y .
Fuente: habr.com
