Microsoft Windows Subsystem for Linux is a series of Microsoft components that allow native Linux 64-bit Executable and Linkable Format (ELF64) binaries to run on the Windows kernel in the Windows 10 operating system (OS).
After enabling the Windows Subsystem for Linux feature in Windows 10, the Linux bash can be run to install the Ubuntu user-mode image that runs on top of the Windows kernel layer that allows ELF64 binaries to operate in Windows. After installation, users can run other files from the Ubuntu package repository; Linux command-line utilities such as grep, sed, and awk; navigate the Linux file system; and execute scripts using command-line interface (CLI) utilities.
Windows Subsystem for Linux includes a user-mode session manager service to handle the Linux instance, minimized (Pico) processes to handle Linux system calls and Pico drivers to emulate the Linux kernel. As a whole, this architecture enables Linux system calls to be passed into and handled by the Windows kernel.
Windows Subsystem for Linux is primarily for Linux developers operating in a Windows environment. For example, web developers often use Linux and other open-source tools but have limited access to full Linux systems for development and experimentation. Windows Subsystem for Linux lets developers use common Linux tools and advanced development languages, such as Ruby and Python, to operate through Windows.
While Linux instances can run in Windows inside a virtual machine (VM), Windows Subsystem for Linux offers two advantages. First, it requires less overhead computing resources -- processor, memory and storage -- than a full VM. Second, Windows Subsystem for Linux allows both Windows and Linux environments to run simultaneously, so developers can use Windows applications and Linux utilities on the same files if needed.
Windows Subsystem for Linux currently has several limitations. First, it does not support all Linux applications; it is intended to provide a tool to handle bash and major Linux command-line utilities. Windows Subsystem for Linux does not support Linux GUI environments such as Gnome or K Desktop Environment. Windows Subsystem for Linux only supports the Ubuntu Linux distribution at this time. In addition, Windows Subsystem for Linux is only available for Windows 10 and will not be available in Windows Server versions. While Windows Subsystem for Linux can run some Linux server applications, such as Redis as a database, it is not intended to host Linux server applications.
Windows Subsystem for Linux employs two file systems to support Linux file conventions while providing interoperability with Windows files. A file system called VolFs supports Linux file conventions including Linux permissions, links to other files, names with characters not normally accepted under Windows and the Linux directory structure. However, VolFs does not support interoperability between its files and Windows applications, but another file system called DriveFs provides that interoperability, ensuring legal Windows file names, enforcing Windows security and supporting case-sensitive file names. The directory structure of DriveFs allows users to apply either Windows or Linux tools to files at the same time.