CustPE : Maîtrise des images de démarrage LTI/WinPE
Sommaire
I. Présentation
Vous savez surement que le MDT est une fabuleuse "usine" capable de vous assister pour la plupart de vos taches de déploiement. Au cours de vos expériences, vous aurez certainement remarqué qu'il était possible de générer des images de démarrage WinPE, pour obtenir vos clients LiteTouch mais également pour des noyaux plus génériques.
En général, ce que l'on connait moins, c'est la façon dont MDT construit ces images et la possibilité d'agir sur cette fabrication.
II. Principe des "templates"
Pour générer les images de démarrage (boot images), MDT s'appuie sur les éléments du kit ADK (anciennement WAIK) ainsi que sur des fichiers au format .XML servant de modèles de construction.
Le fichier utilisé pour la structure de base d'un noyau WinPE pour client LiteTouch est :
"C:\Program Files\Microsoft Deployment Toolkit\Templates\LiteTouchPE.xml"
La composition de ce fichier est assez simple à déchiffrer.
En premier lieu, on peut remarquer une section "<!-- Settings -->" , définissant l'espace de travail "ScratchSpace" . Notion sur laquelle je reviendrais ultérieurement.
Puis une section "<!-- Components -->" chargée d'énumérer les fonctionnalités et composants à intégrer dans le noyau.
Contrairement aux composants (OC's : Optional Components ) qu'il est possible de choisir sous l'onglet "Features", il s'agit ici des composants impératifs qui seront systématiquement ajoutés aux noyaux.
La section "<!-- Driver and packages -->" est vide par défaut, et comme son nom le laisse supposer, elle est destinée à recevoir les pilotes et autre packs linguistiques à ajouter au noyau de base.
Là encore, il est inutile de modifier cette section du fait qu'il est possible de contrôler cette intégration par le biais d'un profil de sélection (Cette notion sera évoquée ultérieurement).
Vient ensuite la section "<!-- Content -->", composée de 3 sous-ensembles
Les fichiers de "configuration", parmi lesquels on retrouve "Bootstrap.ini", "Unattend.xml" et "winpeshl.ini".
Notez que le fichier "Unattend.xml" est lui-même repris selon un modèle dépendant de l'architecture en question x86 ou amd64.
On retrouve dans la partie "<!-- Scripts -->", l'ensemble des scripts du MDT utilisés dans le traitement des séquences de taches, ainsi que des fichiers annexes, xml, png, jpg.
Et enfin dans la partie "<!-- Tools -->", on trouve l'ensemble de la boite à outils MDT composée de plusieurs programmes exécutables et autres bibliothèques.
La dernière section "<!-- Exits -->" référence simplement le script chargé de positionner les variables qui seront utilisées par le processus de mise à jour et de fabrication des images WIM et/ou ISO.
Maintenant, si nous jetons un œil sur le modèle de construction d'un noyau générique, "C:\Program Files\Microsoft Deployment Toolkit\Templates\Generic.xml", on peut constater que son contenu est particulièrement simple.
Pour rappel, ce genre d'image se contente de charger un noyau minimaliste et nous amène sur une simple invite de commande.
III. Personnalisation de WinPE dans la console MDT
Dans la console MDT, les personnalisations de WinPE sont regroupées au niveau de l'onglet "Windows PE" affiché via les propriétés d'un partage de déploiement.
A chaque ouverture de cette fenêtre, vous devrez prêter attention à l'architecture "Platform" car les réglages sélectionnés sont indépendants pour chacune des 2 images WinPE.
A. Onglet "General"
Sous l'onglet "General", vous pouvez opter pour la construction d'images spécialisées pour le déploiement, "Lite Touch Boot Image" et/ou des images simples "Generic Boot Image". Pour chacune d'entre elle, il est possible d'enchainer l'encapsulation de l'image .WIM au sein d'un fichier .ISO prêt à l'emploi (bootable).
Vous pouvez personnaliser quelques réglages simples au niveau du cadre "Windows PE Customizations"
- Custom background bitmap file : Pour modifier l'image de fond d'écran sur WinPE, il suffit de sélectionner une image de votre choix à partir du bouton "Browse". Par défaut, le fichier proposé est "%INSTALLDIR%\Samples\Background.bmp". Depuis WinPE 3, il est possible d'utiliser un format de fichier .jpeg, moins gourmand en taille. Restez toutefois raisonnable sur la taille et la résolution de l'image.
- Extra directory to add : Ce choix permet d'ajouter un dossier de votre choix dans le noyau de WinPE, tel qu'un ensemble d'utilitaires techniques. Attention toutefois à la taille qui influence directement la charge du noyau et à l'architecture 32 versus 64 bits des programmes. J'y reviendrais dans un autre article.
- Scratch space size : Cette valeur, positionnée à "32" par défaut, définit l'espace de travail temporaire affecté en complément du disque mémoire "Ramdrive" de WinPE (variable de 32 à 512 Mo). Cet espace est principalement utilisé par le chargement des pilotes. Personnellement, pour des machines récentes, je vous conseille de positionner cette valeur sur "128", suffisante dans la plupart des cas.
B. Onglet "Features"
Revenons à présent sur la faculté de personnalisation des composants optionnels mentionnée précédemment, et exposés sous l'onglet "Features".
En fait, les binaires correspondants à ces fonctionnalités sont dans les dossiers "WinPE_OCs" situés dans le kit et peuvent être ajoutés unitairement via la commande "DISM /add-Package", ou plus simplement par le MDT sous cet onglet "Features".
Cette liste est contenue dans le fichier "C:\Program Files\Microsoft Deployment Toolkit\Bin\FeatureNames.xml". Vous pouvez toutefois la modifier comme suit (en effectuant une copie de secours préalable) afin d'exclure les fonctionnalités dont vous n'avez pas l'utilité comme par exemple:
<?xml version="1.0" encoding="utf-8" ?> <features> <feature id="winpe-mdac">Microsoft Data Access Components (MDAC/ADO) support</feature> <feature id="winpe-rndis">Remote Network Driver Interface Specification (RNDIS) support</feature> <feature id="winpe-dot3svc">IEEE 802.1x network authentication protocol</feature> <feature id="winpe-pppoe">Point-to-Point Protocol over Ethernet (PPPoE) support</feature> <feature id="winpe-srt">Windows Recovery Environment</feature> <feature id="winpe-fontsupport-ja-jp" option="exclude">Japanese (JA-JP) language pack</feature> <feature id="winpe-fontsupport-ko-kr" option="exclude">Korean (KO-KR) language pack</feature> <feature id="winpe-fontsupport-zh-cn" option="exclude">Chinese (ZH-CN) language pack</feature> <feature id="winpe-fontsupport-zh-hk" option="exclude">Chinese (ZH-HK) language pack</feature> <feature id="winpe-fontsupport-zh-tw" option="exclude">Chinese (ZH-TW) language pack</feature> <feature id="winpe-fonts-legacy" option="exclude">Legacy fonts</feature> <feature id="winpe-legacysetup" option="exclude">Windows setup files (all contents from the sources folder)</feature> <feature id="winpe-setup" option="exclude">Setup feature package (parent)</feature> <feature id="winpe-setup-client" option="exclude">Client Setup feature package (child)</feature> <feature id="winpe-setup-server" option="exclude">Server Setup feature package (child)</feature> <feature id="winpe-wds-tools" option="exclude">Windows Deployment Services Tools</feature> <feature id="winpe-hta" option="exclude">HTML Application support</feature> <feature id="winpe-scripting" option="exclude">Windows Script Host (WSH) support</feature> <feature id="winpe-wmi" option="exclude">Windows Management Instrumentation (WMI) support</feature> <feature id="winpe-netfx">.NET Framework </feature> <feature id="winpe-powershell">Windows PowerShell </feature> <feature id="winpe-dismcmdlets" parent="winpe-netfx,winpe-powershell">DISM Cmdlets</feature> <feature id="winpe-storagewmi" parent="winpe-netfx,winpe-powershell">Storage Management Cmdlets</feature> <feature id="winpe-enhancedstorage" parent="winpe-netfx,winpe-powershell">Enhanced Storage</feature> <feature id="winpe-securebootcmdlets" parent="winpe-netfx,winpe-powershell">Secure Boot Cmdlets</feature> <feature id="winpe-securestartup" option="exclude">Secure Startup</feature> <feature id="winpe-fmapi" option="exclude">File Management API</feature> <feature id="winpe-winrecfg" option="exclude">Windows RE Configuration</feature> <feature id="dart">Microsoft Diagnostics and Recovery Toolkit 7 (DaRT 7)</feature> <feature id="dart8">Microsoft Diagnostics and Recovery Toolkit (DaRT)</feature> </features>
En redémarrant la console MDT, vous pourrez constater que l'affichage est allégé
C. Onglet "Driver and patches"
Attardons-nous maintenant sur la gestion des pilotes et des packages au sein des noyaux WinPE. Dans la console MDT, toujours sous l'onglet "Windows PE" et sous l'onglet "Driver and patches", vous pouvez constater que l'injection de ces éléments peut être réalisée de diverses manières:
Comme expliqué dans un précédent article, les pilotes sont "intelligemment" injectés en fonction de leur classe (types).
Par défaut les pilotes et packages sont recherchés dans ce que l'on nomme un "profil de sélection" (selection profile). En fait, il s'agit simplement d'une sélection mémorisée et nommée de toute ou partie d'une arborescence de dossiers du MDT.
Note : Il est conseillé de créer des sous-dossiers pour la gestion de vos différentes ressources MDT, telles que les applications, les séquences de taches, les packages et particulièrement pour différencier les pilotes que vous souhaitez distinguer de la masse. Grâce à cette bonne pratique vous pouvez maitriser la granularité des profils de sélection.
Par défaut, il existe plusieurs profils prédéfinis stockés dans le fichier "SelectionProfiles.xml" situé sous le dossier "Control" du partage de déploiement.
Vous pouvez créer vos propres profils de sélection pour couvrir vos différents besoins. La procédure est plutôt simple, puisqu'il suffit de développer l'arborescence de la console MDT jusqu''à la rubrique "Advanced Configuration … Selection Profiles"
Puis d'utiliser le menu "Action … New Selection Profile" ou le menu contextuel.
Entrez le nom de votre profil de sélection et une description éventuelle puis cliquez sur "Next".
Cochez simplement le(s) dossier(s) souhaité(s) puis cliquez 2 fois sur "Next" et enfin sur "Finish".
Une fois le profil créé, vous pourrez l'ajouter facilement à vos fabrications.
Note : Les profils de sélection sont également très pratiques pour la gestion des points de déploiement liés "Linked Deployment Shares" afin de ne pas répliquer inutilement des informations sur vos différents serveurs MDT.