WSL or Windows Subsystem for Linux allows you to run a fully functional Linux environment, inside your Windows 10 system, without having to set up a virtual machine. It’s a lot more lightweight too, and it integrates nicely with the Windows OS, so it’s a great way to explore Linux, or use the two systems side by side for cross-platform development. This also skips the need for setting up Cygwin and whatever hacky way to access those Linux command line tools on Windows.
I’ve been using it for a while, so I’ll list a short setup guide here, and some tips & tricks to help you along.
Installing WSL is really easy now. Just open an administrator PowerShell or a Command window and type:
That will install WSL with the default Ubuntu distribution. If you prefer something else, like Debian, you can use this command:
wsl --install -d Debian
The username and password for your WSL system is specific to the Linux distribution. So make sure you don’t forget that password. :)
There are 2 versions of WSL. If you can, run on v2. It’s faster, better and euhm, harder? Anyway, it’s faster, so that’s what you want. But sometimes, you might want to run things on v1 anyway. For example, some VPN clients break with the WSL v2 networking. The easiest way is to set your WSL distro to v1, and see if that works. It did the trick in my case with the CheckPoint VPN on my work machine.
To check your WSL version, run:
wsl -l -v
It should show something like this, if you’re on Debian and v2
NAME STATE VERSION * Debian Stopped 2
To switch the Debian distro to v1, you can run this:
wsl --set-version Debian 1
Makes sense right? But you just have to know.
Switching versions can take a while as it’s being converted, so do this when you have the time for it.
Accessing your files in WSL
Ok, now let’s do some work in WSL, by typing
wsl in a PowerShell window.
That’s it, you now have a shell in your local WSL system.
You’ll see something like this on your prompt:
That’s a mount of your Windows C-drive into the Linux system. So you can access any file from your Windows system in your Linux shell. The other way around also works.
Open up an Explorer window and enter
\\wsl$ in the address bar and hit return.
You’ll see a folder pop up for each WSL distribution you have installed. So if you’ve installed Debian, you’ll see a Debian folder. From there you can access any file on your WSL system.
Keep in mind that this cross OS file access is pretty slow, certainly for lots of small files. So if you are planning on working on files, it’s better to choose your OS and stick with it. But it’s super handy that you can easily copy and access files from any system.
Installing software in WSL
Well, this is easy. If you’ve installed Debian or Ubuntu, so you probably know you can install more software using
WSL pretty much behaves as it should, and you can just install whatever you like using known tools.
The account you created when setting up your distro is an administrator account, so you can use
Moving your WSL distro to a new PC
So you have your Linux distro all set up the way you want to, and now you’ve got yourself a brand new shiny piece of hardware to work and play on. How do you move that WSL distro over to the new machine?
Luckily, it’s as simple as backup and restore. Really. It’s actually easier than moving your Windows files over.
Creating a backup of WSL works like this:
wsl --export <distribution> <filename.tar>
So if you see that your distro is called Debian after running
wsl -l -v, you do this:
wsl --export Debian debian.tar
This takes a while. After it’s done, you copy the tar file over to your new shiny machine and run the following command:
wsl --import <distribution name> <install path> <tar file path>
wsl --import Debian c:\users\YourName\AppData\Local\Packages\Debian c:\temp\debian.tar
That’s it! You now have your full distro moved to a new machine, including all settings and files.
For more info on WSL, see the excellent official Microsoft documentation.