Linux-based operating systems like Ubuntu and Debian may be standalone operating systems. But thanks to an optional Windows 10 feature called Windows Subsystem for Linux, it’s been possible to install them and run them from within a Windows environment without rebooting and without installing a virtual machine.
Out of the box, all you get is a command-line interface. But that still makes the ability to run Linux pretty handy for the audience Microsoft is targeting: developers and power users that prefer a Bash terminal and GNU/Linux tools to Windows command line tools.
Installing a GNU/Linux distribution like Ubuntu got a lot easier when Microsoft started adding them to the Microsoft Store, starting with Ubuntu, OpenSUSE and SUSE Enterprise Linux.
This week Kali Linux joined those operating systems in the Microsoft Store. And today Debian Linux made its debut.
That brings the total number of GNU/Linux distributions in the Microsoft Store to 5… so far. And that’s a sentence I never thought I’d be writing a few years ago (although to be fair, a few years ago the Microsoft Store was called the Windows Store, and a few years before that, it didn’t exist).
Debian is one of the most popular GNU/Linux distributions and it has a reputation for stability. Ubuntu is actually based on Debian, so if you’re familiar with Ubuntu commands, you should be able to comfortable navigate a Debian terminal.
It’s a free and open source operating system, and while you would usually run it with a desktop environment such as GNOME or KDE, the version available in the Windows Store is command line-only, just like all other Linux distros available for the Windows Subsystem for Linux (although some folks have found ways to enable a display server for a graphical user interface and Linux apps that have a GUI).
And one of the fun things about the Windows Subsystem for Linux is that it allows you to install and run multiple Linux distros simultaneously. The screenshot above shows Ubuntu and Debian running in separate windows on my Windows 10 PC.
Here are all the GNU/Linux distros available from the Microsoft Store so far (as of March 6th, 2018):
How good is the WSL terminal emulation? That would be the major holdup for me. Does it support true color? Does it support OSC 52 clipboard commands?
If for any reason WSL’s terminal emulator is insufficient, then you can just run a Linux terminal emulator (xterm, gnome-terminal, …).
Thanks, I didn’t realize graphical programs would be an option.
They’re not… at least not without a bit of work. By default, WSL only supports command-line tools.
Indeed: it’s not supported by default, but it’s not much work. You have to install e.g. vcxsrv (just click “next” in the installer, done), launch it, and type “export DISPLAY=:0” (without quotes) in a WSL terminal. Then you can launch graphical programs.
Do serial ports work under WSL. Both USB and built-in serial ports (ie. RS-232 ports)? Can other USB devices be used from WSL (ie. JTAG debuggers, Wi-Fi/cellular modems if I don’t want Windows to use it directly, USB storage drives, YubiKey, etc.)?
Well, I found MS’ feature request page: https://wpdev.uservoice.com/forums/266908-command-prompt-console-windows-subsystem-for-l/
Serial ports are now supported including USB serial adapters. USB storage devices seem to be supported. Other USB devices are not supported but there’s a libusb request people can up vote.
Anyway, looking through the list, there’re still enough things that aren’t supported for me to still use a Linux VM or dual boot. Nice effort on MS’ part so far though.
How much interaction is there between the Linux distro and Windows? Are they isolated from each other? Can you run/launch Windows applications from Linux? Do hardware querying Linux tools work (smartmontools, lspci, lscpu, dmidecode, etc.)? Is Linux installed on some emulated file system (ext4?) and are there file I/O slowdowns?
Phoronix has ran some benchmarks with WSL, and the ones limited by I/Os suffer a lot compared to the native distributions. But it may improve over time.
> “How much interaction is there between the Linux distro and Windows? Are they isolated from each other? ”
Depends on what you call interaction and what you call isolated 🙂
> “Can you run/launch Windows applications from Linux?”
Yes, to launch a Windows application just start the .exe. It probably must be on the Windows filesystem though (see below).
Note that you can just “apt-get install” Linux applications.
For running Linux programs with a GUI I recommend to install vcxsrv as X server (that’s a Windows program).
> “Do hardware querying Linux tools work (smartmontools, lspci, lscpu, dmidecode, etc.)?”
cat /proc/cpuinfo does work, the rest I haven’t tested.
> “Is Linux installed on some emulated file system (ext4?)”
It uses a special filesystem that is backed by NTFS (at least that’s what I read) and provides support for the special files (fifos, /dev-files) and permissions (user/group/other read/write/execute) that you need for a proper Linux, and another special filesystem that allows you to read the Windows filesystem. So it’s most practical to just store your files on the Windows filesystem such that both Linux and Windows can access it.
> “and are there file I/O slowdowns?”
Some things are slower (accessing a huger repository on the windows filesystem is noticable slower). Usually it feels quite snappy, it’s not emulation and also not virtualization after all.
This is just awesome. I know it’s not for everyone, but for me WSL has been great. I no longer need a VM. In a VM I spent 99% of my time in the command line anyway.
I hope that more distributions coming to Windows 10 means that WSL is doing well and hope they keep improving it.
I’ve always used Linux as a secondary OS. It’s a bit strange to think that it’s Microsoft that got me to embrace Linux as something I use and love everyday.