Histoires de BureauDouble amorçage avec Windows XP et Windows PE 2.0

Wes Miller

Télécharger le code de cet article: Desktop2008_02.exe (151KB)

Dans les articles précédents des Histoires de Bureau, j'ai mentionné que Windows PE est devenu un outil de récupération et j'ai expliqué comment vous pouvez l'utiliser à partir d'une deuxième partition. Une question que j'ai reçue récemment m'a incité à penser qu'il pourrait être utile d'aborder à nouveau ce sujet : l'utilisation conjointe de Windows PE 2.0 et de Windows XP.

Après tout, beaucoup d'entre vous utilisent sans doute Windows® XP depuis un certain temps et Windows PE 2.0 est la version dont Microsoft assurera le support à l'avenir (notez qu'il n'y aura plus de mises à jour de Windows PE 1.x).

Une des différences importantes entre Windows PE 1.x et 2.x réside dans le fait que Windows PE 2.x peut démarrer à l'aide d'une interface de démarrage standard (contrairement à la méthode spécialisée utilisée par Windows PE 1.x). Bien que vous puissiez démarrer Windows PE 1.x ou 2.x à partir d'une deuxième partition, la commodité de le démarrer sur la partition de démarrage de votre système d'exploitation présente un potentiel énorme, que j'aborderai bientôt.

Deux amorçages pour Windows

Windows NT® a toujours été relativement tolérant au double amorçage. Mais comme les ordinateurs EFI (Extensible Firmware Interface) ont commencé à remplacer l'ancien BIOS IBM PC AT, Microsoft a modifié le mécanisme de démarrage de Windows pour travailler de façon plus optimale avec EFI et avoir un seul mécanisme de démarrage pour toutes les architectures. Le nouveau mécanisme de démarrage de Windows, introduit dans Windows Vista®, est appelé Base de données de Configuration du Démarrage ou BCD (voir microsoft.com/whdc/system/platform/firmware/bcd.mspx). Mais que l'on parle de l'ancien boot.ini ou du nouveau mécanisme BCD, Windows peut en général faire démarrer d'autres systèmes d'exploitation, même si cela nécessite de transférer le processus de démarrage vers un autre chargeur de démarrage.

Avant que nous ne commencions, il est essentiel que vous vous rappeliez que Windows PE 2.0 ne fonctionne qu'avec des systèmes qui ont à la fois la compatibilité totale ACPI (Advanced Configuration and Power Interface) et 384 Mo (ou mieux 512 Mo) de mémoire RAM. Comme je l'ai indiqué dans mon article du mois de mai (technetmagazine.com/issues/2007/05/DesktopFiles), les systèmes non ACPI ne démarreront pas sous Windows PE 2.0, et comme Windows PE 2.0 doit démarrer avec un RAMDisk, il doit avoir assez de mémoire RAM pour contenir le RAMDisk, un espace de travail et tout le jeu de travail de mémoire RAM. Si votre système possède moins de 384 Mo de mémoire RAM, n'envisagez même pas cette option ; utilisez plutôt Windows PE 1.6. Même quelqu'un d'habile à réduire la taille de Windows PE ne peut pas le faire fonctionner correctement avec 256 Mo.

Oh, les problèmes que vous allez résoudre !

Voyons maintenant quels sont les problèmes que vous pouvez traiter en démarrant Windows PE 2.0 à partir de la même partition que Windows XP.

Récupération complète du système Voici un exemple de tâche qui devient possible lorsque Windows PE est démarré directement à partir de la partition de Windows XP. Dans la mesure où Windows PE 2.0 (comme Windows PE 1.6 auparavant) peut démarrer entièrement dans un RAMDisk, vous pouvez reconstruire l'image du disque entier (ou utiliser ImageX pour restaurer les fichiers de Windows XP par eux-mêmes) puisqu'il n'est pas nécessaire de reconstruire l'image de la partition toute entière.

