No VM required: How to instantly 'spin-up' your favorite Linux distro+GNU in Windows 10
Install a Linux/GNU distro in minutes and run it instantly in Windows without a Virtual Machine using the new Windows Subsystem for Linux feature of Windows 10
Having ping-ponged between OSX, FreeBSD, and Windows (most recently from OSX to Windows) over the years, I've repeatedly found myself on Windows without the familiar set of GNU software tools I rely on in other operating systems.
In years past this called for installing Cygwin to get some GNU and other *nix tools emulated in Windows or installing a hypervisor like VirtualBox to install and run a GNU/Linux distro.
A new feature called Windows Subsystem for Linux introduced in Windows 10 (64-bit versions) actually allows for unmodified Linux binaries to be run directly in Windows.
The process to install a GNU/Linux distro is pretty simple.
- Head to the old style Windows Control Panel > Programs > Turn Windows Features On Or Off. Enable the “Windows Subsystem for Linux” option and restart your computer.
- Head to the Windows Store, search for 'Linux', click Get Apps and choose your favorite distro.
- use the Start Menu or Windows search to locate your distro to launch it!
Now you can investigate a scary domain with the 'whois' utility right from Windows 10 within seconds!
A few more details...
This is enabled via a layer within the Windows kernel that contains 'pico providers drivers' that translate Linux kernel system calls into WindowsNT kernel system calls on behalf of 'pico-processes' running unmodified Linux binaries. A lot of this recent work was enabled due to the interesting historical detail that WindowsNT in the 80s/90s was designed to decouple kernel implementation details via APIs for various subsystems including POSIX.
Aside from quickly calling up GNU tools within Windows 10, this feature can eventually allow developers to use and develop *nix tools and programs directly within Windows as so many OSX users are accustomed to. There are some limitations still and if you are doing I/O heavy tasks, be prepared to wait a while.