Windows Subsystem Linux

Activer le sous-système Windows pour Linux

Cet article a été réactualisé il y a 3 ans jours. Il n'est pas nécessairement obsolète, mais gardez son ancienneté en tête lors de sa lecture.

Faire du développement web quand on est sous Windows, c’est faire des aller / retour entre son environnement de développement sous Windows et des environnements GNU-linux. Pas tout le temps si simple.

Etat des lieux avant de me lancer

Pour avoir un interopérabilité entre Windows et GNU linux, franchement j’y ai perdu mon latin en installant mingw pour git, putty pour le ssh, pour me rendre compte que je n’avais pas besoin de Putty si j’avais mingw, et puis il y a aussi cgwin, bref … même si tout fonctionne, j’ai sûrement chargé la mule. J’ai tout un tas d’émulation de console compatible GNU/linux, il était temps de faire le ménage !

Interopérabilité de systèmes

Pas fan des VM, pas au fait de l’utilisation des Dockers, …  (tant de choses à apprendre !),  j’ai choisi de mettre en place un dual boot Windows / Ubuntu. Mais ça ne règle pas tout. Même en montant un disque de données utilisables depuis les deux OS, il y a le problème des logiciels sous licence achetés pour Windows, et puis d’autres logiciels avec lesquels j’ai mes habitudes mais pas compatibles sous linux …

Je lorgne sur MacOS, ça viendra un jour mais quand j’aurai des pépètes !

Quoiqu’il en soit, Microsoft depuis quelques temps sous win10 nous permet de nous faciliter la vie en ajoutant une couche de compatibilité entre les deux systèmes : OUF ! Merci ! C’est resté pas mal de temps en Beta, mais apparemment, ça fonctionne très bien à l’heure où j’écris ces lignes.

Du coup je me lance ! Ça ne coûte rien (juste du temps !)

Comment on active ce fameux WSL ?

Tout est déjà dans la Doc Microsoft, comme j’utilise Ubuntu en Dual Boot, je farfouille pas mal du côté de leur doc aussi et il y a un tuto pour mettre en route WSL avec Ubuntu.

Mais bon, je me fais quand même ma récap’ ici !

Prérequis

On doit avoir une version de Build égale ou supérieure à la 16215 et un Windows 10 en 64 bits.

Vérifier sa version: aller dans Paramètres > Système > Informations système
et consultez ses spécifications de Windows.

Ou encore plus simplement taper une recherche « winver » dans la barre de tâche en bas d’écran, ça ouvre une petite fenêtre affichant la version de son Windows.

Installer WSL 2 possibilités

  • Soit en ligne de commande : Ouvrir PowerShell en tant qu’administrateur et lancer :
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Soit en passant par la recherche en tapant « fonctionnalités », et dans les résultats de recherche choisir « Activer ou désactiver des fonctionnalités windows » puis cocher Sous-système Windows pour Linux
    Activer le sous-système Windows pour Linux

Redémarrer le PC

Ok !

Choisir une distribution linux

Aller dans le Windows Store, taper linux dans la recherche. Choisir la distribution de votre choix. Pour ma part j’ai pris Ubuntu.

Installer la distribution choisie

Installer Ubuntu WSL

Le chargement est assez rapide. L’épingler au menu démarrer pour y avoir rapidement accès.

Lancer Ubuntu

Bon, on clique sur l’épingle !  Une console s’ouvre, il va falloir renseigner un nom d’utilisateur et un mot de passe pour le système unix. Bien les garder sous le coude (dans son gestionnaire de mot de passe) on en aura toujours besoin plus tard, ce n’est pas qu’une formalité.

installation ubuntu sous win10

Utiliser Bash sur son système Windows