Si les utilisateurs démarrent avec Windows PE, ils peuvent récupérer leurs propres systèmes même en travaillant à distance. L’image peut venir d'une partition secondaire, d'un partage réseau (si les utilisateurs ne sont pas mobiles), d'un DVD de récupération ou d'un disque dur USB ou, si vous utilisez ImageX, vous pouvez même l'enregistrer sur la partition en cours de récupération. Ce type de récupération sur disque est une excellente solution à beaucoup de problèmes (à l'exception de la corruption physique d'un disque). Ce n'est pas la meilleure solution pour restaurer des données utilisateur, sauf si elles étaient protégées et qu'elles ont ensuite été restaurées pendant la récupération. Souvenez-vous qu'il convient d'utiliser des profils itinérants et de sauvegarder les données de l'ordinateur pour éviter ce genre de perte. Vous devrez aussi vous assurer que tout mécanisme de récupération que vous utilisez est capable d'atténuer les pertes de données potentielles pour l'utilisateur (notamment les pertes dues à la réinitialisation des clés de chiffrement EFS).

Récupération de fichiers Windows PE fournit également le mécanisme permettant de faire fonctionner un système même si l'installation principale de Windows ne démarre pas. Dans ce cas, vous pouvez démarrer et récupérer les données utilisateur, soit en les envoyant à un autre système (à condition de disposer d'un système de sauvegarde accessible aux utilisateurs) ou à un autre emplacement pour que l'utilisateur puisse recommencer à travailler rapidement.

Réparation de système Enfin, le démarrage de Windows PE sur Windows XP vous permet de réparer un système en exécutant soit une série de scripts de dépannage, soit une simple réparation pilotée par l'utilisateur ou enfin une application de récupération. Le processus est similaire à une récupération complète de système, mais son étendue est plus limitée (et ne met pas les données utilisateurs en danger).

Maintenant que vous avez petite idée de ce que vous pouvez faire si vous démarrez Windows PE sur la partition de Windows XP, voyons ce qui se passe dans les coulisses pour que vous puissiez appliquer le processus à n'importe quelle solution.

Avant Windows Vista

Avant la commercialisation de Windows Vista, voici comment les systèmes basés sur un BIOS/MBR (Master Boot Record) démarraient. Le BIOS pointait sur le périphérique de démarrage (dans le cas du disque dur, il pointait sur le MBR du disque). Le MBR exécutait un code qui indiquait quelle partition utiliser pour démarrer. Remarquez qu'il s'agissait de la première partition pour laquelle un indicateur actif était défini. Dans les versions les plus anciennes de diskpart, vous ne pouviez pas désactiver une partition (c'est-à-dire que vous ne pouviez pas supprimer l'indicateur actif). Le commutateur a été ajouté à diskpart pour corriger ceci car sinon, ce serait la première partition dans l'ordre de la table des partitions dont l'indicateur serait activé. La partition contient le secteur d'amorçage, qui indique le code à exécuter ensuite. De Windows NT à Windows Server® 2003, le code à exécuter se trouve dans un fichier nommé ntldr, sans extension de fichier. Si vous avez déjà formaté un disque, sans installer Windows et que vous avez ensuite essayé de démarrer, vous avez vu le message d'erreur « NTLDR not found » (NTLDR non trouvé).

Il est intéressant de savoir que ntldr est entièrement rétrocompatible, mais bien entendu, il n'est pas compatible vers le haut. Cela signifie que le ntldr de Windows XP peut démarrer Windows 2000, mais que l'inverse n'est pas vrai. C'est pourquoi il est primordial de toujours installer le système d'exploitation le plus ancien en premier lorsque vous planifiez un double amorçage. Dans la mesure où ntldr n'a pas de numéro de version, cette condition est encore plus importante.

Ntldr est une appli en mode réel (16 bits) qui lance NTDetect.com, lequel exécute une détection simple des périphériques puis lance le noyau, ntoskrnl.exe (il peut s'agir d'un fichier parmi plusieurs, toujours renommé en ntoskrnl.exe). Le noyau est le composant critique du processus de démarrage de Windows.

