Comprendre le BootLoader de Windows Vista

MORAND Louis-Guillaume

Petit article aidant à la compréhension du nouveau système de boot qui devrait voir le jour avec Windows Vista. ♪

- Titre : Comprendre le BootLoader de Windows Vista

- Auteur : MORAND Louis-Guillaume

- Parution : 21 novembre 2005

- Licence : Copyright ® 2006 Louis-Guillaume MORAND. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Introduction

- I. Comprendre le bootloader Vista

- II. Modifier le bootloader

- II-A. Afficher le contenu du bootloader

- II-B. Faire une sauvegarde du BootLoader

- II-C. Éditions des entrées du BootManager

- II-D. Définir le système d'exploitation par défaut

- III. Astuces du bootloader

- III-A. Supprimer l'ancien bootloader

- III-B. Supprimer le BootManager

- III-C. Renommer le menu gérant le NTLDR

- IV. Questions - réponses

- Conclusion

Introduction

Qui n'a jamais eu à gérer un multiboot sur sa machine, en utilisant un bootloader ? Qui n'a jamais vu de Lilo, de Grub ou de NT Bootloader(NTLDR) ? Mieux encore, qui n'a jamais installé Windows Vista et s'est retrouvé devant un menu qui ne ressemblait à rien de « logique » ?

Pour ceux qui ne savent pas à quoi s'attendre parce qu'ils n'ont pas pu tester les dernières builds (bêta) de Windows Vista (ou qui n'ont pas fait attention), lorsque vous installez Windows Vista sur une machine possédant déjà un système d'exploitation Windows (98, NT, 2000 ou XP), un premier menu de boot vous est proposé (voir figure 1). Celui-ci se compose des systèmes utilisant le nouveau bootloader ainsi qu'un menu contenant les « anciens » OS.

Mais voilà, ce nouveau système ne vous conviendra pas forcément. Disons-le franchement, vu le nombre de demandes sur le sujet sur le NET, il a de fortes chances de ne pas vous convenir tel quel, surtout si vous êtes testeur.
En effet, Windows Vista se met en avant et met les autres systèmes d'exploitation (même les autres Windows) en arrière-plan, cachés derrière un menu. Si vous regardez bien la figure 1, c'est justement derrière le menu Legacy (préVISTA)… que se trouve le choix des autres systèmes.

Les fonctionnalités que je vais vous présenter pourraient (comme ne pourraient pas) être intégrées à la version finale de Windows Vista prévue fin 2006. De même, le bootloader pourrait changer du tout au tout d'ici la version finale. Prenez-les à leur juste valeur informative !

I - Comprendre le bootloader Vista

Comme vous vous en doutez, le bootloader ne marche pas tout seul et nécessite un ou plusieurs fichiers. Il doit également être accessible à tous les OS et donc ne peut se trouver dans un registre. L'ancien système NT Loader (NTLDR) utilisait le fichier boot.ini qui se trouvait à la racine de la première partition (généralement C:); ce fichier était en lecture seule, mais contenait des informations en clear text (lisible directement par un humain) et pouvait facilement être modifié. Pour le nouveau bootloader, que l'on nommera BootManager, c'est exactement tout le contraire. Il se compose d'un fichier « bootmgr » (sans extension) qui se trouve à côté du boot.ini, mais celui-ci n'est pas du tout lisible par l'utilisateur ou modifiable facilement.

II - Modifier le bootloader

II-A - Afficher le contenu du bootloader

Comme je l'ai montré dans le chapitre précédent, il n'est pas possible de lire directement le contenu du fichier bootmgr. Néanmoins, Microsoft a quand même pensé à un outil permettant de le manager.
Cet outil se nomme bcdedit(.exe) et se trouve dans le répertoire système de Windows Vista.

C'est donc sous Vista que nous allons exécuter les manipulations suivantes :
- cliquez sur le menu « démarrer » ;
- cliquez sur « Exécuter » (« Run » sur les versions anglophones) ;
- tapez « cmd » (ou « command ») ;
- dans la fenêtre qui s'ouvre, tapez simplement « bcdedit ».

Vous devriez alors enfin avoir un aperçu de l'état de votre bootmanager : (voici un bout du mien avant modification) :

Windows Boot Manager
--------------------
Identifier:             {bootmgr}
Type:                   10100002
Device:                 partition=C:
Description:            Windows Boot Manager
Locale:                 ENG-US
Inherit options:        {emssettings}
{dbgsettings}
Default:                {default}
Display order:          {legacy}
{default}
{125259ae-6fb6-11da-b145-a6f750ea4c73}
{8b3e6862-596d-11da-a5a2-c23a897ad772}
{d2347d7a-4bd4-11da-8917-868242d0bf73}
{0d4d41b2-4b30-11da-be90-f7293e3a6773}
Timeout:                20

