Microsoft révèle le fonctionnement de son sous-système Windows 10 sous Windows 10

Vidéo: Sous système Windows pour Linux : Kali Linux fait fort ! 2024

Vidéo: Sous système Windows pour Linux : Kali Linux fait fort ! 2024
Anonim

Bash sur Ubuntu sous Windows permet aux binaires Linux ELF64 natifs de s'exécuter sous Windows via le sous-système Windows pour Linux (WSL). Bien que de nombreuses personnes aient été choquées par l'annonce de Bash on Ubuntu, il convient de mentionner qu'elle ouvre de nouvelles portes pour la compatibilité entre différents systèmes d'exploitation. Microsoft fait un autre pas en avant et révèle le fonctionnement de son WSL afin de mieux comprendre comment les deux systèmes communiquent.

WSL a été créé par l’équipe du noyau Microsoft Windows et contient des composants en mode utilisateur et en mode noyau. Plus spécifiquement, le système est composé de:

  • un service de gestionnaire de session en mode utilisateur gérant le cycle de vie de l'instance Linux
  • Pilotes du fournisseur Pico (lxss.sys, lxcore.sys) dont le rôle est d’émuler un noyau Linux en traduisant les appels système Linux
  • Les processus Pico hébergeant le mode utilisateur non modifié Linux (par exemple, / bin / bash).

La connexion entre les trois composants est décrite comme suit:

C'est l'espace entre les fichiers binaires Linux en mode utilisateur et les composants du noyau Windows où la magie opère. En plaçant des fichiers binaires Linux non modifiés dans les processus Pico, nous permettons aux appels système Linux d'être dirigés vers le noyau Windows. Les pilotes lxss.sys et lxcore.sys traduisent les appels système Linux en API NT et émulent le noyau Linux.

Le principal défi consiste à faire fonctionner les deux systèmes ensemble:

WSL exécute des fichiers binaires Linux ELF64 non modifiés en virtualisant une interface de noyau Linux au-dessus du noyau Windows NT. L'une des interfaces du noyau qu'il expose sont les appels système (appels système). Un appel système est un service fourni par le noyau qui peut être appelé en mode utilisateur. Les noyaux Linux et Windows NT exposent tous les deux plusieurs centaines d'appels système au mode utilisateur, mais ils ont une sémantique différente et ne sont généralement pas directement compatibles. Par exemple, le noyau Linux inclut des éléments tels que fork, open et kill, alors que le noyau Windows NT possède les comparaisons NtCreateProcess, NtOpenFile et NtTerminateProcess.

Le sous-système Windows pour Linux inclut des pilotes en mode noyau (lxss.sys et lxcore.sys) chargés de gérer les demandes d’appel système Linux en coordination avec le noyau Windows NT. Les pilotes ne contiennent pas de code du noyau Linux, mais constituent plutôt une implémentation en salle blanche des interfaces de noyau compatibles avec Linux. Sous Linux natif, lorsqu'un appel système est créé à partir d'un exécutable en mode utilisateur, il est géré par le noyau Linux. Sur WSL, lorsqu'un appel système est effectué à partir du même exécutable, le noyau Windows NT transmet la demande à lxcore.sys. Dans la mesure du possible, lxcore.sys traduit l'appel système Linux en un appel équivalent à Windows NT, qui à son tour résout le problème.

Tenant compte de l'intérêt de Microsoft pour les plates-formes open source, de nombreuses personnes se sont demandé si le géant de la technologie devrait acquérir de grandes entreprises axées sur Linux, telles que Canonical, la société à l'origine du système d'exploitation Ubuntu. Bien que Microsoft et Canonical aient coopéré sur des logiciels à code source ouvert, aucun d’eux n’a commenté cette possibilité.

Si vous êtes intéressé par l'évolution de l'interaction Linux - Windows, rendez-vous sur le blog de Microsoft. L'équipe a promis que d'autres articles de blog sur ce sujet suivraient.

Microsoft révèle le fonctionnement de son sous-système Windows 10 sous Windows 10