NOTE: If you have Windows 11 there is now an official way to do this in WSL 2, use it if possible - see MS post here (WINDOWS 11 ONLY)
This guide will enable systemd to run as normal under WSL 2. This will enable services like microk8s, docker and many more to just work during a WSL session. Note: this was tested on Windows 10 Build 2004, running Ubuntu 20.04 LTS in WSL 2.
-
To enable
systemdunder WSL we require a tool calledsystemd-genie -
Copy the contents of
install-sg.shto a new file/tmp/install-sg.sh:cd /tmp wget --content-disposition \ "https://gist.githubusercontent.com/djfdyuruiry/6720faa3f9fc59bfdf6284ee1f41f950/raw/952347f805045ba0e6ef7868b18f4a9a8dd2e47a/install-sg.sh"
-
Make it executable:
chmod +x /tmp/install-sg.sh
-
Run the new script:
/tmp/install-sg.sh && rm /tmp/install-sg.sh -
Exit the WSL terminal and shutdown the WSL env:
wsl --shutdown
-
To open a new WSL terminal with
systemdenabled, run:wsl genie -s -
Prove that it works:
sudo systemctl status time-sync.target
@4wk-, all,
A first result: I have two running Ubuntu distros on the same WSL2 installation.
Ubuntu 22.04 is running smoothly and has systemd activated as per below:
Ubuntu 20.04 runs smoothly if I don't activate
systemd:But if troughs the aforementioned error
The connection information for this resource is invalidwhen I launched it withsystemd=truein ```/etc/wsl.conf````. Thus, I concluded so far that the WSL Genie issue relates with each installed distro, and it is possible to install fresh ones without need to remove the whole WSL2 thing. I will investigate further about the in troubles Ubuntu installation and keep this thread posted! Any comment is always welcome. Thanks.