WIM vers VHD – Gagner du temps

 

Cet article s’adresse à tous ceux qui souhaite gagner un temps précieux lors de leurs déploiements Windows. L’astuce, c’est un bien grand mot, consiste à extraire une image WIM vers un disque virtuel .VHD afin de bénéficier rapidement d’un support déjà peuplé par une distribution Windows prête à être installée.

Un bref rappel des principes et des intérêts

Les poupées russes :

Depuis Vista, le DVD de Windows est composé de nombreux fichiers dont le plus important (surtout par la taille) est le fichier “\Sources\install.wim”. Ce fichier WIM est en fait un ensemble d’une ou plusieurs distributions (ou images) de Windows NT 6, préparées (sysprep) pour l’installation. En fait, l’image est extraite vers le support de destination lors du processus de déploiement et d’installation (setup.exe).

Le fichier VHD, est quant à lui un “disque virtuel” pouvant être associé à une machine virtuelle (typiquement sous Hyper-V) ou affecté à une machine physique sous Windows 7 entreprise, intégrale, Windows 8 ou les versions serveurs. (Très pratique pour éviter de fastidieux jonglages avec les partitions lors de vos tests.)

L’opération étudiée ici repose donc sur ce postulat :

Ouvrir l’ISO du DVD, puis extraire l’image contenu dans le WIM vers le fichier de disque virtuel .VHD. (Sans oublier de créer l’amorçage nécessaire à son utilisation).

1ère solution : Opération manuelle (Même pas peur !…)

Les outils :

Contrairement à Windows 8/2012, sous Windows 7, 2008R2, le montage d’une image .ISO n’est pas natif. Je vous conseille donc de télécharger et installer le petit outil Virtual Clone Drive. Ensuite, pour le fichier .WIM, soit vous êtes un aficionados de la ligne de commande et DISM ne vous impressionnera même pas ou vous êtes un peu moins motivé (ça m’arrive aussi) et vous apprécierez l’excellent outil GImageX GUI de  Jonathan Bennett.(Vous pourriez ouvrir et explorer le contenu d’un fichier .WIM via l’outil 7-Zip, mais je le déconseille pour les opérations d’extraction qui vont suivre). Concernant le fichier de disque virtuel, soit vous utilisez DISKPART (pour les plus courageux) soit le gestionnaire de disque Diskmgmt.msc pour les autres ……
La dernière opération sera en ligne de commande (toute simple, je promets) avec l’outil BCDBOOT (et oui, y’a pas que BCDEDIT pour gérer l’amorçage)

Let’s go :

Pour votre gouverne, j’ai réalisé cet atelier sur une plateforme Windows 7 x64 pro d’évaluation.

  • Installez l’outil de montage .ISO puis montez l’image de votre distribution Windows dans ce lecteur virtuel VCD. (par exemple “L:”) – Fermez l’éventuelle invite d’exécution automatique.
    MountISO
  • Ouvrez le gestionnaire de disque puis utilisez le menu “Action … Créer un disque virtuel”. Choisissez un chemin, un nom pour le fichier et indiquez une taille de 30Go par exemple (attention, l’unité proposée par défaut est en Mo). Si vous n’avez pas beaucoup de place, choisissez taille “dynamique”.
    CreateVHD
    (Rassurez vous, ces disques virtuels peuvent être convertis en taille fixe et/ou étendus, s’il ne sont pas en cours d’utilisation) – Le nouveau disque apparaitra comme non initialisé. Initialisez le disque en type MBR (Secteur de démarrage principal) puis formatez-le (Rapide, NTFS) et affectez ensuite une lettre de lecteur, telle que “V:” par exemple.
    Format-VHD
    N’oubliez pas de “Marquer cette partition comme Active”
    Set-Active
  • Ouvrez ensuite l’outil GImageX.exe  – Cet outil ne s’installe pas, il suffit d’extraire de .zip et d’exécuter le programme situé sous “install” 32 ou 64 bits selon votre plateforme . Sélectionnez l’onglet “Apply”, indiquez la source, comme “L:\Sources\install.wim” dans mon exemple, puis la destination “V:”, toujours dans cet exemple, et enfin de stipuler l’index en utilisant le bouton “Select” (là, ça dépend de votre distribution !) – Pour ma part, il s’agissait d’une distribution Windows Server 2008R2 (x64) localisé Français, par laquelle j’avais retenu l’installation complète de la version Enterprise, et dans ce cas l’index N°3.
    GImageX-Apply
    Puis cliquez sur le bouton “Apply” et patientez quelques petites minutes. Une fois l’extraction terminée, vous pourrez fermer cet outil.
  • Ouvrez une invite de commande (traditionnelle ou Powershell) en tant qu’administrateur puis entrez la ligne suivante :
    BCDBOOT V:\Windows /S V: /L fr-FR
    A ce stade, le disque sera prêt pour une utilisation dans une machine virtuelle. Toutefois, dans le cas ou vous auriez souhaité l’utiliser sur votre machine physique, il suffisait de modifier sensiblement la commande par :
    BCDBOOT V:\Windows /S B: /L fr-FR
    (B: étant la partition active sur ma plateforme)

