WSL Missing? Install Windows Subsystem for Linux Right
If Windows Subsystem for Linux is missing, grayed out, or refuses to turn on, the fix in 2026 is a lot shorter than it used to be: open PowerShell or Terminal as an administrator and run wsl --install, then restart when it asks. That one command replaces the whole toggle-and-reboot routine this blog first covered back in 2016, when WSL was a preview feature buried inside Windows 10's Developer Mode. Here's the surprising part: that original 2016 version wasn't running Linux at all — it translated Linux commands into Windows ones behind the scenes. The version you're installing today, WSL2, runs an actual lightweight Linux kernel inside Windows, which is the whole reason it can do things the 2016 preview never could.
🕐 What changed since we first wrote this
- Then (2016): WSL shipped as a hidden preview. You had to turn on Developer Mode under Settings > Update & Security > For developers, reboot, then separately enable the "Windows Subsystem for Linux (Beta)" optional feature before Bash would even appear.
- Now: Microsoft folded all of that into a single command,
wsl --install, which enables the required Windows features, downloads a default Linux distribution, and installs it — no Developer Mode toggle required anymore. - What that means for you: if you're following an old guide (including our own 2016 one) that talks about Developer Mode or a "Beta" feature, you can ignore that step entirely. It's not required today.
Jake had a laptop on his repair bench — a customer wanted to run some Linux diagnostic tools before he'd trust the drive wasn't failing, but he didn't want to wipe Windows or dual-boot anything on someone else's machine. "I remember reading your old post about this Linux subsystem thing years ago," he told Ethan, "and it looked like a whole project. Developer Mode, some hidden feature, a restart. Is it still like that?"
"Not even close," Ethan said. "That whole dance you're remembering was the 2016 preview. Today it's one command and a restart, and Windows sets up the rest for you. The part that trips people up now isn't the install — it's when that one command fails, because there's usually a very specific reason, and most articles don't tell you which reason applies to you."
Which symptom matches what you're seeing?
Before you troubleshoot, it helps to know which of these you're actually dealing with — the fix is different for each one.
"wsl is not recognized as a command"
You're on a very old build, or you typed the command somewhere that isn't PowerShell or Command Prompt (like the regular Start menu search box, which won't run it). Open PowerShell properly and try again — see the Windows 11 steps or Windows 10 steps below.
The install starts, then fails with an error code
This is almost always virtualization-related. Jump straight to Common WSL install errors.
WSL is already installed, but the Linux window won't open or crashes instantly
Usually a leftover distro registration or an out-of-date WSL kernel. See Common WSL install errors and Uninstalling and cleanly reinstalling.
You want a different Linux distro than the one that installed automatically
That's normal and easy to change. See Choosing and installing a different distro.
You're on an ARM PC, a VM, or connecting over Remote Desktop
These aren't broken installs — they just have a few extra considerations. See WSL on less typical hardware and setups.
Installing WSL on Windows 11
On a Windows 11 PC that's reasonably up to date, this is the whole process:
Step 1: Open an elevated terminal
Right-click the Start button (or press Win + X) and choose "Terminal (Admin)" or "Windows PowerShell (Admin)." "Elevated" is just another way of saying you gave it permission to make system-level changes — without it, the install step will silently fail or throw an access-denied error partway through.
Step 2: Run the install command
Type wsl --install and press Enter. This does three things in one pass: turns on the two Windows features WSL needs (Windows Subsystem for Linux and Virtual Machine Platform), downloads the WSL2 Linux kernel, and installs a default Linux distribution — Ubuntu, unless you specify otherwise.
Step 3: Restart when asked
The features being enabled require a reboot to take effect. Save your work and restart rather than skipping it — skipping it is the single most common reason people report WSL as "still missing" right after running the command.
Step 4: Finish the first-run setup
After restarting, the Linux distro window opens on its own and asks you to create a Unix username and password. This account is separate from your Windows sign-in — it only exists inside the Linux environment, and you'll use it any time a Linux command asks for sudo permission.
🙋♂️ Jake's Reality Check
"Do I need the Pro version of Windows for this, or does it need Hyper-V? I've got Home edition on half my repair machines."
No, WSL works on Home edition. It doesn't need full Hyper-V or the Pro-only virtualization tools — it uses a lightweight component called Virtual Machine Platform, which is available on Home too. The one thing it does need, regardless of edition, is hardware virtualization turned on in your BIOS/UEFI, which is a motherboard setting, not a Windows edition limit.
Windows 11 traps to know before you start
Two things catch people specifically on Windows 11:
First, if you go looking for the old "Turn Windows features on or off" dialog to enable WSL manually the way our 2016 guide described, you'll find it's still there — search "Windows features" from the Start menu — but you generally don't need it anymore. Use it only as a fallback if wsl --install itself won't run.
Second, some laptops — especially business models with security software preinstalled — ship with virtualization disabled in the BIOS by default, or with Credential Guard or Device Guard policies that conflict with WSL2's virtualization layer. If the install completes but the Linux distro won't launch, that's the first thing to check, and it's covered in the error section below.
Installing WSL on Windows 10
The steps are the same command, run the same way — open an elevated PowerShell window and run wsl --install, then restart. Where Windows 10 differs is what happens if that command doesn't exist yet on your machine, which happens on installations that have gone a long time without a feature update.
If "wsl --install" isn't recognized on Windows 10
Fall back to the manual, two-feature method — this is the modern equivalent of what our original 2016 post walked through, minus the Developer Mode step, which is no longer part of it:
1. Search "Turn Windows features on or off" from the Start menu and open it.
2. Check the box for "Windows Subsystem for Linux."
3. Also check "Virtual Machine Platform" — this is the piece that didn't exist in 2016 and is what actually runs the Linux kernel today.
4. Click OK and restart when prompted.
5. After restarting, open the Microsoft Store, search for a distro (Ubuntu is the safest first choice), and install it directly from there.
⚠️ What this actually breaks
Windows 10 reached the end of free security updates in October 2025. WSL itself will keep working, but if your Windows 10 PC isn't enrolled in Extended Security Updates and isn't getting monthly patches, you're running virtualization software — and everything you install through it — on top of an operating system that's no longer being patched for newly discovered vulnerabilities. If this PC handles anything sensitive, that's worth weighing alongside whether it's finally time to move to Windows 11 or enroll in ESU.
Common WSL install errors and what actually fixes them
This is where most people actually get stuck, and it's rarely the step everyone assumes.
"WslRegisterDistribution failed" with an error code
This one almost always traces back to virtualization being off in your BIOS/UEFI, not to anything Windows itself is doing. Restart your PC, enter the BIOS/UEFI setup (usually a key like Delete, F2, or F10 during boot — it varies by manufacturer), and look for a setting called Intel VT-x, AMD-V, or simply "Virtualization Technology." Turn it on, save, and reboot into Windows. If you're on a work laptop managed by an IT department, this setting may be locked, and you'll need to ask them to enable it or grant a policy exception.
"Please enable the Virtual Machine Platform Windows feature"
Exactly what it says — that feature isn't on. Run wsl --install again (it will fix this on its own), or enable it manually through "Turn Windows features on or off" as described in the Windows 10 section above, then restart.
The Linux window opens and closes instantly, no error visible
Open PowerShell and run wsl --list --verbose to see what's actually registered. If nothing shows up, the distro registration got interrupted — usually by skipping the restart after install. Uninstall and reinstall that distro (see the section on reinstalling below) rather than trying to repair it piece by piece.
Install hangs at "Installing, this may take a few minutes"
This step downloads several hundred megabytes over your internet connection, so on a slow or unstable connection it can genuinely take a long time rather than being frozen. Give it several minutes before assuming it's stuck. If it's been well over ten minutes with no progress, close the window, check your internet connection, and run wsl --install again — it resumes rather than starting over.
Works on your main PC, fails the same way on a company laptop
Group Policy or Mobile Device Management software can block the Windows features WSL depends on, independent of anything you do locally. If BIOS virtualization is confirmed on and the same error keeps appearing, this is worth raising with whoever manages the machine rather than continuing to retry the same steps.
Choosing and installing a different Linux distro
wsl --install on its own gives you Ubuntu, which is a reasonable default for most people. But you're not stuck with it.
To see what else is available, run wsl --list --online. This lists every distro Microsoft distributes through WSL, typically including several Ubuntu versions, Debian, and other options like openSUSE and Kali Linux. To install a specific one instead of the default, run wsl --install -d followed by the distro's exact name from that list — for example, wsl --install -d Debian.
You can also have more than one distro installed side by side. Each one is isolated from the others, so testing something in a second distro won't touch your main one. Run wsl --list --verbose at any time to see everything currently installed and which one is set as default; change the default with wsl --set-default followed by the distro name.
✅ Why Ubuntu is the one to start with
If you don't have a specific reason to want something else, stick with the default Ubuntu install. It has the largest community, so any error message you hit has almost certainly already been asked and answered somewhere, and most tutorials that mention "run this on Linux" are written with Ubuntu's commands in mind. Switch to something else once you know why you need to.
WSL 1 vs WSL 2: what actually changed
"So what was even wrong with the old version?" Jake asked. "It worked, didn't it?"
"For simple stuff, sure," Ethan said. "But WSL1 was a translation layer — it intercepted Linux system calls and converted them into Windows equivalents on the fly. That worked fine for basic commands, but anything that needed real Linux kernel behavior, like certain networking tools or file system features, either ran slowly or didn't work at all. WSL2 sidesteps the whole problem by running an actual Linux kernel in a lightweight virtual machine, so compatibility stopped being a constant asterisk."
The trade-off runs the other way for one specific thing: file access speed. Files that live inside the Linux filesystem are fast to work with from Linux tools under WSL2, but reaching across into your Windows drives (under a path like /mnt/c/) is noticeably slower than it was under WSL1, because that traffic now crosses a virtual machine boundary. If your workflow is heavy on reading and writing files that live on the Windows side, keep that project's files inside the Linux filesystem itself rather than on the Windows drive, and you'll avoid the slowdown entirely.
wsl --install sets up WSL2 by default today. You generally don't need to think about the distinction unless you're following an old tutorial that references WSL1 specifically, or you hit that file-access slowdown and want to understand why.
Using WSL once it's installed
A few things that aren't obvious the first time you open it:
Getting back in. You don't need to reinstall anything to reopen your Linux session later — search for your distro's name (like "Ubuntu") from the Start menu, or type wsl in any terminal window, and it drops you straight back into the same environment, files and all.
Reaching your Windows files from Linux. Your Windows drives are mounted automatically at paths like /mnt/c/. So your Windows C:\Users\YourName\Documents folder is reachable from inside Linux at /mnt/c/Users/YourName/Documents.
Reaching your Linux files from Windows. Open File Explorer and type \\wsl$ into the address bar to browse into your Linux distro's files directly, without leaving Windows.
Graphical Linux apps. Modern WSL can run graphical Linux applications, not just command-line tools — they open in their own windows on your regular Windows desktop, no separate remote-desktop or VNC setup required.
🙋♂️ Jake's Reality Check
"Does this replace antivirus, or is it a separate thing I need to worry about protecting?"
It's a separate thing. Windows Defender and your usual antivirus still protect the Windows side of your PC, but they generally don't scan inside your Linux filesystem the same way. If you're downloading and running scripts or packages inside WSL, treat that the same way you'd treat installing software on any Linux machine — only from sources you trust, and keep it updated, which is covered next.
Once the basics feel comfortable, two things are worth knowing before you settle into daily use: how much of your PC's memory and network WSL is allowed to touch, and how it fits alongside tools like VS Code and Docker if you're doing development work. Both are covered next.
Tuning WSL: memory, CPU, and networking
Most people never need to touch WSL's settings. If you're using it every day rather than once, though, two things are worth knowing.
Limiting how much memory and CPU WSL can use
WSL2 runs as a lightweight virtual machine, and by default it can claim a sizable share of your system's memory when something inside it runs heavy — a build process, a database, a large import job. If you notice memory use climbing on the Windows side while a Linux distro is sitting idle, you can cap it. Create a plain text file named .wslconfig in your Windows user folder (C:\Users\YourName\.wslconfig), and under a [wsl2] heading add lines like memory=4GB and processors=2. Run wsl --shutdown afterward so the new limits take effect on the next launch.
Choosing a networking mode
WSL2 networking has historically been one of its rougher edges. By default it runs behind its own virtual network, which occasionally makes it awkward to reach a web server running inside WSL from another device on your network, or to use a work VPN alongside it. A newer "mirrored" networking mode shares your PC's actual network address instead, which resolves most of those complaints. Turn it on the same way, inside .wslconfig, by adding networkingMode=mirrored under [wsl2]. If you aren't running into networking problems, leave the default alone — this fixes a specific symptom, not something everyone needs.
Reclaiming disk space a distro won't give back
Each distro's virtual disk grows as you use it but doesn't automatically shrink back down when you delete files inside it. If a distro's disk file is taking up more room on your C: drive than seems reasonable, shut WSL down first with wsl --shutdown, then export the distro with wsl --export, remove it, and re-import the exported copy — that rebuilds the disk file at its actual current size instead of its historical high-water mark.
WSL on less typical hardware and setups
ARM-based Windows PCs, including Copilot+ machines
WSL runs on ARM-based Windows PCs too — including Snapdragon-powered Copilot+ machines — using the same wsl --install command as any other PC. The part that matters is which distro you pick: Microsoft's official distros in the Store publish ARM64 builds, so install one of those rather than forcing an x86-only image, which will run far slower under emulation, if it runs at all.
Running WSL inside a virtual machine
If you're setting up WSL inside a VM — testing a Windows VM on a Mac, or working inside a cloud desktop — you need nested virtualization turned on for the outer VM itself, in addition to the BIOS setting on the physical host underneath it. That's a separate switch, usually set in the hypervisor's own VM configuration, and it's the single most common reason WSL fails inside a VM even though the identical setup works fine on the bare-metal machine.
Using WSL over Remote Desktop
Command-line work inside WSL behaves normally over an RDP session. Where people run into trouble is graphical Linux apps — a Remote Desktop session handles the display connection differently than sitting at the physical PC, so a graphical Linux app that opens instantly when you're local can lag badly or fail to render at all over RDP.
🙋♂️ Jake's Reality Check
"My cousin remotes into her desktop from a tablet when she's traveling. If she needed a Linux tool for something, would that even work?"
Command-line, yes, without a second thought. Graphical apps are the part I'd have her test before she actually needs it for a client, not discover mid-call that it doesn't render properly over RDP.
The adjacent task: pairing WSL with your editor and Docker
Visual Studio Code's Remote-WSL connection
If you write or edit code, Visual Studio Code can open a project folder that lives inside your Linux distro directly, running its extensions inside WSL rather than on the Windows side. This matters because a project meant to eventually run on a Linux server — which describes most web and backend projects — behaves more predictably when the editor itself is working inside that same Linux environment, instead of editing files across the Windows/Linux boundary described earlier. From inside your WSL terminal, type code . in the project folder, and VS Code opens already connected to that distro.
Docker Desktop's WSL2 backend
Docker Desktop on Windows uses WSL2 as its engine by default rather than a separate, heavier virtual machine, which is why installing WSL has quietly become a prerequisite step for setting up Docker instead of a separate, unrelated task. If Docker Desktop refuses to start and complains about WSL, the fix is the same one covered in the error section above — it's failing for the same underlying virtualization reasons, just surfaced through Docker's interface instead of directly through wsl --install.
When WSL isn't the right tool
WSL is the right answer for most "I need Linux commands on my Windows PC" situations. Not all of them.
You only need a handful of Unix commands
Something lighter like Git Bash, which installs alongside Git for Windows, gives you a Bash-style prompt and the common Unix commands without installing a full Linux distro or turning on virtualization at all. If what you actually need is ls, grep, and ssh rather than a genuine Linux environment, that's less overhead for the same result.
You need to test hardware-level behavior, not just software
WSL shares your PC's kernel-level virtualization, but it isn't a substitute for a full virtual machine when you specifically need to test something like boot behavior, driver interactions, or a completely separate network identity. Reach for VirtualBox, VMware, or Hyper-V for that, and save WSL for everyday development and command-line work.
The machine can't turn on virtualization at all
Older hardware, some locked-down corporate laptops, and certain low-end tablets can't enable the virtualization WSL2 needs, and no amount of troubleshooting from the error section above fixes hardware that genuinely doesn't support it. In that specific case, a cloud-based Linux environment reachable over SSH — a free-tier cloud VM, or a browser-based dev environment — gets you the same commands without needing any local virtualization.
Keeping WSL updated and secure
WSL itself — the underlying engine, not your specific Linux distro — gets its own updates separate from Windows Update. Run wsl --update from time to time to pull the latest version. Check what you're currently running with wsl --version.
Your distro's own packages are a separate matter and follow whatever that distribution normally uses — on Ubuntu or Debian, that's the familiar sudo apt update followed by sudo apt upgrade, run from inside the Linux session. Skipping this is one of the more common ways people end up running months-old, unpatched software without realizing it, since nothing on the Windows side reminds you to do it.
Uninstalling and cleanly reinstalling WSL
If a distro is behaving strangely and nothing in the error section above resolves it, the cleanest fix is usually to remove and reinstall just that distro, rather than the whole WSL platform.
1. List what's installed with wsl --list --verbose.
2. Remove the problem distro with wsl --unregister followed by its exact name. This deletes that distro entirely, including any files you saved inside it — back up anything you need first.
3. Reinstall it with wsl --install -d followed by the same name, or reopen the Microsoft Store listing and click Install again.
⚠️ What this actually breaks
wsl --unregister is not a repair command — it's a delete command. Anything living only inside that Linux distro's filesystem is gone once you run it. If you've been keeping project files inside /home/ rather than on your Windows drive, copy them out first.
Frequently asked questions
Do I still need to turn on Developer Mode to use WSL?
No. That requirement is gone. It applied to the original 2016 preview version and has not been necessary for years.
Does WSL work on Windows 10 Home and Windows 11 Home, or only Pro?
It works on Home editions of both. WSL doesn't require Pro-only features like full Hyper-V.
Why does the install keep asking me to enable virtualization?
Because it genuinely isn't on. This is a BIOS/UEFI-level setting (often labeled Intel VT-x or AMD-V), separate from anything inside Windows itself, and WSL2 cannot run without it.
Is WSL the same thing as a virtual machine?
Not quite. It uses lightweight virtualization technology under the hood, but it's designed to feel integrated with Windows — sharing your clipboard, your files, and even your network — rather than behaving like a separate, isolated computer the way a traditional virtual machine does.
Can I install more than one Linux distro at the same time?
Yes. Each one is independent, and you can switch between them freely with wsl or by naming the distro directly, for example wsl -d Debian.
I forgot my Linux username and password — how do I reset it?
From an elevated Windows terminal, run wsl -u root to open your distro as the root user without a password, then run passwd yourusername inside that session to set a new password for your regular account.
Will installing WSL slow down my PC?
Not while it's sitting idle. It uses memory and processing power only while a Linux session is actually running, similar to any other application you have open.
Can antivirus or security software block WSL from installing?
Yes, this happens most often on managed work laptops, where Group Policy or endpoint security software can prevent the Windows features WSL depends on from being enabled, regardless of what you try locally.
Do I need an internet connection to use WSL after it's installed?
Not for basic use. You need internet for the initial install and for updating packages inside your distro, but running commands and working with files you already have doesn't require a connection.
Where are my WSL files actually stored on my hard drive?
Inside a virtual disk file managed by Windows, which you won't normally interact with directly. Access your Linux files through the Linux session itself, or through File Explorer via \\wsl$, rather than hunting for them on your C: drive.
Can I uninstall WSL completely if I decide I don't need it?
Yes. Unregister any distros you've installed with wsl --unregister, then turn off the "Windows Subsystem for Linux" and "Virtual Machine Platform" features through "Turn Windows features on or off" and restart.
Is Windows Subsystem for Linux still called "Beta" today?
No. The "Beta" label belonged to the original 2016 preview feature. It has shipped as a stable, supported part of Windows for years now.
Can I use WSL on an ARM-based Windows PC, like a Copilot+ laptop?
Yes. Install with the same wsl --install command, but choose one of the official ARM64 distro builds from the Store rather than an x86-only image, which will run much slower under emulation.
Does WSL work over Remote Desktop?
Command-line work does, without issue. Graphical Linux apps are the exception — RDP sessions handle the display connection differently than a local session, so test any GUI tool you rely on before you need it remotely.
Do I need Docker Desktop and WSL separately, or does one include the other?
Docker Desktop on Windows uses WSL2 as its backend, so installing WSL is effectively a prerequisite. If Docker Desktop fails with a WSL-related error, treat it as a WSL install problem and use the error section above to fix it.
What if my PC can't turn on virtualization at all?
Some older or locked-down hardware genuinely can't support it, and no troubleshooting step fixes that. In that case, a cloud-based Linux environment reachable over SSH gets you the same commands without needing local virtualization.
Revision note. Originally published November 14, 2016. Rewritten August 16, 2026 for Windows 11 and Windows 10. The original guide covered the Windows 10 Anniversary Update preview of WSL, which required Developer Mode and a separate "Beta" feature toggle — Microsoft has since replaced that whole process with a single install command. If you found your way here still stuck on that old Developer Mode step, take a breath: it isn't you, the ground genuinely shifted under this guide, and the fix now really is faster than it was back then.