Ce résumé du processus de démarrage est un peu simpliste et j'ai omis l'initialisation complète de Win32®, mais il n'est pas pertinent d'en parler dans cet article. Si vous souhaitez obtenir plus d'informations à ce sujet, je vous recommande la lecture de Au coeur de Windows, Quatrième Édition, Dunod, 2005 (Windows Internals, Fourth Edition, Microsoft Press®, 2004) par Mark Russinovich et David Salomon.

Une autre chose à noter est que lorsque vous démarrez à partir du CD, Windows Setup et Windows PE lancent setupldr.bin au lieu de ntldr. Ce fichier contient en fait un code de démarrage légèrement différent afin de démarrer à partir du CD (ce que ntldr ne peut pas faire). C'est la raison pour laquelle, afin de démarrer Windows PE 1.x, vous avez renommé setupldr.bin en ntldr et l'avez mis sur disque. C'est aussi la raison pour laquelle ce ficher ne pouvait alors pas charger de fichier boot.ini (parce que setupldr.bin a été conçu uniquement pour le démarrage à partir d'un CD et, par conséquent, boot.ini n'était pas considéré comme nécessaire).

Windows Vista et au-delà

Windows Vista a modifié plusieurs éléments de ce processus. Windows Server 2008 le modifie encore davantage en activant IA32 (prise en charge 32 bits) pour démarrer à partir de EFI, ce qui n'était jusqu'ici pas possible hormis pour les systèmes basés sur Itanium. Pour les systèmes basés sur le BIOS, les étapes initiales du processus de démarrage restent dans l'ensemble inchangées. La différence clé réside dans le fait que BOOTMGR est le chargeur de démarrage qui est initialisé et qui exécute ensuite les étapes suivantes.

Il recherche le fichier BCD dans le répertoire de démarrage, qui est de fait sa propre ruche de Registre. Le BCD contient les entrées permettant de démarrer (y compris l'entrée par défaut). Jetez un œil à la figure 1 pour connaître les types d'images (types de fichiers exécutables) et à la figure 2 pour connaître les types d'application spécifiques à lancer. L'une (ou plusieurs) de ces entrées peut être une référence à ntldr. Une seule d'entre elles peut réellement référencer le GUID bien connu utilisé pour charger ntldr (voir la cinquième ligne de la Figure 3). Bootmgr décide alors quelle entrée doit être chargée ensuite, selon que le système est en cours de démarrage, était en veille prolongée ou démarre avec ntldr ou un autre gestionnaire de démarrage (auquel cas il pointerait vers un autre secteur d'amorçage et lancerait ce chargeur). Il s'agirait du cas le plus courant si vous étiez en train d'effectuer un double amorçage avec un système d'exploitation autre que Windows. Vous trouverez plus d'informations à la page microsoft.com/whdc/system/platform/firmware/bcd.mspx.

Figure 3 Objets d'application standard

Description ID BCDEdit GUID
Gestionnaire de démarrage Windows {bootmgr} 9dea862c-5cdd-4e70-acc1-f32b344d4795
Gestionnaire de démarrage de microprogramme {fwbootmgr} a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba
Testeur de mémoire Windows {memdiag} b2721d73-1db4-4c62-bf78-c548a880142d
Application de reprise Windows Pas d'alias 147aa509-0358-4473-b83b-d950dda00615
Chargeur de Windows hérité {ntldr} 466f5a88-0af2-4f76-9038-095b170dc21c
Entrée de démarrage actuelle {current} fa926493-6f1c-4193-a414-58f0b2456d1e
Entrée de démarrage par défaut {default} pas de GUID prédéfini
     

Figure 2 Types d'application

Description Valeur Description
Gestionnaire de démarrage de microprogramme 0x1 S'applique uniquement aux systèmes EFI.
Gestionnaire de démarrage Windows 0x2 Contrôle le flux de démarrage. Dans un système à double amorçage, affiche un menu de sélection du démarrage à l'utilisateur.
Chargeur de démarrage Windows 0x3 Charge une version ou une configuration particulière de Windows.
Application de reprise Windows 0x4 Restaure Windows à son état d'exécution lorsqu'un ordinateur sort de l'état de veille.
Testeur de mémoire Windows 0x5 Application de diagnostic de mémoire.
Ntldr 0x6 S'applique uniquement aux systèmes BIOS PC/AT. Charge des versions de Windows antérieures à Windows Vista.
Secteur d'amorçage 0x8 Application en mode réel 16 bits. S'applique uniquement aux systèmes BIOS PC/AT. Peut être utilisée pour redémarrer le processus de démarrage et charger un système d'exploitation autre que Windows.
     

