Windows Subsystem for Linux (WSL) has been out of beta for some time and for those who don’t know allows you to run several flavours on Linux (as of writing Ubuntu, openSUSE leap/Exterprise, Debian and Kali) as a subsystem within Windows 10. For my day to day it’s quickly stopped my dependence on Putty; which for a long time has felt like a clumsy way to manage *.nix servers but it has also become so much more. What’s more it allows the use of significantly more secure key exchange methods than what Putty (and other Windows ssh clients) offer.
What’s more is that it isn’t just a sandboxed Linux virtual machine that wishes it could do more but an actually fluid (mostly) part of the Windows OS. That means you can install Linux packages that interact with your machine and PowerShell scripts that can call Linux processes all on a single box. What’s more it allows you to kick some of those long lurking pain points of running windows.
Case in point a user of mine today complained he couldn’t delete a file; the file name was well in excess of the usual character limit of Windows, normally this would mean running a number of commands to identify a short name or use of a third-party tool. The former didn’t work in this scenario. I then thought to use my faithful WSL Ubuntu subsystem knowing that this isn’t a limitation for Ubuntu and what do you know. With no special commands I was able to erase the file saving me a huge amount of time. Sure, it’s not revolutionary but it’s one less limitation to deal with.
And that’s before the obvious benefits WSL brings to DevOps and mixed OS system scenarios such as webapp deployments that use AD or Azure where a single machine can orchestrate the entire stack. Of course the reverse is now true but PowerShell core is still very much work in progress for a number of key components that someone support majority Microsoft systems would find painful.
WSL however is not perfect and is in no way a replacement for a virtual machine or a dedicated machine, it lacks a full kernel and access to a number of raw networking components. For example Kali is available on WSL but nmap doesn’t work as it can’t access the raw information it needs. The moment I realised this I scrapped my Kali WSL immediately and went back to my virtual machine.
Ultimately the usefulness of WSL will depend on you and your mileage will vary. I personally think you need to view WSL as an enhancement to windows that allows you to more efficiently manage full blown Linux servers or to quickly write/run bash scripts. It is a quality of life improvement and step in the right direction for Microsoft.