On bénéficie maintenant des commandes shell bash sur le système. Plusieurs façons d’accéder possibles :

  • Via la nouvelle console bash Ubuntu. Les disques Windows sur lesquels on travaille habituellement sont montés sur /mnt et donc accessibles à ce niveau. On peut voir dans l’image ci-dessous des disques c et d. Pour voir les disques montés, on peut taper juste mount dans la console.
    Point de montage de windows sous Ubuntu

    Bon entre temps j’ai changé la couleur de fond, bleu sur bleu c’est pas franchement lisible ! On voit donc ci dessous 2 disques montés c et f (j’ai fait une modif de nom de disque entre temps en ajoutant un ssd)
    Disques montés sur subsystem linux pour win10
  • Via l’invite de commande cmd.exe, ou le Powershell et en tapant bash ou wsl :
    • Si vous l’ouvrez en tant que user vous serez sur la partie /mnt/c/Users/nomuser
    • Si vous l’ouvrez en tant qu’administrateur vous serez sur la partie /mnt/c/Windows/System32

Pour faire des manipulations dans les disques Windows, il faudra faire précéder les commandes par sudo pour avoir les droits nécessaires aux actions à mener. On rentrera son mot de passe UNIX renseigné lors de l’installation d’Ubuntu : celui que vous avez enregistré dans votre gestionnaire de mot de passe 😉

Déjà, première chose avant d’utiliser ce nouveau shell : on va mettre à jour la liste des paquets disponibles.

sudo apt-get update

Cette commande n’installe pas de nouvelle version de logiciels mais re-synchronise l’index des fichiers présents sur son système avec ceux disponibles dans les dépôts auxquels on a accès. Les index des paquets disponibles sont récupérés à partir des emplacements spécifiés dans /etc/apt/sources.list. Une mise à jour de cette liste doit toujours être effectuée avant une installation de nouveaux paquets ou une mise à jour de ceux déjà présents. https://doc.ubuntu-fr.org/sources.list

Régulièrement plus tard, il faudra donc penser à mettre à jour ses paquets avec la commande :

sudo apt-get upgrade

Cette commande récupérera les dernières versions des paquets existant sur la machine à partir des sources énumérées dans /etc/apt/sources.list  Cette commande doit donc toujours être précédée d’un apt-get update.

A faire et à ne pas faire !

On peut depuis Ubuntu

On peut accéder depuis Ubuntu à ses disques sous Windows.

On peut modifier, créer des répertoires et fichiers dans Windows.

On met à disposition via sa distribution Linux des packages, fonctionnalités dont on pourra bénéficier sous Windows.

On ne peut pas depuis Windows

Par contre on ne « peut » pas, en fait c’est plutôt qu’on ne doit pas, créer ou modifier des fichiers Linux depuis Windows.

Cela entrainerait très probablement une corruption des données et / ou endommagerait l’environnement Linux ce qui obligerait à désinstaller et réinstaller sa distribution !

Les systèmes de fichiers Windows et Linux sont différents, Windows ne sait pas gérer les fichiers Linux.

Pour info les fichiers Linux sous Windows on peut les trouver sous un chemin ressemblant à ça : C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs  Mais pas touche !!!

Rendre ce sous sytème linux opérationnel pour du développement Web

Bon voilà, on a notre shell bash à disposition, c’est déjà une bonne chose, mais ce n’est pas suffisant.

Pour développer des applications en PHP on va avoir besoin d’un serveur web de développement, donc Apache, avec ses acolytes mysql et PHP. Si on crée des sites sous Jekyll, on va avoir aussi besoin de l’installer avec Ruby au préalable. Si on versionne on a besoin de Git etc …

Ok c’est vrai, tout ça on l’avait sur son Windows, sauf que dans le sous sytème linux, ça n’est pas présent donc pas utilisable en console bash. Bref, il va falloir configurer tout ça.

Ça implique du coup de revoir son Workflow pour ne plus avoir de doublon et adapter les choses à cette nouvelle façon de procéder. Mais bon, c’est du plus, en attendant, rien n’empêche de continuer à utiliser ses anciens outils ! Et de faire le ménage tranquillement.