Update WSL

Introduction

Windows Subsystem for Linux est régulièrement mis à jour par Microsoft. L’intégration des fonctionnalités Linux au sein de Windows augmente au fil du temps.

Pour ceux qui ne saurait pas de quoi je parle n’hésitez pas à faire un tout sur ce lien.

Il est important de maintenir à niveau sa configuration en mettant à jour à la fois WSL lui-même, mais également le ou les systèmes Linux choisis.

Me concernant et pour beaucoup, c’est Ubuntu qui est retenu.

Avec la sortie en avril 2024, de la 24.04, j’ai décidé de faire ce petit article pour décrire la procédure de mise à jour.

En effet, WSL peut se montrer parfois quelque peu récalcitrant et il n’est pas rare de tomber sur des erreurs.

Si vous voulez limiter les risques, attendez toujours 2 à 3 mois après la sortie d’une nouvelle version d’Ubuntu pour vous lancer sur la mise à jour au sein de WSL, le temps de voir arriver quelques correctifs liés à des bugs de jeunesse.

Procédure

La première chose à faire est d’avoir un OS Windows totalement à jour. Un petit tour par Windows Update pour ça et le tour est joué.

Windows Update

Cliquez sur l'image pour l'agrandir.

Ensuite, assurez-vous d’avoir WSL à jour également, pour cela vous pouvez utiliser cette commande (à faire dans un terminal en mode run as administrator):

wsl --update
Update de WSL

Cliquez sur l'image pour l'agrandir.

IL ne faut pas oublier que WSL et l’OS qui s’y exécute doivent être compatibles. Il n’est pas rare de voir un OS Linux récent imposer la prise en charge de certaines fonctionnalités qui ne le sont que dans une version WSL à jour.

Si tout est correct, on peut démarrer l’update d’Ubuntu. On lance son instance et on vérifie sa version actuelle avec la commande:

lsb_release -a
Controle de la version de Ubuntu

Cliquez sur l'image pour l'agrandir.

Dans mon exemple on part d’une version 22.04, en l’occurrence une version LTS (Long-term support).

Pour info, les versions d’Ubuntu sortent selon le calendrier suivant:

  • Une version LTS tous les 2 ans, généralement au mois d’avril. Ces versions bénéficient d’un support par défaut de 5 ans. Il s’agit de version conseillée pour de la production, très stable, mais ne disposant pas forcément des dernières versions des paquets.
  • Une version normale tous les 6 mois avec un support par défaut de 9 mois. Disposant des applications les plus récentes, ces versions peuvent néanmoins être moins stables.

Il est souvent conseillé de rester sur la même branche, et d’attendre une nouvelle version LTS pour passer à la suivante sans basculer entre temps sur une version normale. Mais il reste tout à faire possible de passer d’une LTS à une normale et inversement si l’écart de version n’est pas trop important (et toujours vers le haut).

La première chose à faire est de mettre à jour tous les paquets dans sa version actuelle avec les commandes:

sudo apt update
apt update

Cliquez sur l'image pour l'agrandir.

sudo apt upgrade
apt upgrade

Cliquez sur l'image pour l'agrandir.

Une fois l’opération réalisée, il faut s’assurer du support de systemd dans WSL. À l’origine le gestionnaire de service n’était pas supporté et son intégration est arrivée sous WSL2 en septembre 2022..

Pour les dernières release d’Ubuntu, c’est obligatoire d’activer sa prise en charge sans quoi vous risquez une erreur lors de l’upgrade.

Pour cela, au sein de votre distribution WSL directement, il faut éditez (ou créer) le fichier /etc/wsl.conf pour lui ajouter le contenu:

[boot]
systemd=true
Ajout du support de systemd

Cliquez sur l'image pour l'agrandir.

On peut ensuite quitter son instance WSL, s’assurer qu’elle soit bien terminée avec la commande (à faire dans un terminal en mode run as administrator):

wsl --shutdown
Arret de l'instance WSL

Cliquez sur l'image pour l'agrandir.

Puis on peut relancer sa distribution. Il se peut qu’elle soit un peu plus lente au démarrage.

On peut vérifier le support de systemd avec la commande: systemctl list-unit-files --type=service

