Bonjour à tous !
Cet article décrit les étapes à suivre pour ajouter la possibilité de démarrage en mode UEFI à votre WDS.
C'est-à-dire que les instructions dans cet article supposent que vous avez déjà une configuration approximativement suivante :
1. Windows Server 2012R2 (ou plus récent) 2. DHCP complètement configuré pour travailler avec WDS 3. Le WDS lui-même 4. IIS 5. Une machine virtuelle ou un PC avec UbuntuDe plus, ici sont décrites des actions qui ne m'ont pas donné de résultats satisfaisants.
Je les ai décrites pour faciliter la recherche et économiser votre temps.
Préface
J'ai mis en place un WDS au travail avec plein de fonctionnalités, car j'en avais marre de courir avec une panoplie de clés USB et de les réécrire.
Ces articles m'ont été très utiles à l'époque :
Cela ressemble à ceci

Et tout allait bien, de nouvelles images de démarrage étaient ajoutées, l'image winPE se remplissait de nouvelles fonctionnalités et tout fonctionnait.
Cependant, peu de dispositifs prennent en charge le mode de démarrage BIOS/Legacy, ou si oui, son activation peut se trouver dans un endroit très peu évident.
De plus, installer Windows en mode Legacy, alors qu'il est possible de l'installer en UEFI, n'est pas idéal.
Finalement, j'ai décidé d'ajouter la possibilité de démarrer en UEFI et je me suis tourné vers Google.
Mais je n'ai pas trouvé d'informations structurées sur comment obtenir un WDS + UEFI fonctionnel.
C'est donc pourquoi j'ai décidé d'écrire cet article.
Avant de commencer, je vais décrire le problème qui a pris le plus de temps.
Lors de l'ajout de l'UEFI à WDS, une situation plutôt inattendue peut se présenter :
Si vous ajoutez un fichier de démarrage à WDS et que lors de la tentative de démarrage sur l'appareil
en UEFI, vous voyez le texte suivant :
Le périphérique de démarrage sélectionné a échoué. Appuyez sur pour continuer.
Ou Périphérique de démarrage introuvable
Mais le démarrage en legacy fonctionne.
Alors, l'une des options possibles est l'absence du fichier wdsmgfw.efi,
au chemin suivant : %WDSpath%Bootx64wdsmgfw.efi
Vous pouvez l'obtenir ici : C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Ou, si vous n'avez pas ce fichier pour une raison quelconque, je l'ai mis à disposition sur .
Merci pour cette solution aux gars de .
J'ai passé le plus de temps sur ce problème, car je pensais que le problème venait de la configuration de WDS ou DHCP.
J'ai configuré des politiques en ajoutant des classes de fournisseurs pour différentes architectures et en ajustant les options DHCP 060, 066, 067. concernant la configuration des politiques DHCP.
Architectures en ASCII pour la configuration DHCP
PXEClient:Arch:00000 — BIOS/Legacy
PXEClient:Arch:00006 — UEFI x86
PXEClient:Arch:00007 — UEFI x64
J'ai également essayé différentes options de fichiers de démarrage .efi
- syslinux
- grub 2
J'ai aussi essayé de trouver le problème dans le Journal des événements.
win + r -> eventvwr -> Journaux des applications et services -> Microsoft -> Windows -> Deployment-Services-Diagnostics
Mais, comme je l'ai dit précédemment, le problème se trouvait dans le fichier wdsmgfw.efi.
Soit je l'ai accidentellement supprimé, soit il n'a pas été copié lors de l'installation
et la configuration de WDS.
Eh bien, commençons !
Instruction
Étape 1 — Vérifier le bon fonctionnement de WDS
Prenez n'importe quel appareil ou machine virtuelle compatible avec le démarrage UEFI par le réseau et essayez de démarrer.
Vous devriez avoir l'image suivante :

