Partager via


Utiliser 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 init et un gestionnaire de service 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 maintenant la valeur par défaut pour la version actuelle d’Ubuntu qui sera installée à l’aide de la wsl --install commande par défaut. Les distributions Linux autres que la version actuelle d’Ubuntu peuvent toujours utiliser l’init WSL, similaire à SystemV init. Pour passer au système, consultez Comment activer systemd.

Qu’est-ce que systemd dans Linux ?

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

Principalement un système init et un gestionnaire de services, systemd inclut des fonctionnalités telles que le démarrage à la demande des 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 de groupes de contrôle Linux.

La plupart des principales distributions Linux exécutent désormais systemd, de sorte que son activation sur WSL rapproche encore davantage l’utilisation de Bare-metal Linux. Consultez l’annonce vidéo avec des démonstrations système 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 wsl --install commande par défaut.

Pour activer systemd pour toutes les autres distributions Linux exécutées sur WSL 2 (en modifiant la valeur par défaut à l’aide de l’init systemv) :

  1. Vérifiez que votre version WSL est 0.67.6 ou ultérieure :

  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 pour pouvoir effectuer une mise à jour avec l’éditeur de texte Nano en entrant : nano /etc/wsl.conf.

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

    [boot]
    systemd=true
    

    Activer systemd sur WSL 2

  4. Quittez l’éditeur de texte Nano (Ctrl + X, tapez Y pour enregistrer votre modification et confirmer avec la enter touche).

  5. Vous devrez ensuite fermer la distribution Linux. Vous pouvez utiliser la commande wsl.exe --shutdown dans PowerShell pour redémarrer toutes les instances WSL.

  6. Une fois que vous redémarrez la distribution Linux, systemd sera en cours d'exécution. Vous pouvez le vérifier à l’aide de la commande systemctl status pour afficher l’état en cours d’exécution et la commande systemctl list-unit-files --type=service, qui affiche l’état des services associés à votre distribution Linux.

Si votre distribution Linux est Debian/Ubuntu/Kali Rolling, vous devez non seulement avoir installé le package système, mais également vous assurer que le package systemd-sysv est installé.

sudo apt-get update -y && sudo apt-get install systemd systemd-sysv -y

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

Vidéo de démonstration systemd

Microsoft a collaboré avec Canonical pour apporter un support système à WSL. Voyez Craig Loewen (PM pour WSL chez Microsoft) et Oliver Smith (PM pour Ubuntu sur WSL chez Canonical) annoncer la prise en charge de systemd et présenter quelques démonstrations de ce que cela permet de faire.

Exemples de systemd

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

  • snap: un système de gestion de paquets logiciels et de déploiement développé par Canonical pour les systèmes d'exploitation qui utilisent le noyau Linux et le système d'init. Les packages sont appelés « snaps », l’outil de ligne de commande pour la création d’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.

  • microk8s : une solution d'open source, avec peu d'opérations, un Kubernetes minimal 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 didacticiel de prise en main ou regardez la vidéo sur Kubernetes sur Windows avec MicroK8s et WSL 2.

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

Voici quelques didacticiels connexes montrant comment 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 WSL. Comme systemd nécessite PID 1, le processus d’init WSL démarré dans la distribution Linux devient un processus enfant du système. Étant donné que le processus d’init WSL est chargé de fournir l’infrastructure pour la communication entre les composants Linux et Windows, la modification de cette hiérarchie nécessite de repenser certaines des hypothèses faites avec le processus d’init WSL. Des modifications supplémentaires devaient être apportées pour garantir un arrêt propre (car cet arrêt est contrôlé par systemd maintenant) et avoir une compatibilité avec WSLg, le composant de WSL qui exécute des interfaces utilisateur graphiques Linux (GUI) ou les applications Linux qui s’affichent dans les 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'avant cette mise à jour, comme expliqué dans ce billet de blog sur la prise en charge des tâches d’arrière-plan de 2017.