Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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) :
Vérifiez que votre version WSL est 0.67.6 ou ultérieure :
- pour vérifier, exécuter
wsl --version; si la commande lève uneInvalid command line option: --versionerreur, vous devez mettre à jour WSL ; - pour mettre à jour, exécuter
wsl --updateou télécharger la dernière version à partir du Microsoft Store.
- pour vérifier, exécuter
Ouvrez une ligne de commande pour votre distribution Linux et entrez
cd /pour accéder au répertoire racine, puislspour 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.Ajoutez ces lignes dans le
wsl.conffichier que vous avez maintenant ouvert pour modifier l’init utilisé pour systemd :[boot] systemd=true
Quittez l’éditeur de texte Nano (Ctrl + X, tapez Y pour enregistrer votre modification et confirmer avec la
entertouche).Vous devrez ensuite fermer la distribution Linux. Vous pouvez utiliser la commande
wsl.exe --shutdowndans PowerShell pour redémarrer toutes les instances WSL.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 statuspour afficher l’état en cours d’exécution et la commandesystemctl 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.
Tutoriels d’Oliver basés sur ces démonstrations sur le blog Ubuntu : inclut « Utiliser snap pour créer une instance Nextcloud en quelques minutes sur WSL », « Gérer vos projets web avec LXD » et « Exécuter un bot Echo .Net en tant que service systemd sur Ubuntu WSL »
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=servicepour 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.
Windows Subsystem for Linux