Comment corriger l'erreur System has not been booted with systemd as init system (PID 1). Can't operate ?

Depuis quelques années, Windows a renforcé sa coopération avec les systèmes d'exploitation Linux. Windows 10 peut maintenant émuler un système d'exploitation Linux grâce à WSL, Windows Subsystem for Linux. On peut ainsi installer une distribution Linux depuis le Microsoft Store dans Windows et l'utiliser. Le message d'erreur "System has not been booted with systemd as init system (PID 1)" vient de cette utilisation.

Lorsque vous utilisez Ubuntu ou une autre distribution Linux directement dans Windows avec WSL, vous aurez peut-être besoin de lancer un service. Si c'est le cas, vous pensez pouvoir utiliser la commande "systemctl", qui permet, pour les systèmes basés sur Debian, de lancer un service en se servant de son nom :

//Démarrage de REDIS avec la commande systemctl
sudo systemctl start redis

Cette commande ne fonctionnera pas et vous renverra un message d'erreur, car "systemd", le système sur lequel se base la commande "systemctl", n'est pas fourni avec WSL. Vous avez 2 solutions possibles pour remplacer cette commande.

La première possibilité est la commande "service", qui permet de démarrer un service installé sur votre machine, et qui est prise en charge par WSL. Pour démarrer le service, il faut connaître son nom, car il peut ne pas être le même que pour la commande "systemctl". La commande "service" possède également des options pour lister les services installés sur votre machine.

//Liste tous les services installés sur l'ordinateur
service --status-all
//Démarre REDIS
sudo service redis-server start

Certains programmes possèdent également eux-mêmes des commandes pour démarrer. Il faut regarder au cas par cas et, si c'est possible, utiliser la commande fournie par le programme pour le lancer.

// Démarre REDIS avec sa propre commande
sudo /etc/init.d/redis start