Ce billet fait suite aux informations que j'ai confiées à Vincent Hermann de PCInpact et dont il a rédigé un article. Ce billet est destiné à la développer.

Virtual machines (VMs) become key platform components for data centers and Microsoft products such as Win8, System Center, and Azure

Sur le site du Microsoft Research on apprend que la virtualisation devrait être un des composants clés de Windows 8. C'est que semble confirmer Bernard Ourghanlian, directeur technique et sécurité de Microsoft France, interviewé sur le site itrmanager en mars 2009. La version 3 d'Hyper-V serait désormais prévue fonctionner sur les postes de travail et uniquement sur Windows 8.

Avec Hyper-V V3, l'objectif est de supporter les postes de travail ce qui implique qu'il repose sur un noyau de Windows qui soit un noyau totalement dégraissé. On a démarré il y déjà maintenant à peu près 3 ans un projet extrêmement long et complexe, un projet qui s'appelle MinWin, dont l'objectif est de permettre de « modulariser » complètement le noyau de Windows. Ce projet a démarré avec Vista, il continue avec Windows 7. L'achèvement de MinWin c'est la possibilité de faire deux choses fondamentales : pouvoir débrayer complètement Internet Explorer et pouvoir complètement débrayer le Shell, sont des choses qui ne sont pas encore faisables parce que ces deux éléments sont encore trop imbriqués dans le noyau de Windows. L'objectif fixé avec MinWin, quand il arrivera avec Windows 8 si tout se passe bien, c'est de pouvoir complètement débrayer ces fonctionnalités c'est-à-dire faire en sorte que potentiellement ils ne soient pas présents du tout. A ce moment là, cela permettra d'avoir, pour le poste de travail, l'équivalent d'un Windows Server Core ... dans le cas de Hyper-V V3 sur le poste de travail qu'il soit le plus petit possible, aussi bien en termes de surface d'attaque potentielle, qu'en termes d'encombrement mémoire et d'encombrement disque.

Bernard Ourghanlian nous explique ici que l'une des conditions pour intégrer Hyper-V V3 dans Windows 8 est la modularisation du core OS, connu sous le nom de MinWin. MinWin que j'ai déjà abordé à plusieurs reprises dans le dossier de Windows 7 est un projet destiné à réduire le système de base à une brique minimale qui soit en mesure de fonctionner de manière autonome. Il ne contient pas uniquement le noyau mais plusieurs autres composants système primordiaux qui gravitent autour. MinWin est déjà utilisé dans Windows 7. Sa taille sur le disque dur est estimée à 25Mo et 40Mo en mémoire. Il ne contient pas de sous-système graphique ou de pile audio. En comparaison le Server Core de Windows Server 2008 occupe environ 1Go et a besoin de la totalité du code Windows pour compiler. Le travail effectué sur MinWin concerne essentiellement les dépendances. Bernard Ourghanlian décrit le Core OS comme "un gros plat de nouilles". Normalement une couche N dépend d'une couche N-1 mais ne doit pas dépendre d'une couche N+1. Or, on se retrouvait avec des dépendances circulaires: le travail sur Vista puis Windows 7 a consisté à démèler ces dépendances. Le travail sur les dépendances devrait permettre d'après Bernard Ourghanlian de supprimer les dépendances d'Internet Explorer dans le Core OS. IE9 pourrait de ce fait devenir réellement optionnel dans Windows 8.

Virtualisation architecture

Windows 8 devrait être la dernière étape. Microsoft devrait placer MinWin dans une partition (machine virtuelle) parente. Toutes les couches supérieures pourraient s'intégrer dans des machines virtuelles. MinWin étant autonome et relativement petit la surface d'attaque du système se retrouverait fortement réduite. L'hyperviseur est le composant critique de l'architecture. Il a été conçu comme un micro noyau ce qui signifie qu'il ne contient aucun driver. Les drivers résident dans la partition parente. Selon Bernard Ourghanlian il compterait juste 50000 lignes de code. Le code a été prouvé mathématiquement par le Microsoft Research et l'université de Sarrebruck en Allemagne. Pour éviter les attaques sur l'hyperviseur comme les hyper rootkits, des puces TPM (Trusted Platform Module) pourraient être utilisées pour sécuriser le démarrage du système.