Figure 1 Types d'images :

Description Valeur
Application de microprogramme 0x1
Application de démarrage 0x2
Objet chargeur basé sur Ntldr 0x3
Application en mode réel 0x4
   

Vous remarquerez que l'infrastructure de démarrage repensée de Windows Vista est beaucoup plus organisée que les versions précédentes : à l'exception de bootmgr, tout le code de démarrage existe au niveau racine/répertoire de démarrage et est transmis à des fichiers binaires propres à Windows une fois que BCD l'a spécifié.

Démarrage de Windows XP et de Windows PE 2.0

Vous commencez sans doute maintenant à voir comment Windows PE, en utilisant le gestionnaire de démarrage de Windows Vista, peut servir d'intermédiaire pour vous permettre de continuer à démarrer Windows XP ou des versions antérieures de Windows tout en ajoutant Windows PE 2.0 à l'ensemble pour disposer d'un outil de récupération intégré.

Bien sûr, vous allez ajouter une autre étape au processus de démarrage, mais c'est une étape prévue à dessin par Microsoft. Sachant que la nouvelle infrastructure de bootmgr devait être rétrocompatible avec le ntldr existant et d'autres gestionnaires de démarrage tiers, bootmgr a été conçu de sorte à prendre en charge de telles solutions.

Donc, à présent que nous avons examiné comment Windows démarre et comme le nouveau BCD fonctionne, comment lions-nous les deux ensemble et récupérons-nous Windows PE 2.0 sur notre installation existante de Windows XP ? Il y a deux façons de disposer le secteur d'amorçage de Windows Vista, c'est-à-dire le morceau de code de démarrage qui dit au système de démarrer bootmgr. L'une d'entre elles consiste à utiliser diskpart et à créer et formater une nouvelle partition avec Windows PE 2.0. Mais vous n'aurez pas cette possibilité ici, car vous avez déjà une installation Windows XP que vous ne voulez pas endommager ou déplacer. Suivez plutôt ce processus :

  1. Assurez-vous que vous avez une copie de bootsect.exe et de bcdedit.exe sur votre CD de démarrage Windows PE 2.0 (les deux se trouvent être trouvés sur votre DVD d'installation de Windows Vista).
  2. Démarrez votre système Windows XP avec le CD Windows PE 2.0.
  3. Une fois le démarrage effectué, exécutez cette commande :
    bootsect.exe /NT60 ALL

Celle-ci définira le secteur d'amorçage comme étant un secteur d'amorçage compatible avec Windows Vista capable de lancer bootmgr.

4. Copiez le gestionnaire de démarrage sur le disque dur :

    xcopy BOOTMGR C:\BOOTMGR /I

5. Copiez le fichier boot.SDI sur le répertoire \BOOT du disque dur. Vous devrez en faire une copie avant de démarrer, car il sera verrouillé et ne pourra être copié pendant l'exécution de Windows PE :

    xcopy BOOT.SDI C:\BOOT\ 

Corrigez le chemin source en conséquence.

6. Copiez boot.WIM sur le disque dur. Comme pour le SDI, vous devez avoir une seconde copie disponible ; vous ne pourrez pas copier le fichier à partir duquel vous exécutez :

    xcopy BOOT.WIM C:\BOOT\BOOT.WIM 

Corrigez le chemin source en conséquence.

7. Maintenant, créez un nouveau magasin BCD :

    bcdedit /createstore

8. Ensuite, créez les entrées BCD permettant de charger Windows PE :

    bcdedit /create {ramdiskoptions} /d "Boot Windows PE"
    bcdedit /set {ramdiskoptions} ramdisksdidevice partition=c:
    bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
    bcdedit /create /d "Windows PE" /application OSLOADER

9. La dernière ligne renverra un GUID. Remplacez {VOTREGUID} par le GUID renvoyé. Il s'agit des entrées sur RAMDisk qui font démarrer Windows PE à partir de votre disque dur, illustrées à la figure 4.

Figure 4 Entrées sur RAMDisk qui amorcent Windows PE à partir de votre disque dur

bcdedit /set {YOURGUID} device ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
bcdedit /set{YOURGUID} path \windows\system32\winload.exe
bcdedit /{YOURGUID} osdeviceramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
bcdedit /set{YOURGUID} systemroot \windows
bcdedit /set{YOURGUID} winpe yes
bcdedit /set {YOURGUID} detecthal yes

10. Maintenant, créez les entrées de bootmgr pour démarrer le gestionnaire de démarrage :

    bcdedit /create {bootmgr} /d "Boot Manager"
    bcdedit /set {bootmgr} device boot

11. Enfin, paramétrez une entrée de BCD pour votre installation Windows actuelle (modifiez le texte d'affichage de Windows XP en ce que vous souhaitez voir affiché dans le menu de démarrage du gestionnaire de démarrage). La dernière commande la définit aussi comme la première entrée (entrée par défaut) dans le menu de démarrage :

    bcdedit /create {ntldr} /d "Windows XP"
    bcdedit /set {ntldr} device partition=C:
    bcdedit /set {ntldr} path \ntldr
    bcdedit /displayorder {ntldr} /addfirst

12. Vous devriez maintenant pouvoir redémarrer votre système et lui faire lancer l'installation précédente de Windows ou de Windows PE 2.0 en sélectionnant l'entrée de menu de démarrage appropriée. La figure 5 illustre l'exemple de sortie de bcdedit/enum all. Cette commande énumère toutes les entrées dans le BCD une fois qu'elles ont été ajoutées (ceci provient de Windows PE 1.6).

Exemple d'entrée

Exemple d'entrée  (Cliquer sur l'image pour l'agrandir)

J'ai travaillé sur un script capable d'exécuter cette tâche automatiquement. Actuellement, il peut uniquement copier les fichiers de démarrage sur le disque dur et définir vos entrées BCD. Il ne peut pas définir le secteur d'amorçage en tant que nouvelle valeur de Windows Server 2008 parallèlement à l'exécution de Windows. Ceci doit être fait hors connexion, sous Windows PE. Vous trouverez ce script dans la section de téléchargements de code du site Web de Technet Magazine à l'adresse technetmagazine com. Pour pouvoir exécuter le script, il faut que les éléments suivants se trouvent dans le répertoire du VBScript que vous exécutez :

  1. BCDEdit
  2. BOOTMGR
  3. Un répertoire \BOOT\ (à partir du support Windows Vista ou Windows PE 2.0)
  4. Un répertoire \SOURCES\ avec un fichier de démarrage BOOT.WIM valide pour Windows PE 2.0

Il créera le BCD et copiera les fichiers de démarrage appropriés. Après avoir démarré avec Windows PE et exécuté bootsect, vous devriez pouvoir effectuer un double amorçage.

Désinstallation d'un double amorçage

La désinstallation d'un double amorçage est encore plus facile sa mise en place. Il suffit de restaurer le secteur d'amorçage en secteur d'amorçage pré-Windows Vista en exécutant de la commande suivante :

bootsect.exe /NT52 ALL

Une fois la restauration effectuée, vous pouvez supprimer bootmgr et le répertoire \boot. Au redémarrage suivant, le secteur d'amorçage forcera ntldr à démarrer et supprimera complètement Windows PE 2.0 et tous les fichiers binaires de démarrage de Windows Vista du flux de démarrage.

Wes Millerest responsable technique de produit chez Initiate Systems (InitiateSystems.com) à Austin, Texas. Auparavant, il a travaillé chez Winternals Software et comme responsable de programme chez Microsoft. Vous pouvez contacter Wes à l’adresse suivante : technet@getwired.com.

© 2008 Microsoft Corporation et CMP Media, LLC. Tous droits réservés. Toute reproduction, totale ou partielle, est interdite sans autorisation préalable.