Skip to content

Instantly share code, notes, and snippets.

@HotoRas
Forked from 4wk-/README.md
Last active January 11, 2024 04:28
Show Gist options
  • Save HotoRas/5ea46b505ff90eede33517dc75f1556d to your computer and use it in GitHub Desktop.
Save HotoRas/5ea46b505ff90eede33517dc75f1556d to your computer and use it in GitHub Desktop.
Clean uninstall then reinstall of WSL on Windows 10, with systemD support

Uninstall then reinstall WSL on Windows 10 (clean way)

Background

I've been using wsl (version 2) with genie mod for years without issue, but one day, Windows 10 finally catch up on wsl Windows 11 features and gives us a way to use systemD natively.

I wanted to use the new "right way" to enable systemD on Windows Subsystem for Linux (without genie), and I also had a (probably related) infinite Windows RemoteApp error poping in.

ToC

Fixing it

A - Uninstall wsl and related stuff

  1. In powershell (as admin)
# list all installed distros
wsl -l -v

# destroy distros
wsl --unregister Ubuntu
wsl --unregister Debian # and so on

Note: Command Promport as admin still will work: Before uninstalling Windows Subsystem for Linux in settings (as below), wsl command will also be launched through wsl.exe- enabling admin CMD also configure it.

  1. In Settings > Apps > Apps & Features
  • search for Ubuntu (then Debian, etc), and if something is found, click on uninstall
  • search for Linux, and if something is found, click on uninstall on all results

Tip: Simply remove Windows Subsystem for Linux program to remove all the WSL products.

  1. In Start Menu > Turn Windows Features on or off
  • Untick Virtual Machine Platform checkbox
  • Untick Windows Subsystem for Linux checkbox

Disabling these features will finally purge all the files about wsl other than .wslconfig, which is global to Windows system.

  1. Reboot

might have reboot between step 2) and 3) as well.


B - Re-install and configure wsl to use systemD

The process of installing wsl have become super straightforward.

  1. Installing wsl - In powershell (as admin)
# install wsl
wsl --install

Then reboot and wait for the Ubundu installation to complete and ask for username (it might takes some time).

Note: You might have to use powershell since you've removed all the components related to wsl.

2-1) Optional: Changing distribution - In powershell (as admin)

# list available distributions
wsl --list --online

# install favorite distro
wsl --install -d Debian

# set Debian as default
wsl --set-default Debian

NB: wsl --set-default-version 2 is not needed anymore.

  1. Enabling systemD support - Inside wsl
  • Launch your distribution
  • Edit /etc/wsl.conf (or create the file if it doesn't exist)
[boot]
systemd=true

[interop]
appendWindowsPath = false ; Optional: remove windows from PATH (autocompletion)

Note: appendWindowsPath = false will disable path writes as like you've done in Windows, like...

cd C:\Windows\System32 will throw error when you set it.

  1. Clean rebooting - In powershell (as admin)
# clean shutdown
wsl --shutdown

Great success! 🎉 You have now enabled systemD in wsl natively. You can test it with sudo systemctl status time-sync.target (inside your Linux distribution).


NB: System wide configuration file .wslconfig will not be deleted/reseted, you would have to do it manually.

Let me know if I missed anything, I'll be glad to update this gist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment