CustPE : Maîtrise des images de démarrage LTI/WinPE

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.

WPE02-img08
LiteTouchPE.xml - Section "Settings"

Puis une section "<!-- Components -->" chargée d'énumérer les fonctionnalités et composants à intégrer dans le noyau.

WPE02-img09
LiteTouchPE.xml - Section "Components"

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.

WPE02-img10
LiteTouchPE.xml - Section "Driver and packages"

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".

WPE02-img11
LiteTouchPE.xml - Section "Configuration"

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.

WPE02-img12
LiteTouchPE.xml - Section "Scripts"

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.

WPE02-img13
LiteTouchPE.xml - Section "Tools"

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.

WPE02-img14
LiteTouchPE.xml - Section "Exits"

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.

WPE02-img15
Generic.xml

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.

WPE02-img16
Propriétés MDT Deployment Share - Onglet "Windows PE"

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".

WPE02-img17
Propriétés MDT Deployment Share - Features (Par défaut)

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é

WPE02-img18
Propriétés MDT Deployment Share - Features (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:

WPE02-img19
Propriétés MDT Deployment Share - Drivers and Patches

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"

WPE02-img20
Selection Profiles

Puis d'utiliser le menu "Action … New  Selection Profile" ou le menu contextuel.

WPE02-img21
New Selection Profile - General

Entrez le nom de votre profil de sélection et une description éventuelle puis cliquez sur "Next".

WPE02-img22
New Selection Profile - Folders

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.

 

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Christophe Mandin

Consultant/Formateur indépendant en quête de solutions et de moyens alliant efficacement la théorie et la pratique. Fort d’une expérience de plusieurs dizaines années dans l’informatique, j’ai pu apprécier de nombreuses problématiques, développer des qualités rédactionnelles et un esprit de synthèse, tout en me forgeant de solides fondamentaux théoriques, indispensables à toute analyse et mise en œuvre fonctionnelle. Malgré toutes ces années, je ne me lasse pas du plaisir de transmettre mes connaissances en misant sur 3 critères que sont les fondamentaux, la simplicité et le pragmatisme. Bien à vous. Retrouvez-moi sur LinkedIn : Christophe Mandin

Nombre de posts de cet auteur : 32.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.