Boot sur VHD : quelques explications et exemples

Windows 7 et Windows Server 2008 R2 offrent la possibilité de pouvoir booter sur un disque VHD et non plus directement sur une partition physique, cette fonctionnalité est rendue possible via le “Boot Manager” de Windows 7 ou Windows Server 2008 R2. Il  est ainsi possible d’exploiter un VHD comme un disque dur amorçable. Le système d'exploitation installé sur le VHD est obligatoirement un Windows 7 ou un Windows Server 2008 R2

Benoit Sautière a posté un excellent article sur l’installation de Windows Seven avec cette nouveauté : le boot depuis un disque VHD.

Disponible à l’adresse suivante : https://blogcastrepository.com/blogs/benoits/archive/2009/01/11/windows-seven-boot-from-vhd-et-multiboot.aspx

Maintenant pour ma part, je vais vous expliquer comment sous Windows Vista ou Windows Server 2008 utiliser cette fonctionnalité

Etape 1  : Création d'un fichier VHD de Windows 7 ou Windows Server 2008 R2

Sous Windows Server 2008 hyper-V, je crée une machine virtuelle avec un disque dynamique ou fixe par exemple de 25 Go ou plus (attention la taille à son importance car je devrai disposer de cette espace libre sur la partition qui hébergera le fichier VHD)

Une fois l'installation du système d'exploitation, je fais un sysprep de mon installation (avec le Sysprep /generalize)   

Etape 2 : Remplacement des fichiers Boot Manager et BCDEDIT par ceux de Seven ou 2008R2

Je remplace les fichiers BootManager (volume de démarrage\bootmgr)  et bcdedit (%systemroot%\system32\bcdedit.exe) de mon installation Windows Vista ou Windows Server 2008 par ceux d'une installation Windows 7 ou Windows server 2008 R2

Cette procédure fonctionne même si le volume est bitlocké, par contre le fichier vhd ne pourra pas résider sur la partition bitlockée

Echo Setting permissions on boot files.
takeown /f %systemdrive%\bootmgr /a
takeown /f %systemroot%\system32\bcdedit.exe /a
icacls %systemdrive%\bootmgr /grant Administrators:(F)
icacls %systemroot%\system32\bcdedit.exe /grant Administrators:(F)

Echo Backing up original boot files.
Xcopy /h /r /y %systemdrive%\bootmgr c:\backup\Bootfiles\
Xcopy /h /r /y %systemroot%\System32\bcdedit.exe c:\backup\Bootfiles\

Echo Installling Win7/2008R2 boot files.
xcopy /h /r /y .\bootmgr %systemdrive%\
xcopy /h /r /y .\bcdedit.exe %systemroot%\System32

PS : il est possible d'utiliser l'outil BCDboot pour faire cette mise à niveau, situé dans le répertoire \System32 de l'image VHD WIndows 7/ Windows Server 2008 R2 ou d'un Windows PE, il permet de copier les fichiers de démarrage d'environnement et la configuration de données de démarrage (BCD) depuis le répertoire \Windows dans le VHD sur la partition système. L'outil BCDboot importe automatiquement les informations de l'installation existante lors de la mise à jour du BCD. L'ordinateur est maintenant mis à jour pour inclure un environnement de démarrage de Windows 7. Vous pouvez désormais suivre l'étape 3

Etape 3 : Création de l'entrée de démarrage correspondant au disque VHD

bcdedit /copy {current} /d “Boot_From_VHD”

Copier le CSLID affiché…

bcdedit /set {CLSID} device vhd=[C:]\vhdname.vhd

bcdedit /set {CLSID} osdevice vhd=[C:]\vhdname.vhd

bcdedit /set {CLSID} detecthal on

Vous pouvez remplacer [C:]\vhdname.vhd avec le chemin et le nom de votre VHD.

C'est fini

PS : attention si la partition du système d'origine est bitlockée, il faudra démarrer avec la clé de réparation, désactiver puis réactiver bitlocker sur la partition via le panneau de configuration)