Windows Legacy OS Loader
------------------------
Identifier:             {legacy}
Type:                   10300006
Device:                 partition=C:
Path:                   \ntldr
Description:            Legacy (pre-Longhorn) Microsoft Windows Operating System

Windows Boot Loader
-------------------
Identifier:             {default}
Type:                   10200003
Device:                 partition=E:
Path:                   \Windows\system32\winload.exe
Description:            Microsoft Windows
Locale:                 en-US
Inherit options:        {emssettings}
{dbgsettings}
{5189b25c-5558-4bf2-bca4-289b11bd29e2}
Windows device:         partition=E:
Windows root:           \Windows
No Execute policy:      OptIn

Windows Boot Loader
-------------------
Identifier:             {125259ae-6fb6-11da-b145-a6f750ea4c73}
Type:                   10200003
Device:                 partition=E:
Path:                   \Windows\system32\winload.exe
Description:            Windows Vista
Locale:                 ENG-US
Inherit options:        {emssettings}
{dbgsettings}
Windows device:         partition=E:
Windows root:           \Windows
No Execute policy:      OptIn

II-B - Faire une sauvegarde du BootLoader

Avant d'aller plus loin et pour éviter de mauvaises surprises (manipulations), nous allons faire un backup du bootmanager.
Pour cela, créez un dossier à la racine de c:/ (ou autre part si vous le souhaitez). Tapez dans une invite de commande :

mkdir c:\backup

Puis exportez le fichier dans ce dossier de backup

bcdedit /export "C:\Backup"

Vous pourrez bien entendu le réimporter avec le paramètre import :

bcdedit /import "C:\Backup"

Il est éventuellement possible de copier/coller le fichier bootmgr et de le reécraser par la suite, mais ce n'est pas du tout une méthode conseillée par Microsoft. Nous tâcherons donc d'utiliser la méthode « propre ».

II-C - Éditions des entrées du BootManager

Dans cette partie, nous éditerons les entrées, aussi bien les renommer que les supprimer.

La première chose gênante dirons-nous sur le bootmanager, se trouve être la démultiplication des entrées dans le bootmanager. En effet, si comme moi, vous avez l'habitude (le malheur) de réinstaller une deuxième fois (je l'ai fait une dizaine de fois) un second Vista, sur une partition où il y avait déjà un Vista, vous obtiendrez deux entrées dans le BootManager et vous aurez un menu de plus au démarrage pointant vers le même OS.
Notre première étape, qui ne sera pas forcément utile pour vous, consistera à nettoyer le BootManager de ces entrées incorrectes. Nous ferons ceci à l'aide de la commande delete.

bcdedit /delete {id}

// dans mon cas, je tape
bcdedit /delete {125259ae-6fb6-11da-b145-a6f750ea4c73}

Maintenant que nous savons supprimer les entrées inutiles, nous allons les renommer pour qu'elles soient plus compréhensibles.
« Microsoft Windows » pour désigner la partition de Windows Vista, j'ai déjà vu mieux. Je préférerais que cet OS se nomme du nom de la version si par la suite, je devais installer une autre version sur une tierce partition. Je vais pour cela utiliser le paramètre SET et le mot clé DESCRIPTION

bcdedit -set {5189b25c-5558-4bf2-bca4-289b11bd29e2} DESCRIPTION "Windows Vista 5370"

II-D - Définir le système d'exploitation par défaut

Ceci, rien de plus facile, il suffit de mettre la ligne de l'OS en face de la clé « DEFAULT » dans boot.ini. Oui…mais non. Si vous installez un Windows Vista sur un ordinateur contenant Windows XP, le fichier boot.ini sera modifié pour lancer Windows Vista par défaut et le BootManager proposera la même chose.
Mais voilà, si vous modifiez le fichier boot.ini pour lancer XP par défaut, le BootManager continuera de lancer Windows Vista au bout de N secondes. Il nous faut donc remédier à cela.

La commande pour effectuer cela est quasi identique aux précédentes et est de la forme

bcdedit /default {id}

Souhaitant avoir Windows XP comme OS par défaut, je tape donc

bcdedit /default {5189b25c-5558-4bf2-bca4-289b11bd29e2}

J'en profite également pour changer le timeout que je souhaiterai avoir sur 10 secondes

bcdedit /timout 10

Voici maintenant, l'aperçu de mon fichier bootmgr après différentes modifications :

