Windows 11 : WSL prend en charge systemd pour les distributions Linux !
Désormais, la fonctionnalité Windows Subsystem for Linux prend en charge systemd grâce aux travaux effectués par Microsoft et Canonical, l'éditeur de la distribution Ubuntu. Cela ouvre la porte à l'installation de paquets supplémentaires !
Pour rappel, Windows Subsystem for Linux dit "WSL" est une fonctionnalité disponible depuis Windows 10 qui permet d'utiliser Linux depuis Windows sans créer de machines virtuelles (bien que la version 2 s'appuie sur des composants d'Hyper-V).
Quant à systemd, c'est un composant essentiel que l'on retrouve sur de nombreuses distributions Linux. Il sert notamment à gérer le démarrage des services au lancement du système : très utile pour faire tourner automatiquement des services/démons.
Systemd lui-même est lancé au démarrage de Linux, puis il gère le lancement des processus correspondants aux services à démarrer automatiquement. Ce qui nécessite de revoir un peu le fonctionnement au sein de WSL. Dans l'annonce officielle, Craig Loewen de Microsoft, précise "Étant donné que le processus WSL init est chargé de fournir l'infrastructure de communication entre les composants Linux et Windows, la modification de cette hiérarchie a nécessité de repenser certaines des hypothèses faites avec le processus WSL init." - En effet, le processus WSL init va devenir un processus enfant de systemd car ce dernier requiert d'avoir le processus avec le PID 1.
Avec la prise en charge de systemd, cela permet l'installation de paquets qui nécessitent ce composant comme systemctl, microk8s (Kubernetes) et Snap.
Comment activer systemd dans WSL ?
C'est là où je vais en décevoir certains : pour le moment, cette fonctionnalité est disponible dans la dernière build de Windows 11 accessible via le programme Windows Insider. Autrement dit, ce n'est pas encore disponible sur une version stable de Windows.
Si vous utilisez une version preview de Windows 11, vous pouvez mettre à jour WSL vers WSL 0.67.6 preview ou supérieur avec ces deux commandes. La première étant pour la mise à jour, et la seconde pour vérifier la version installée.
wsl --update wsl --version
Ensuite, pour activer systemd au sein de la distribution WSL de votre choix, vous devez modifier le fichier de configuration "/etc/wsl.conf" de la distribution afin d'ajouter ceci :
[boot] systemd=true
Cette manipulation sera à effectuer sur chaque distribution où vous souhaitez activer systemd.