Listing des services avec systemd

Cliquez sur l'image pour l'agrandir.

Si tout est OK, on peut poursuivre avec l’édition du fichier /etc/update-manager/release-upgrades.

C’est dans ce fichier qu’on pourra indiquer la branche de recherche d’une nouvelle version d’Ubuntu.

Bizarrement, j’ai dû choisir "normal" pour que le système me propose la 24.04. Le mieux est d’essayer l’option "normal" et "lts" pour voir si une version est proposée ou non lors de la commande d’upgrade.

Configuration de la branche d'upgrade

Cliquez sur l'image pour l'agrandir.

La commande d’upgrade justement, est simplement:

sudo do-release-upgrade
Lancement de l'upgrade de Ubuntu

Cliquez sur l'image pour l'agrandir.

Si une version est trouvée, elle vous est proposée et il ne vous reste plus qu’à valider….et attendre la fin de l’opération.

Si tout va bien au bout de quelques minutes, vous pouvez relancer votre instance WSL et vérifier la version de l’OS utilisé toujours avec la commande:

lsb_release -a
Controle de la version de Ubuntu

Cliquez sur l'image pour l'agrandir.

Effet de bord (ansible/vmware)

Attention, pour Ubuntu, le passage d’une version à une autre peut entrainer des incompatibilités avec des outils ou librairies déjà en place avant l’upgrade.

Comme vous pourrez le lire dans cet article, j’utilise Ansible sous WSL et j’ai configuré ce dernier pour qu’il puisse interroger une instance vCenter en guise d’inventaire.

Avec le passage en Ubuntu 24.04 c’est Python 3.12 qui est utilisé. Or celui-ci rend le module python3-pyvmomi, disponible dans le repo par défaut de l’OS, non fonctionnel. Malheureusement ce module est nécessaire à Ansible pour interagir avec VMware.

Il faut donc le désinstaller et basculer sur la version pip.

sudo apt remove python3-pyvmomi

Dans les dernières release d’Ubuntu, l’usage de pip pour installer une librairie python vous est déconseillé, car Ubuntu préconise d’utiliser les librairies packagées dans le repo de l’OS.

Il vous est néanmoins possible d’outrepasser cet avertissement avec l’option: –break-system-packages

pip install --upgrade pyvmomi --break-system-packages
Installation des librairies vSphere python

Cliquez sur l'image pour l'agrandir.

Ce n’est pas peut être pas l’idéal, ni à utiliser pour tout vos besoins, mais en l’occurrence ici et au moment de la rédaction de cet article, c’est la seule solution pour avoir la dernière version de la librairie pyvmomi dans laquelle Python 3.12 est supporté.

Peut-être qu’un jour le paquet disponible sera mis à jour et il sera à nouveau possible de l’utiliser, mais en attendant, cela permet de faire fonctionner Ansible avec VMware.

Il ne faut pas oublier aussi d’installer la librairie vsphere-automation-sdk-python, elle aussi à partir de pip avec la commande:

pip3 install --upgrade git+https://github.com/vmware/vsphere-automation-sdk-python.git --break-system-packages
Installation des librairies vSphere python

Cliquez sur l'image pour l'agrandir.

Conclusion

N’hésitez pas à maintenir votre configuration WSL à jour. Ce n’est pas la peine de se précipiter sur chaque nouvelle sortie, mais après quelques mois, il est toujours intéressant de basculer sur les dernières versions d’OS disponibles.

N’oubliez pas cependant que vous vous exposez à quelques casses qu’il vous faudra rétablir avec un peu d’huile de coude. Pour ceux qui seraient frileux à l’idée de rencontrer des dysfonctionnements, sachez qu’il vous est toujours possible d’installer plusieurs instances d’un même OS sous WSL.

Dans mon exemple, j’aurais très bien pu conserver ma version d’Ubuntu en 20.04 et déployer une autre instance en 22.04. J’aurai eu le choix à ce moment de lancer l’une ou l’autre des distributions.

Mais j’aurai eu à reproduire toute ma configuration vers la nouvelle instance. C’est une question de choix, les deux stratégies sont possibles. L’important est de ne pas laisser votre ou vos OS déployés dans WSL devenir obsolètes.