Windows Boot Manager
--------------------
Identifier:             {bootmgr}
Type:                   10100002
Device:                 partition=C:
Description:            Windows Boot Manager
Locale:                 ENG-US
Inherit options:        {emssettings}
{dbgsettings}
Default:                {default}
Display order:          {legacy}
{default}
{125259ae-6fb6-11da-b145-a6f750ea4c73}
{8b3e6862-596d-11da-a5a2-c23a897ad772}
{d2347d7a-4bd4-11da-8917-868242d0bf73}
{0d4d41b2-4b30-11da-be90-f7293e3a6773}
Timeout:                10

Windows Legacy OS Loader
------------------------
Identifier:             {legacy}
Type:                   10300006
Device:                 partition=C:
Path:                   \ntldr
Description:            Legacy (pre-Longhorn) Microsoft Windows Operating System

Windows Boot Loader
-------------------
Identifier:             {default}
Type:                   10200003
Device:                 partition=E:
Path:                   \Windows\system32\winload.exe
Description:            Windows Vista 5370
Locale:                 en-US
Inherit options:        {emssettings}
{dbgsettings}
{5189b25c-5558-4bf2-bca4-289b11bd29e2}
Windows device:         partition=E:
Windows root:           \Windows
No Execute policy:      OptIn

III - Astuces du bootloader

Toutes ces astuces n'ont pas forcément été testées et je ne suis pas responsable des dommages ou effets non désirés qu'elles pourraient avoir sur votre ordinateur. Si vous testez, vous en prenez l'entière responsabilité !

III-A - Supprimer l'ancien bootloader

Supposions que vous ayez installé Windows XP puis Windows Vista. Vous auriez alors le BootManager vous proposant uniquement Windows Vista et le Pre-Legacy menu. Puis, derrière ce dernier, vous auriez le choix entre Windows Vista et Windows XP.
Vous aimeriez alors avoir Windows XP directement dans le BootManager. Pour cela, rien de bien compliqué.

Étape 1 : sur la partition Windows Vista, dans le dossier ..\Windows\System32, copier le fichier winload.exe dans le répertoire ..\Windows\System32 de Windows XP. (il faut 1 winload.exe par système d'exploitation).

Étape 2 : par la solution de votre choix, éditez le fichier boot.ini en rajoutant « /USENEWLOADER » à la fin de la ligne parlant de Windows XP.

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professionnel" /fastdetect /NoExecute=OptIn

devient alors

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professionnel" /fastdetect /NoExecute=OptIn /USENEWLOADER

Note : certains affirment que cette solution marche parfaitement. D'autres parlent de copier un autre fichier de Vista vers Windows (wininet.exe - sans certitude) et d'autres disent que cette solution ne marche pas.

III-B - Supprimer le BootManager

Prenons maintenant le cas suivant dans lequel vous souhaitez ne garder que le bootloader à « l'ancienne » et ne souhaitez plus avoir le double menu.

Sous Windows Vista :
-1- ouvrez une invite de commande ;
-2- placez-vous dans C:/ ;
-3- tapez fixntfs -xp -all puis la touche Entrée ;
-4- rebootez.

Vous devriez avoir un bootloader à l'ancienne.

III-C - Renommer le menu gérant le NTLDR

Pour finir, nous allons nous occuper du menu se chargeant du NT Loader. Le menu qui permet de choisir les systèmes d'exploitation accessibles par le fichier boot.ini. Si vous regardez sa description, vous devriez avoir quelque chose sensiblement égal à ceci :

Windows Legacy OS Loader
------------------------
Identifier: {legacy}
Type: 10300006
Device: partition=C:
Path: \ntldr
Description: Legacy (pre-Longhorn) Microsoft Windows Operating System

Nous allons alors changer sa description pour en obtenir une plus claire. Tapez simplement ceci dans l'invite de commande

bcdedit -set {legacy} DESCRIPTION "Accès à l'ancien menu de boot"

IV - Questions - réponses

Voici quelques petites questions - réponses qui pourraient vous venir à l'esprit en jouant avec le bootmenu.

1- Existe-t-il un outil plus simple et plus intuitif pour éditer le bootmenu de Windows Vista ?
À ma connaissance non. Il est probablement faisable d'en faire un se basant sur bcdedit, mais actuellement, ça reste la solution la plus simple. Et il est fort probable que Microsoft prévoit un utilitaire avec interface pour modifier ce fichier.

2- Peut-on éditer le bootmanager, autrement que sous Windows Vista ?
Oui. Même si le fichier bcdedit.exe n'existe que sous Vista, il est possible de l'appeler depuis un autre OS.

Conclusion

J'espère qu'avec ce petit article, la compréhension du nouveau système de boot vous sera plus accessible et tant que la version finale de Windows Vista n'est pas sortie, on peut s'attendre à une éventuelle modification des outils ou à l'ajout d'une interface plus intuitive.