Utilisez systemd pour gérer les services Linux avec WSL

Le sous-système Windows pour Linux (WSL) prend désormais en charge systemd, un système d’initialisation et un gestionnaire de services utilisés par de nombreuses distributions Linux populaires telles que Ubuntu, Debian, etc. (Qu’est-ce que systemd ?).

La valeur par défaut du système init a récemment changé de SystemV, avec systemd désormais la valeur par défaut de la version actuelle d’Ubuntu qui sera installée à l’aide de la wsl --installcommande par défaut. Les distributions Linux autres que la version actuelle d’Ubuntu peuvent toujours utiliser l’initialisation WSL, similaire à l’initialisation SystemV. Pour passer à systemd, consultez Comment activer systemd.

Qu’est-ce que systemd dans Linux ?

Selon systemd.io : « systemd est une suite d’éléments de base pour un système Linux. Il fournit un gestionnaire de système et de services qui s’exécutent en tant que PID 1 et démarre le reste du système. »

Principalement un système d’initialisation et un gestionnaire de services, systemd inclut des fonctionnalités telles que le démarrage à la demande de démons, la maintenance des points de montage et de montage automatique, la prise en charge des captures instantanées et le suivi des processus à l’aide des groupes de contrôle Linux.

La plupart des principales distributions Linux fonctionnent aujourd’hui avec systemd. L’activation de systemd sur WSL rapproche encore davantage l’expérience de l’utilisation de Linux nu. Consultez l’annonce vidéo avec des versions de démonstration de systemd ou des exemples d’utilisation de systemd ci-dessous pour en savoir plus sur ce que systemd a à offrir.

Comment activer systemd ?

Systemd est maintenant la valeur par défaut de la version actuelle d’Ubuntu qui sera installée à l’aide de la commande wsl --install par défaut.

Pour activer systemd pour toute autre distribution Linux exécutée sur le WSL 2 (en modifiant la valeur par défaut de l’utilisation de systemv d’initialisation) :

  1. Vérifiez que vous disposez de la version 0.67.6 ou d’une version plus récente de WSL. (Pour vérifier, exécutez wsl --version. Pour mettre à jour, exécutez wsl --update ou téléchargez la dernière version à partir du Microsoft Store.)

  2. Ouvrez une ligne de commande pour votre distribution Linux et entrez cd / pour accéder au répertoire racine, puis ls pour répertorier les fichiers. Vous verrez un répertoire nommé « etc » qui contient le fichier de configuration WSL pour la distribution. Ouvrez ce fichier afin de pouvoir effectuer une mise à jour avec l’éditeur de texte Nano en entrant : nano /etc/wsl.conf.

  3. Ajoutez ces lignes dans le fichier wsl.conf que vous avez maintenant ouvert pour modifier l’initialisation utilisée par systemd :

    [boot]
    systemd=true
    
  4. Quittez l’éditeur de texte Nano (Ctrl + X, sélectionnez Y pour enregistrer votre modification). Vous devrez ensuite fermer la distribution Linux. Vous pouvez utiliser la commande wsl.exe --shutdown dans PowerShell afin de redémarrer toutes les instances WSL.

Enable systemd on WSL 2

Une fois que votre distribution Linux aura redémarré, systemd sera en cours d’exécution. Vous pouvez confirmer l’utilisation de la commande : systemctl list-unit-files --type=service, qui affichera l’état des services associés à votre distribution Linux.

En savoir plus sur configuration avancée des paramètres dans WSL, notamment la différence entre les fichiers de configuration wsl.conf (spécifiques à la distribution) et .wslconfig (global), comment mettre à jour les paramètres de montage automatique, etc.

Vidéo de démonstration de systemd

Microsoft a collaboré avec Canonical afin d’apporter un support système à WSL. Découvrez Craig Loewen (gestionnaire de programmes pour WSL chez Microsoft) et Oliver Smith (gestionnaire de programmes pour Ubuntu sur WSL chez Canonical) qui annoncent le support de systemd et font des démonstrations de ce qu’il rend possible.

Exemples de systemd

Voici quelques exemples d’applications Linux qui dépendent du système :

  • snap : un système d’empaquetage et de déploiement de logiciels développé par Canonical pour les systèmes d’exploitation qui utilisent le noyau Linux et le système d’initialisation systemd. Les packages sont appelés « snaps », l’outil de ligne de commande pour la génération de snaps est appelé « Snapcraft », le référentiel central dans lequel les snaps peuvent être téléchargés/installés est appelé « Snap Store » et le démon requis pour exécuter des snaps (télécharger à partir du magasin, monter en place, limiter et exécuter des applications hors de ceux-ci) est appelé « snapd ». L’ensemble du système est parfois appelé « snappy ». Essayez d’exécuter la commande : snap install spotify ou snap install postman.

  • microk8s: une version open-source, low-ops et minimale de Kubernetes pour la production qui automatise le déploiement, la mise à l’échelle et la gestion des applications conteneurisées. Suivez les instructions pour Installer MicroK8s sur WSL2, consultez le Tutoriel de prise en main ou regardez la vidéo sur Kubernetes sur Windows avec MicroK8s et WSL 2.

  • systemctl : un utilitaire de ligne de commande utilisé pour contrôler et inspecter systemd et pour vous aider à interagir avec les services de votre distribution Linux. Essayez la commande : systemctl list-units --type=service pour voir quels sont les services disponibles et leur état.

Quelques tutoriels liés illustrant les différentes manières d’utiliser systemd :

Comment l’activation du système affecte-t-elle l’architecture WSL ?

L’activation de la prise en charge de systemd a nécessité des modifications de l’architecture du WSL. Comme systemd nécessite PID 1, le processus WSL d’initialisation démarré dans la distribution Linux devient un processus enfant de systemd. Étant donné que le processus d’initialisation WSL est chargé de fournir l’infrastructure de communication entre les composants Linux et Windows, la modification de cette hiérarchie a nécessité la révision de certaines des hypothèses formulées dans le cadre du processus d’initialisation WSL. Des modifications supplémentaires ont dû être apportées pour garantir un arrêt propre (cet arrêt étant désormais contrôlé par systemd) et pour assurer la compatibilité avec WSLg, le composant de WSL qui exécute les interfaces utilisateur graphiques (GUI) de Linux, ou les applications Linux qui s’affichent dans des fenêtres plutôt que dans la ligne de commande.

Il est également important de noter qu’avec ces modifications, les services système ne conservent pas votre instance WSL active. Votre instance WSL restera active de la même manière qu’elle l’était avant cette mise à jour, comme l’explique l’article de blog sur le support des tâches en arrière plan datant de 2017.