Linux users are likely familiar with Wine — a piece of software that allows Windows software to be run on Linux. But did you know you can download and run Linux on Windows natively, and through the Microsoft Store of all places? Yes, I'm serious. It's all thanks to the Windows Subsystem for Linux (WSL), a feature that was first added to Windows 10 in 2016 as a beta feature for those in the Windows Insider program, and has since been released to the public.
Thanks to WSL, anyone can quickly and easily install and run one of many Linux distribution (distros, for short) in a matter of minutes.
For Linux vets who have never heard of WSL, this might sound too good to be true. On paper, WSL even sounds like a potential entry point into the world of Linux for novices. The reality is more complicated, however.
A little further in the post, we'll describe how to install WSL and get Linux running on your Windows PC, plus provide links to some helpful resources. But first let's talk about WSL — what it is, what it isn't, and whether it's the right Linux option for you.
What operating system do you use? For some, that question may as well be posed in Latin or Sanskrit. For others, it's an invitation to have a heated debate about the benefits of GUI vs. command line, modern day UI vs. old school metaphor, the pros/cons of Windows 10, LAMP vs. IIS... the list goes on and on.
What is WSL?
Obviously, the first question here is: are WSL and the distros available in the Microsoft Store actually Linux?
Technically speaking, yes. WSL was originally known as the "Bash on Windows" feature and it allowed users to use Ubuntu bash commands in Windows PowerShell. But WSL now lets you perform many other commands besides Bash (and if all this is over your head, bear with us, it'll get clearer as we go on).
The Linux distros that can be downloaded from the Windows Store and run via WSL are the complete Linux package, at least in terms of core functionality, with zero emulation required. So yes, by installing WSL and downloading a distro from the Microsoft store, you are running Linux in Windows, full stop.
However, there are some caveats directly tied to the nature of WSL and its intended use case that make it a more viable option for some users, and, frankly, almost useless for others.
WSL is best for developers
WSL is primarily a development tool, and it exists to help web and software developers for testing purposes, specifically.
See, the internet and the vast majority of software that are run on Windows PCs are actually created in Linux.
While this inconvenient bifurcation has always existed, developers have made it work as best they can, creating tools and workarounds like Cygwin or MYSYS so their Linux work plays well with Windows and vice versa. WSL is a recognition of this reality by Microsoft, and an active attempt to help developers streamline their workflow and give them native support on Windows.
WSL is an important feature for developers across the board. For example, by running a Linux distro with WSL, web developers can be coding in Linux while simultaneously monitoring in realtime the exact page they're working on via a web browser in Windows, and without requiring extra or paid software. Furthermore, since WSL is a Windows process, you can use Windows tools and functions like the task manager at the same time.
Being able to kill a Linux process with the task manager is helpful for those times when something fails or a process hangs.
So, when we say that WSL is the full Linux package, we mean that most everything a programmer would want or need to do in Linux can be done in WSL alongside your usual Windows features.
What WSL Is not
WSL is a great dev tool, and the native Windows support will likely help smooth things out for programmers crisscrossing between Windows and Linux.
That said, WSL does have some caveats that may prevent some users from wanting to use it, especially casual or first-time Linux users. If you were expecting an easy way to get the full Linux experience, it's wise to temper your expectations.
WSL does not support Graphical User Interfaces
By default, WSL does not support Graphical User Interface (GUI) versions of Linux, but rather uses a command line environment. This will be a difficult transition for those who are accustomed to having a visual interface to work with (like, say, most Windows users, for instance), and limits what software can be installed and run.
WSL's command line interface requires the user to know Linux commands and understand the file organisation of a Linux system. Learning this takes time and will likely be difficult if you're a complete novice.
Unless you're willing to put in the effort, this won't be the ideal method for first-time Linux users to experience the OS.
To be fair, it would be incorrect to say that there are no graphical Linux options available for WSL. However, running a GUI will require you to have at least an intermediate familiarity with Linux command line operations to get it set up in the first place, and even then it won't be ideal. Any graphical Linux support is more or less an incidental byproduct of Microsoft working with Linux developers to get certain distros running, and not the primary goal or feature of WSL.
In fact, Microsoft has made it clear that it does not plan to add in official support for Linux GUIs.
WSL uses two File Systems
Using WSL requires you to know and use both Windows and Linux simultaneously — this is not emulation, nor a pure Linux environment on a separate drive partition. Someone who wants to either replace Windows or run a more "complete" version of Linux will have to install the OS using one of the methods linked to below.
More importantly, using WSL means working with two different file systems. For developers, this is actually a pretty handy feature. At the end of this post, we have guides that provide a detailed explanation of each file system, how they interact (and don't interact) with each other, and will help you establish a workflow between the two.
WSL is not open source
Finally, it's important to note that WSL is not an open source program or Linux kernel, but rather a proprietary Microsoft framework.
There isn't a bustling community of developers building onto WSL — any future functionality or expanded integration will have to come from Microsoft alone.
There are so many Windows apps out there, that picking a list of the very best, most must-install software for your desktop or laptop feels daunting. We've pored over pages of recommendations, countless forum posts, and lots of comments to come up with this year's Lifehacker Pack for Windows, a list of software champions across four categories.
But what about non-developers, is there a point to using WSL?
In all honesty, not really. However, that isn't to say that WSL is totally useless for a Linux beginner. As we said above, it's the fastest and easiest way to get Linux running on Windows, and since it's natively supported and offered directly from Microsoft, you don't have to worry much about it somehow breaking your PC.
For us, it was a neat thing to tool around with and get running, and we think it offers an interesting opportunity to learn more technical operations your PC can perform and even how Linux's file system is structured. However, if you're looking for a way to control or modify Windows with consoles commands, WSL isn't going to do much for you either, but there are tons of interesting things you can do with the Windows command line.
When it comes down to it, if you're looking for a simple way to dip into the Linux platform or an easy solution to installing Linux on your machine side-by-side with Windows, WSL probably isn't it. Luckily there are several alternative methods for installing Linux if you're looking for a fully-featured and/or graphical version.
If you've got a powerful enough PC, you may want to look into a Virtual Machine (VM). VMs are, well, separate "virtual" PCs that can run in an application window alongside your normal OS. This can be a system hog and requires a fair amount of setup, but it will give you a fully-featured, graphical version of the Linux distro of your choice running on Windows.
Alternatively, you can install a version of Linux on a USB stick and use it as a bootable drive. This is a simple way to test out the OS without modifying your PC.
Similarly, you can install Linux side-by-side with Windows, which is called "dual-booting." This will take up hard drive space, but it's a more desirable option than using a USB stick if you plan on using Linux often and installing software.
How to enable WSL and install Linux from the Microsoft Store
If you've made it this far and are sold on WSL's functionality, or are simply curious as to what it is and how to install it, this section will guide you through the initial setup.
Here's what you'll need:
A PC running a 64-bit version of Windows 10. (We detail how to check this below if you're not sure what version you're running)
An internet connection for Accessing the Microsoft store and downloading the apps.
We also recommend this WSL guide on Github from Michael treat. It covers some of the same information we have thus far, but is written specifically to help developers new to WSL set up their work environment and understand how the Windows and Linux file systems interact.
1. Check your Window OS version
Open up the start menu and click on the gear icon to bring up the Settings menu. Click System > About. Your PC's system type will be listed towards the bottom of the device specifications section.
In order to enable WSL, you'll need to have a 64-bit operating system. The WSL feature will be unavailable if you're running a 32-bit version of Windows 10.
2. Enable WSL
Once again, open your Settings menu.
In the search bar, type "turn windows features on or off," click the item from the drop-down box, and a new window will pop up.
It may take a few moments to load, but once it's done there will be a list of features with checkboxes next to them. Scroll down to Windows Subsystem for Linux and check the box. This will begin downloading and installing the necessary files. Your computer will then restart, after which the installation is complete.
3. Download Ubuntu (or any other available distro) from The Microsoft Store
This step is as simple as opening the Microsoft Store tab on Windows and searching for "Linux."
The search results should populate with several available Linux distros WSL can run. Simply pick from the available options, and begin downloading.
We installed Ubuntu, but Debian, openSUSE, Fedora, Kali, and SLES are also available through the store (all for free, we might add), and some users have reported that several other as-yet-unsupported distros have been successfully installed as well.
At this point, you can now run a command line version of Ubuntu (or whatever distro you installed) natively on Windows. It can be launched from the start menu like you would most other apps.
However, this is really just the beginning of the process. Upon opening your Linux distro for the first time, you'll need to create a UNIX system account, and then will probably want to start installing files, updating software, and customising your work environment, but exactly what you do and how is more or less up to you and your needs.
Here are some resources we recommend for taking your next steps with WSL:
One of the best resources is Michael Treat's guide on GitHub, which we also mentioned above. It will take you through all the necessary next steps and beyond, and explains WSL and it's functionality in granular detail.
WSL Tips and Tricks by Scott Hanselman — this blog post includes several shortcuts, a collection of different line commands, and an explanation of various important WSL terms and features.
The WSL Guide wiki — Another resource for setting up WSL, this is based on a slightly older version of the program, but still is chock full of relevant info, including getting GUI applications to run, recommendations for various software packages, and troubleshooting for common problems.