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
systemd
under WSL we require a tool calledsystemd-genie
-
Copy the contents of
install-sg.sh
to 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
systemd
enabled, run:wsl genie -s
-
Prove that it works:
sudo systemctl status time-sync.target
Feb 02 17:57:10 LAPTOP-MU4A5RHR systemd[1]: Starting Remount Root and Kernel File Systems..
-- Subject: A start job for unit systemd-remount-fs.service has begun execution
-- A start job for unit systemd-remount-fs.service has begun execution.
Feb 02 17:57:10 LAPTOP-MU4A5RHR systemd-remount-fs[7902]: mount: /: can't find LABEL=cloudimg-rootfs.
Feb 02 17:57:10 LAPTOP-MU4A5RHR systemd-remount-fs[7901]: /bin/mount for / exited with exit status 1.
Feb 02 17:57:10 LAPTOP-MU4A5RHR systemd[1]: systemd-remount-fs.service: Main process exited, code=exited, status=1/FAILURE
-- An ExecStart= process belonging to unit systemd-remount-fs.service has exited.
Feb 02 17:57:10 LAPTOP-MU4A5RHR systemd[1]: systemd-remount-fs.service: Failed with result 'exit-code'.
-- The unit systemd-remount-fs.service has entered the 'failed' state with result 'exit-code'.
Feb 02 17:57:10 LAPTOP-MU4A5RHR systemd[1]: Failed to start Remount Root and Kernel File Systems.
-- Subject: A start job for unit systemd-remount-fs.service has failed
-- A start job for unit systemd-remount-fs.service has finished with a failure.