Note : Dans cet exemple, la partition d’amorçage et le système sont sur la même partition, ce qui à mon avis ne pose aucun problème. En effet, si vous souhaitez utiliser des fonctionnalités telles que Bitlocker qui requiert un double partitionnement, après avoir démarré sur ce système, il suffira de réduire (dynamiquement) la partition unique puis de créer une nouvelle partition à la fin. Vous n’aurez qu’a activer cette partition, après l’avoir formaté NTFS puis attribuer une éventuelle lettre telle que “B:” comme “boot” Clignement d'œil. Ensuite , régénérez l’amorce via la commande :
BCDBOOT C:\Windows /S B: /L fr-FR

Notez que l’affectation d’une lettre sur la partition d’amorçage n’est pas obligatoire mais cela simplifie la commande BCDBOOT, sans quoi il aurait fallu stipuler le commutateur /M suivi de l’identifiant {GUID} de la partition Triste. Rassurez-vous, ces lettres B:, V: … sont provisoires et ne sont mentionnée que durant l’opération de configuration. Une fois démarré, vous retrouverez probablement votre bon vieux “C:\Windows !”

De retour dans le gestionnaire de disques, détachez le disque virtuel.

Pour le tester, affectez ce disque virtuel à votre machine virtuelle (Hyper-V, VirtualPC, VirtualBox – pour VMWare il vaut mieux le convertir en VMDK, via winimage par exemple). Pensez à créer un “snapshot” avant de démarrer la VM et ainsi préserver ce disque pour un usage ultérieur.

Rangez-le dans votre bibliothèque Clignement d'œil (de disques virtuels).

 

2ème solution : le script Convert-WindowsImage.ps1

Ce script sous Powershell est gracieusement proposé par les équipes de scripting Microsoft et disponible ici

L’usage de ce script nécessite cependant Windows 8 et  Powershell v3 ou supérieure.

Cette solution est plus élégante, et surtout moins gourmande en temps et en stockage. En effet, le stockage du fichier .ISO ou .WIM vous coutera 2 à 3Go alors que le VHD de l’exemple précédent pèse déjà pratiquement 10Go.

Notez que ce script dispose également, d’un affichage graphique :

.\Convert-WindowsImage.ps1 -ShowUI

Convert-WindowsImage

L’usage est documenté sur la page du site (en anglais) –

Si vous ne disposez pas de Windows 8 ou 2012, vous pouvez utiliser un script similaire nommé WIM2VHD.wsf , mais il vous faudra installer le kit WAIK car l’outil a besoin de “Imagex”. Un exemple d’utilisation est également expliqué ici
(Oups Triste, Microsoft semble avoir retiré cet outil de ses archives, peut être parce qu’ils considèrent qu’on est tous passé à Windows 8 ? – Ne parvenant pas à le retrouver sur la toile, je mets mon archive à disposition ici)

Voilà, j’espère que cet article vous fera gagner un temps précieux …

Bien à vous

 

Christophe

Laisser un commentaire

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