Last month, Microsoft announced Bash on Ubuntu on Windows which enables native Linux ELF64 binaries to run on Windows via the Windows Subsystem for Linux (WSL). WSL was developed by the Microsoft Windows Kernel team. Since the announcement was made last month, many people were interested in knowing how kernel team build this subsystem. Microsoft recently started a blog post series where they will provide an overview of WSL that will answer the common questions around Windows Subsystem for Linux.
WSL is a collection of components that enables native Linux ELF64 binaries to run on Windows. It contains both user mode and kernel mode components. It is primarily comprised of:
- User mode session manager service that handles the Linux instance life cycle
- Pico provider drivers (lxss.sys, lxcore.sys) that emulate a Linux kernel by translating Linux syscalls
- Pico processes that host the unmodified user mode Linux (e.g. /bin/bash)
It is the space between the user mode Linux binaries and the Windows kernel components where the magic happens. By placing unmodified Linux binaries in Pico processes we enable Linux system calls to be directed into the Windows kernel. The lxss.sys and lxcore.sys drivers translate the Linux system calls into NT APIs and emulate the Linux kernel.
Read the full post here. In the below video Deepu Thomas from Windows team lays down the real scoop behind the Windows Subsystem for Linux.