Étendre la fonctionnalité WDS: ajouter une capacité de téléchargement à UEFI

Bonjour Ă  tous!


Cet article décrit les étapes que vous devez suivre pour ajouter des options de démarrage UEFI à votre WDS.


C'est-à-dire les instructions de cet article supposent que vous avez déjà quelque chose comme la configuration suivante:


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

De plus, voici les actions qui ne m'ont pas apporté le bon résultat.
Je les ai décrits, pour faciliter la recherche et gagner du temps.


Préface


Fait en quelque sorte au travail WDS avec beaucoup de goodies, parce que fatigué de courir constamment avec un tas de lecteurs flash et de les écraser.


Soit dit en passant, ces articles m'ont aidé en passant:
Ajouter la polyvalence WDS
Menu de démarrage PXE avec System Center Configuration Manager


Ça ressemble à ça


Et tout allait bien, de nouvelles images ont été ajoutées pour le chargement, l'image winPE était envahie de nouvelles fonctionnalités et tout fonctionnait.


Mais, en aucun cas, tous les périphériques ne prennent en charge le mode de démarrage BIOS / Legacy, ou s'ils le prennent en charge, son inclusion peut être située à un endroit très peu évident.


Et l'installation de fenêtres en mode hérité, quand il est possible d'installer dans UEFI, n'est pas cool.


À la fin, j'ai décidé d'ajouter la possibilité de télécharger sur UEFI, et je suis allé sur Google.


Mais je n'ai toujours pas trouvé d'informations structurées sur la façon d'obtenir un WDS + UEFI fonctionnel.
En fait, c'est pourquoi j'ai décidé d'écrire cet article.


Avant de commencer, je décrirai le problème qui a pris le plus de temps.


Lors de l'ajout d'UEFI à WDS, la situation suivante, plutôt pas évidente, est possible:

Si vous ajoutez un fichier de démarrage à WDS et lorsque vous essayez de démarrer sur l'appareil
dans UEFI, vous voyez le texte suivant:
The selected boot device failed. Press <Enter> to Continue.
Ou Boot Device Not Found
Mais le chargement dans l'héritage fonctionne pour vous.
Ensuite, l'une des options possibles est l'absence du fichier wdsmgfw.efi ,
chemin suivant: %WDSpath%\Boot\x64\wdsmgfw.efi


Vous pouvez le prendre ici: C:\Windows\System32\RemInst\boot\x64\wdsmgfw.efi
Ou, si pour une raison quelconque vous n'avez pas ce fichier, je l'ai posté sur google .
Pour cette décision, merci aux gars du reddit .


Avec ce problème, j'ai tué le plus de temps depuis Je pensais que le problème était quelque part dans la configuration WDS ou DHCP.


Stratégies configurées en ajoutant des classes de fournisseurs pour diverses architectures et en configurant les options DHCP 060, 066, 067. Instructions pour configurer les stratégies DHCP.


Architectures ASCII pour configurer DHCP

PXEClient: Arch: 00000 - BIOS / hérité
PXEClient: Arch: 00006 - UEFI x86
PXEClient: Arch: 00007 - UEFI x64


J'ai également essayé diverses options pour les fichiers de démarrage .efi


  • syslinux
  • grub 2

J'ai également essayé de trouver le problème dans le journal des événements.
win + r -> eventvwr -> -> Microsoft -> Windows -> Deployment-Services-Diagnostics


Mais, comme je l'ai dit plus haut, le problème résidait dans le fichier wdsmgfw.efi .
Soit je l'ai accidentellement supprimé moi-même, soit il n'a pas été copié lors de l'installation
et configurer WDS.


Eh bien, commençons!


Manuel d'instructions


Étape 1 - Bilan de santé WDS


Prenez n'importe quel appareil ou machine virtuelle qui prend en charge le démarrage UEFI sur le réseau et essayez de démarrer.


Vous devriez avoir l'image suivante:



Si oui, alors très bien, vous pouvez continuer.
Sinon, voyez ce que j'ai écrit dans l'introduction.


