Si le Windows Subsystem for Linux (WSL) a été implémenté pour la première fois sur Windows 10 avec la mise à jour anniversaire et est toujours en version bêta, Microsoft continue de l’améliorer en proposant par exemple de nouvelles fonctionnalités. La dernière build de WSL s’accompagne du support d’Ubuntu 16.04, qui vient donc remplacer Ubuntu 14.04 sur les nouvelles installations sur Bash.
Cette build apporte également une interopérabilité entre Windows et WSL étant donné que les utilisateurs peuvent lancer des binaires Windows directement depuis une commande prompt WSL. « Dans un sens large, l'interopérabilité est la capacité à mélanger et assortir les binaires NT et Linux à partir du même shell. Par exemple, en utilisant bash.exe pour naviguer dans votre système de fichiers et lancer un éditeur graphique de texte NT depuis le répertoire. Un autre aspect est la possibilité pour les binaires NT et Linux de rediriger leur entrées et sorties ».
Source : blog Microsoft (interopérabilité), blog Microsoft (annonce build 14951 pour mobiles et PC)
En préambule de l’édition 2016 de la conférence Build, Kevin Gallo, corporate vice president for Microsoft’s Windows and Devices Group, a annoncé que « le shell Bash débarque sur Windows. Oui le vrai Bash arrive sur Windows », annonce qui a été saluée par une ovation de la salle.
Il faut rappeler que Bash (l’acronyme de Bourne Again Shell) est un interpréteur de ligne de commande de type script et le shell Unix du projet GNU. Ses opérations fondamentales sont semblables à celles de tous les interpréteurs de ligne de commande :
- il fournit une liste de commandes permettant d'opérer sur l'ordinateur (lancement de programmes, copie de fichiers, etc.) ;
- il permet de regrouper ces commandes dans un fichier unique appelé script ;
- il vérifie la ligne de commande lors de son exécution ou lors d'une éventuelle procédure de vérification et renvoie un message d'erreur en cas d'erreur de syntaxe ;
- en cas de validation, chaque ligne de commande est interprétée, c'est-à-dire traduite dans un langage compréhensible par le système d'exploitation, qui l'exécute alors.
« Ce n'est pas une compilation croisée, ce n'est pas une machine virtuelle, c’est natif », a-t-il précisé. « Nous avons développé un partenariat avec Canonical pour apporter cette grande expérience, et vous serez en mesure de le télécharger depuis le Windows Store c'est le vrai, le véritable Bash sur Windows 10 ».
Comme Microsoft l'a expliqué, l'opération a été réalisée en partenariat avec Canonical, la société qui est le sponsor officiel de la distribution Ubuntu (dont elle assure le support technique et la certification), et passe par la création d'un sous-système dédié (Windows Subsystem for Linux) capable d'exécuter des binaires Linux. WSL a été silencieusement embarqué dans la build 14251 de Windows 10. À ce propos, Microsoft avait expliqué que « nous avons conçu une nouvelle infrastructure dans Windows, WSL, sur laquelle nous avons exécuté un véritable mode image utilisateur Ubuntu fourni par nos partenaires Canonical, créateurs d’Ubuntu Linux. La résultante est qu’il vous est désormais possible d’exécuter du Bash natif Ubuntu sur Windows ».
Du côté de Canonical, c’est Dustin Kirkland qui va venir rappeler qu’il ne s’agit pas là d’une variante Cygwin, le projet par lequel il a été porté sur Windows. « Une équipe de développeurs pointus chez Microsoft a travaillé dur pour adapter une technologie de Microsoft Research pour effectuer essentiellement la traduction en temps réel de Linux syscalls en syscalls Windows. Les geeks Linux peuvent penser à cela comme étant l'inverse de "WINE" - des binaires Ubuntu qui s’exécutent en mode natif sur Windows. Microsoft l’appelle un "sous-système Windows pour Linux" ».
Quant à savoir ce qui peut avoir motivé Microsoft à le faire, Kirkland a déclaré « développeurs, développeurs, développeurs. Microsoft reconnaît que si les développeurs de nos jours pouvaient se servir de Windows ou Mac (voire Ubuntu) sur leur desktop, inévitablement plusieurs d’entre eux vont finir par passer beaucoup de leur temps dans un shell Linux. Avant cette nouvelle fonctionnalité de Windows 10, les utilisateurs Windows avaient besoin d'exécuter une machine virtuelle (gourmande en ressources), un ssh à une instance de cloud (nécessite une connexion), ou bidouiller avec Cygwin (ce qui s’avère lent). Avec cette nouvelle fonctionnalité, un utilisateur de Windows appuie simplement sur le menu Démarrer et tape "bash" ou "ubuntu". Il sera alors dirigé vers un shell Ubuntu riche, qui va s’exécuter nativement et sans virtualisation ou recompilation ».
Et de poursuivre : « c’est une décision presque surréaliste de la part de Microsoft sur l'importance de l'open source pour les développeurs. Il s’agit là d’une opportunité fantastique d’incorporer la technologie libre et open source directement dans un desktop Windows 10 sur la planète. Et quel vecteur merveilleux dans l'apprentissage et l'utilisation que de faire usage de plus d’Ubuntu et de Linux dans les clouds ​​publics ».
Mike Harsh de chez Microsoft a quand même tenu à apporter quelques éléments de précision :
- tout d’abord, c’est la première fois que cet outil est proposé (et est catégorisé « bêta » pour cette raison) : nous savons qu’il y aura des choses qui ne fonctionneront pas comme vous vous y attendiez. N’espérez pas voir des scripts Bash qui vont fonctionner à la perfection. Mais essayer cette fonctionnalité nous permet de savoir ce sur quoi nous avons besoin de travailler afin de l’améliorer ;
- ensuite, bien que vous serez en mesure d’exécuter du Bash en natif ainsi que plusieurs lignes de commande Linux sur Windows, il est important de garder à l’esprit que c’est une boîte à outils développeurs qui a été pensée pour vous aider à écrire et concevoir vos codes pour vos scénarios et plateformes. Il ne s’agit pas là d’une plateforme serveur sur laquelle vous pourrez héberger vos sites, exécuter des infrastructures serveur, etc. ;
- enfin, rappelez-vous que Bash et les outils Linux ne peuvent pas interagir avec les applications et outils Windows. Alors vous ne serez pas en mesure de lancer Notepad depuis Bash ou de lancer Ruby sur Bash depuis PowerShell.
Source : vidéo de présentation, blog Dustin Kirkland, blog Mike Harsh