Whenever I make a foray into using LInux, I tend to dual boot or install Linux on an older machine. When dual-booting, I really couldn't be bothered to restart just to switch the OS. Everytime I found out something I could do in Linux better than on Windows, I'd either skip it or go find my Linux laptop, with all the file management issues that ensue around using two machines.
Then I found out about WSL and setting it up properly. I haven't had to dual-boot on my main Windows machine since.
WSL stands for Windows Subsystem for Linux, and it's built into Windows 10 and 11. It lets you run a real Linux environment with command line, tools, and apps without rebooting or using a separate machine. You simply open a terminal, type wsl and you're using Linux. Close the window and you're back in Windows, and, in fact, you never left it. Keep that streaming app running in Windows and do the Linux task at the same time.
The second version, WSL2, is pretty great. It runs an actual Linux kernel inside a lightweight background process, which gives nearly full compatibility for real software and workflows. The original WSL1 was more of a compatibility layer that left many Linux apps unable to run.
Many articles about WSL are written for developers, with bits about Docker containers, Node version managers, and git workflows. If you're the kind of person who clicks away when you start reading that, I get it. I'm not a developer, but do find WSL useful, like when I needed to convert an entire folder of FLAC files to MP3s with a single ffmpeg command. Sure, I could have downloaded the app, run it in Windows, and gotten the same result, but WSL let me install with a simple CLI command and execute.
This Windows-on-Linux tool isn’t as good as everyone says it is
There's potential, but it's not as good as you think.
Why run Windows Subsystem for Linux
Reasons beyond coding
Most articles like this assume you know why you want to use Linux and that you just need the steps to install. But if you've never had a reason to care about Linux before, here's what actually matters when you have WSL running alongside Windows.
Your software tool is better on Linux: Two examples, yt-dlp and exiftool, apps that let you download video from the web and a metadata tool, respectively, are much easier to use on Linux. The installation of yt-dlp on Windows is notoriously complicated, while exiftool is easier to install and run on Linux.
- File management is better on Linux: command tools like rsync, find, and grep are more powerful than their Windows equivalents for bulk file work, like renaming thousands of files, searching inside documents, or cleaning up messy folder structures. WSL lets you use them without leaving your Windows machine.
- Playing with Linux is easier without a restart: dual booting or even buying a second machine to run Linux can be a big ask just to mess around. WSL lets you install packages, run commands, and learn the shell environment without any rsick to your Windows setup. If you don't like it, just uninstall the distro and move on.
- You can run automated tasks or scripts: bash scripts and cron jobs (Linux's task scheduler tool) can be simpler and more flexible than Windows Task Scheduler for some jobs like nightly backups, auto-organizing downloads, or batch-converting files. You can run these elegantly in the background while using Windows for everything else.
- You can use AI and machine learning tools locally: industry AI tools, models, frameworks, and libraries are mainly available on Linux, which means the newest, most experimental tools often arrive on Linux first or only. If you have an Nvidia GPU, WSL2's GPU pass-through means you don't need a separate Linux machine to use them. Running a local AI model on your Windows machine via WSL2 is a realistic option for non-developers, not just researchers.
What WSL2 actually is
It's not what you think
If you assumed that WSL2 is like the first version, translating Linux commands into something Windows understands, you'd be wrong (that was WSL1). This second version uses a lightweight virtual machine that runs a real Linux kernel so it can provide full Linus system call compatibility. That means it can run virtually any Linux software a native machine can, including databases and background services. Here are the key features worth knowing about.
WSLg allows Linux apps with a graphical interface to open right on the Windows desktop, and installed Linux GUI apps show up in the Start menu. You can pin them to the taskbar, they share clipboards and Alt+Tab behavior, and just run in their own windows alongside your main PC apps. This changes the way it all feels, which is important to those of us who like a GUI now and then.
WLS2 can now run software in the background while you use Windows as per usual. Think local web server for testing your site or something like a database. You start them once, and they just run, just like some Windows apps might run in the system tray.
Windows and Linux now share the same IP address, making local services like a web server running on localhost accessible on either side of the OS divide. The direct GPU pass-through lets Linux workloads like PyTorch and TensorFlow to run with near-native performance, which is useful when you run local AI tools. Plus, WSL launches in under two seconds and doesn't make you wait for a boot sequence (or key press to bring up the boot loader), which pays off if you have to switch back and forth a lot. That's even faster than, say, a traditional virtual machine.
Microsoft released the majority of WSL as open source in May 2025, too, which matches the whole Linux vibe.
Getting WSL set up
One command and a reboot
You can install everything you need to run WSL with a single command. Simply open PowerShell in administrator mode (right click and choose "Run as administrator" in the Start menu, then enter wsl --install. Restart your machine when done.
And that's it for most Windows 10 and Windows 11 users. The command enables all the required fatures, downloads the WSL2 kernel, and installs Ubuntu as the default Linux distro. If you're a beginner, Ubuntu has wide software support and a large community for when you get stuck.
If you want to see all the available options, run wsl --list --online and you'll find Arch Linux, Kali Linux, Debian, AlmaLinux, and more.
Once installed, create a Linux username and password. It doesn't need to match your Windows login, and the password won't show as you type; that's typical Linux behavior, so don't worry. Run sudo apt update && sudo apt upgrade to make sure everything is up to date, and then Install Windows Terminal from the Microsoft Store if you don't have it already. Your Linux distro will show up as a profile there, with no extra configuration needed. Running Linux and Windows side by side in split panes in the same window is pretty exciting.
Windows Terminal
The Windows Terminal is a modern, fast, efficient, powerful, and productive terminal application for users of command-line tools and shells like Command Prompt, PowerShell, and WSL. Its main features include multiple tabs, panes, Unicode and UTF-8 character support, a GPU accelerated text rendering engine, and custom themes, styles, and configurations. This is an open source project and we welcome community participation.
Day to day
A few tips before you start
Keep your working files inside your Linux Home folder (~/) and not on your Windows C: drive. Accessing files across the WSL/WIndows boundary can be slower. Do your work in Linux, then copy results back to Windows when you're done.
When you're in the WSL terminal, explorer.exe . opens your current Linux folder directly in Windows File Explorer. You can drag files in and out like any other folder.
Installing a GUI Linux app is easy; just use sudo apt install [appname], then launch from the terminal.
If WSL starts using too much RAM, create a .wslconfig file in your Windows user folder and set memory=8GB (or whatever amount makes sense) to put a cap on it.
Easier and more useful than I thought
I'm not running two computers or deciding which OS to use all the time, most of the time I work on macOS and Windows. Now I'm doing the few Linux things in a Windows Terminal tab while everything else I use on Windows is right there. It took all of 10 minutes to set up and maybe another hour to get comfortable with it, but I'm glad I did it. I thought it would be extra complicated, but it turns out it wasn't.