Étape 2 - Créez le fichier de démarrage iPXE


Exécutez Ubuntu pré-préparé, ouvrez le terminal et insérez cette ligne:


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


Ici, je voudrais faire une petite remarque sur le fait que vous devrez peut-être ajouter dans Ubuntu les packages nécessaires à la compilation de C et C ++.
Je viens de les avoir déjà installés.


Téléchargé? - Génial!
Vous devez maintenant créer un fichier de configuration pour l'assemblage.
Dans le terminal, écrivez:


 cd ipxe/src gedit chain.ipxe 

Et collez dans ce fichier, le code suivant, puis enregistrez:


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

Nous revenons au terminal et commençons la compilation:


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


Si tout est en ordre, vous devriez obtenir la sortie suivante dans le terminal:



Et le fichier ipxe.efi , le long du chemin: ipxe/src/bin-x86_64-efi/ipxe.efi
Si, pour une raison quelconque, vous ne pouviez pas vous compiler,
J'ai joint mon dossier .
Il est compilé pour téléchargement à partir de http://192.168.0.100/install.ipxe


C'est tout avec Ubuntu.


Étape 3 - Ajout d'ipxe.efi à WDS


Nous prenons le fichier que nous avons reçu dans la deuxième étape et copions le long du chemin:
%WDSpath%\Boot\x64\%your-boot-folder%\EFI\BOOT\
Après l'avoir renommé BOOTX64.EFI.
Ce n'est pas nécessaire, c'est juste plus pratique.


Exécutez ensuite cmd en tant qu'administrateur et écrivez les commandes suivantes:


 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 

Cela installera le fichier résultant pour le téléchargement via WDS.


Vérifiez la configuration:


 wdsutil /get-server /Show:Config 


J'ai également copié le fichier ipxe.efi, renommé BOOTIA32.EFI et configuré le téléchargement pour cela, juste au cas où. architecture:x86uefi
Mais dans l'ensemble, cela n'a aucun sens, car Le fichier Bootmgfw.efi ne prend pas en charge x86


Vérifiez ce qui s'est passé.

Eh bien, WDS envoie notre fichier en téléchargement et, à son tour, recherche la configuration le long du chemin: http://192.168.0.100/install.ipxe


Étape 4 - Configuration du menu


Nous allons dans le dossier racine de votre site.
Par défaut, c'est: C:\inetpub\wwwroot


Créez un fichier texte install.ipxe .


Et configurez-le en fonction de la documentation et de vos besoins.
Il y a aussi une description en russe des équipes.
J'ai utilisé cette instruction lors de la configuration de mon WDS.


Exemple de configuration 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 

Vous pouvez lire la configuration pour charger winPE ici .


Étape 5 - Types MIME


Après avoir créé le menu et ajouté tous les fichiers nécessaires au dossier racine IIS,
vous devez leur donner accès.


Parce que même si vous essayez de télécharger un fichier à partir du navigateur, vous obtiendrez une erreur à son adresse: HTTP 404.3 - Not Found .


Pour ce faire, ajoutez les types MIME dans le panneau de configuration IIS, conformément
avec des extensions de fichiers que vous téléchargerez via http.


Je n'ai pas cherché quel type de MIME est meilleur à ces fins, et défini l' application/octet-stream , après quoi tout a fonctionné.


Pour les fichiers sans extension, utilisez un point.


Comme ça:



Conclusion


En fin de compte, nous avons la possibilité de démarrer sur le réseau local via UEFI.


Si nous avons tout fait correctement, il y aura quelque chose comme le menu de sélection de démarrage:



Si vous avez préparé les outils de base et que vous ne vous ennuierez pas avec la configuration, il faut environ 10 à 20 minutes pour implémenter cette fonctionnalité.
Cela m'a pris 2 jours ouvrables, car a dĂ» beaucoup google.


Mise en œuvre réussie!


Merci de votre attention et merci beaucoup aux personnes dont les articles m'ont aidé!
Sur Habr it: Ingtar et Deeptown .

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


All Articles