Si c'est le cas, parfait, vous pouvez continuer.
Sinon, regardez ce que j'ai écrit dans l'introduction.
Étape 2 — Assemblage du fichier de démarrage iPXE
Lancez Ubuntu préparé à l'avance, ouvrez le terminal et insérez cette ligne :
git clone https://git.ipxe.org/ipxe.git ipxe
Je voudrais faire une petite remarque, vous pourriez avoir besoin d'ajouter les paquets nécessaires pour compiler C et C++ dans Ubuntu.
Pour ma part, ils étaient déjà installés.
Téléchargé ? — Super !
Maintenant, il faut créer le fichier de configuration pour la compilation.
Dans le terminal, tapez :
cd ipxe/src
gedit chain.ipxeEt insérez dans ce fichier le code suivant, puis enregistrer :
#!ipxe
dhcp
chain http://%IP-address-your-IIS-server%/install.ipxeAllons de nouveau dans le terminal et lançons la compilation :
make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe
Si tout va bien, vous devriez obtenir le résultat suivant dans le terminal :

Et le fichier ipxe.efi, au chemin : ipxe/src/bin-x86_64-efi/ipxe.efi
Si, pour une raison quelconque, vous n'avez pas pu le compiler vous-même,
j'ai joint le mien .
Il est compilé pour démarrer avec http://192.168.0.100/install.ipxe
C'est tout pour Ubuntu.
Étape 3 — Ajout de ipxe.efi à WDS
Prenez le fichier que nous avons obtenu à la deuxième étape et copiez-le au chemin :
%WDSpath%Bootx64%your-boot-folderIBOOT
Après, renommez-le en BOOTX64.EFI.
Ce n'est pas obligatoire, mais c'est plus pratique.
Ensuite, lancez cmd en tant qu'administrateur, et tapez les commandes suivantes :
wdsutil /set-server /bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefi
et
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefiCela installera le fichier obtenu pour le démarrage via WDS.
Vérifions la configuration :
wdsutil /get-server /Show:Config
J'ai également copié le fichier ipxe.efi, l'ai renommé en BOOTIA32.EFI et configuré le démarrage pour lui, juste au cas où. architecture:x86uefi
Mais en réalité, cela n'a pas beaucoup de sens, car le fichier Bootmgfw.efi ne prend pas en charge x86
Vérifions ce que nous avons obtenu.

Excellent, WDS transmits our file for loading and it in turn looks for the configuration at the path: http://192.168.0.100/install.ipxe
Étape 4 — Configuration du menu
Allons dans le dossier racine de votre site.
Par défaut, c'est : C:inetpubwwwroot
Créons un fichier texte install.ipxe.
et configurons-le en fonction de et de vos besoins.
Il existe également une description en russe J'ai utilisé
le guide lors de la configuration de mon WDS. Exemple de configuration install.ipxe
Vous pouvez lire sur la configuration pour le chargement de winPE
#!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Étape 5 — Types MIME .
Après avoir créé le menu et ajouté tous les fichiers nécessaires dans le dossier racine d'IIS,
il est nécessaire d'y donner accès.
Car même si vous essayez de télécharger un fichier depuis le navigateur, à son adresse, vous obtiendrez une erreur :
HTTP 404.3 - Not Found Pour ce faire, il est nécessaire d'ajouter des types MIME dans le panneau de configuration IIS, en fonction.

des extensions de fichiers qui seront téléchargés via http.
Je n'ai pas cherché quel type MIME convient le mieux à cet usage, et j'ai défini
application/octet-stream , après quoi tout a fonctionné.Pour les fichiers sans extension, utilisez un point.
En fin de compte, nous permettons le chargement sur le réseau local via UEFI.
Voici comment :

Conclusion
Si nous avons tout fait correctement, nous aurons à peu près ce menu de sélection de démarrage :
Si vous avez préparé les outils principaux et que vous ne vous embêtez pas avec la configuration, cela prend environ 10 à 20 minutes à réaliser.

Pour moi, cela a pris 2 jours de travail, car j'ai dû faire beaucoup de recherches.
Bonne mise en œuvre !
Merci pour votre attention et un grand merci à ceux dont les articles m'ont aidé !
Sur Habr, c'est :
Ingtar et .
Source : habr.com