Le but d'une telle architecture est de pouvoir séparer le système des applications et donc de pouvoir gérer complètement la compatibilité des applications lors du passage d'une version Windows à une autre. Dans mon billet précédent j'évoquais la possibilité d'un remplacement prochain de la GDI (composant graphique pour les applications Windows) par Direct2D et DirectWrite. La GDI existe depuis Windows 1 et elle est de ce fait profondément ancrée au coeur du système. Le fait que MinWin n'intègre pas de sous-système graphique confirme la réécriture de la GDI avec d'autres composants système récents qui ont été bien conçus du départ.

L'autre aspect abordé est une intégration App-V Like. L'utilisateur lancerait une application mais en interne cette dernière pourrait s'exécuter dans une machine virtuelle si elle n'a pas été conçue pour Windows 8. Il devrait être nécessaire que l'application indique pour quel OS elle est conçue. Bernard Ourghanlian parle d'un manifeste XML dans l'application. En fait cette fonctionnalité a été introduite dans Windows 7. Voir le dossier . Il est possible de spécifier dans le manifeste XML de l'application un GUID qui est un numéro unique assigné par Microsoft pour chaque nouvelle version de Windows.

Bernard Ourghanlian évoque l'importance de pouvoir gérer un minimum de machines virtuellles et de pouvoir les garder à jour. Des protocoles ont été créés afin de pouvoir modifier les images VHD lorsque la machine virtuelle est déconnectée en recopiant que ce qui est nécessaire. Stephen Chapman sur son blog avait justement déniché une offre d'emploi pour travailler dans l'équipe de Windows Update.

We just finished up work on Windows 7, and are pushing forth on Windows 8 planning and preparation. There are opportunities to work on a number of hard problems, including third-party application updating, updating virtual machines while they’re turned off (turns out this is pretty hard!), and delivering full applications, among others. To help us charge full steam on these fronts, we are looking for skilled and passionate software engineers. As part of this team, you will help shape Windows 8. Components of our code include a core agent that runs as an NT service, an API layer and a UI application. We talk to the update servers using web services and we have special protocols in place to deal with the massive scale of the system.

Pour Windows 8, Windows Update devrait être capable de pouvoir mettre à jour les applications des éditeurs tiers, ce qui correspond aux documents leakés dont la presse a fait récemment état. Mais Windows Update serait aussi capable de mettre à jour des machines virtuelles en déconnecté: si Microsoft a bien l'intention d'isoler les applications du système, Windows Update devrait en effet en être capable.

Dans la troisième partie de l'interview est évoquée la possibilité d'un déploiement web d'applications sous forme de conteneurs App-V . Pour les scénarios d'applications à usage temporaire par exemple, on pourrait tester une application sans devoir l'installer et la désinstaller.

Bernard Ourghanlian évoque Live Mesh en expliquant que tous les produits Microsoft vont devoir devenir "Live Mesh Aware". Ceci a commencé à se vérifier récemment avec Windows Live Messenger. L'App Store de Windows 8 aurait de même une fonctionnalité de synchronisation distante des paramètres des applications.

Selon Bernard Ourghanlian, les problématiques de déploiement et de gestion du poste de travail constituent aujourd'hui une véritable calamité et ce serait une des raisons pour lesquelles beaucoup d'entreprises s'orientent vers les clients web.

Cela ne dépend pas du navigateur, ce n'est pas un problème de performances. Je parle uniquement de la vitesse de développement de n'importe quel développeur qui travaille en Javascript. On ne va quand même pas revenir à des langages de script antédiluviens comme Javascript...

Il critique la mauvaise productivité des développeurs travaillant sur des technologies fondées sur le javascript et la responsabilité de Microsoft dans cet état de fait. L'interview finit sur ces quelques lignes:

Il faut repenser la productivité du développement logiciel et cela ne va certainement pas dans le sens de la massification de l'utilisation des langages de script d'assez bas niveau. Il faut « simplement » que l'informatique et le développement passent de l'artisanat à l'ère industrielle ; en bref, que l'informatique fasse enfin ce que l'industrie lourde a réalisé à la fin du 19ème siècle... Sa révolution...

Sources:

interview Bernard Ourghanlian Partie 1

interview Bernard Ourghanlian Partie 2

interview Bernard Ourghanlian Partie 3

Dossier Windows 7

MSR

msftkitchen