La vie secrète de WindowsLe paradoxe du système de fichiers

Raymond Chen

Si vous examinez votre disque dur, vous remarquerez probablement qu'un grand nombre de fichiers du système d'exploitation sont stockés dans le répertoire racine du lecteur de démarrage. Si vous regardez de plus près ces fichiers, vous verrez peut-être un thème : boot.ini, NTLDR et NTDETECT.COM sont des fichiers de démarrage critique et hiberfil.sys est le fichier de mise en veille prolongée. Ce sont tous des fichiers qui sont utilisés lors des premières étapes cruciales de démarrage du système d'exploitation ou, dans le cas de hiberfil.sys, de la reprise après une mise en veille prolongée, et qui doivent être placés à la racine du lecteur de démarrage. Pourquoi ne peut-on pas les placer ailleurs ?

Mon collègue Adrian Oney a fourni l'explication suivante : Pour pouvoir lire les fichiers de démarrage du disque, il vous faut un pilote du système de fichiers ; toutefois, celui-ci se trouve sur le disque, que vous ne pouvez pas lire tant que vous n'avez pas chargé le pilote du système de fichiers. Situation inextricable si l'en est !

C'est pour rompre ce cercle vicieux qu'un pilote du système de fichiers miniature est intégré aux fichiers de démarrage importants. Ce pilote miniature en sait juste assez pour localiser les fichiers dans le répertoire racine et les charger dans la mémoire. Ces fichiers font alors démarrer le système d'exploitation, et le vrai pilote du système de fichiers peut prendre le relais et rechercher des fichiers dans des endroits beaucoup plus sophistiqués tels que les sous-répertoires.

  

La mise en veille prolongée suit un schéma similaire. La mise en veille prolongée du système d'exploitation consiste à vider le contenu entier de la mémoire dans le fichier de mise en veille prolongée ; sa restauration nécessite de remettre ce fichier en mémoire et de faire comme si rien ne s'était passé. Encore une fois, c'est le problème de l'œuf ou la poule : Pour charger le fichier de mise en veille prolongée, vous avez besoin du pilote du système de fichiers, qui se situe dans le fichier de mise en veille prolongée. Si vous laissez le fichier de mise en veille prolongée dans le répertoire racine du lecteur de démarrage, le pilote du système de fichiers miniature peut être utilisé.

Si vous utilisiez les premières versions de MS-DOS®, vous devez connaître cette contrainte sur l'emplacement des fichiers de démarrage du système d'exploitation. L'ancienne commande SYS permettait de transformer une bête disquette en disquette de démarrage. Cependant, si vous l'exécutiez sur une disquette qui contenait déjà des données, il était probable que la conversion échouait car les premières versions de MS-DOS nécessitaient que les fichiers de démarrage se situent à des emplacements spécifiques sur la disquette pour que le secteur d'amorçage puisse les trouver. Les versions ultérieures de MS-DOS ont assoupli ces exigences en améliorant le chargeur de démarrage. Cependant, même avec la version améliorée, les fichiers système doivent toujours résider dans le répertoire racine.

Un jour, un client nous a demandé, « Puis-je placer le fichier de mise en veille prolongée dans un sous-répertoire » ? Après tout, pourquoi l'emplacement du fichier a-t-il tant d'importance ? Les ACL sur le fichier sont les mêmes, quel que soit son emplacement. Cet utilisateur voulait le placer sur un lecteur autre que le lecteur de démarrage et on lui avait indiqué que c'était impossible. Il ne voyait pas vraiment la raison de cette restriction et a donc tenté le tout pour le tout : si je peux au moins le déplacer vers un sous-répertoire, je pourrai ensuite créer un répertoire et en faire une jonction qui pointera vers l'emplacement où je souhaite placer le fichier de mise en veille prolongée. Ça y est : j'ai réussi à déplacer le fichier de mise en veille prolongée !

Bien sûr, le pilote du système de fichiers miniature ne comprend pas les points de montage, car les points de montage nécessitent de communiquer avec le service de gestion de disque, et au moment où le système démarre, l'ordinateur n'a même pas chargé le système d'exploitation, sans parler d'un service avancé qui sait mapper les lettres de lecteur sur les chemins ARC ! Et même si vous réussissiez à mettre ce service en exécution, vous devriez rechercher les pilotes des autres disques durs et charger les pilotes de système de fichiers correspondants.

Ce n'est qu'une question de temps avant qu'un utilisateur demande comment mettre le fichier de mise en veille prolongée sur une jonction DFS.

Raymond Chen, The Old New Thing, et son livre du même titre (Addison-Wesley, 2007) traitent de l’historique de Windows et de la programmation Win32. Son nom Web 2.0 est Raymond ou bien Chenster.

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