File System Improvements To the Windows Subsystem for Linux (microsoft.com)
An anonymous reader shares a new article published on MSDN: In the latest Windows Insider build, the Windows Subsystem for Linux (WSL) now allows you to manually mount Windows drives using the DrvFs file system. Previously, WSL would automatically mount all fixed NTFS drives when you launch Bash, but there was no support for mounting additional storage like removable drives or network locations. Now, not only can you manually mount any drives on your system, we've also added support for other file systems such as FAT, as well as mounting network locations. This enables you to access any drive, including removable USB sticks or CDs, and any network location you can reach in Windows all from within WSL.
It's an Ubuntu subsystem on Windows 10 that allows you to run (some) ELF binaries directly from within the Windows environment.
Save Maine's economy: write stuff down. All comments are exclusively my own, not my employer.
It's basically an Ubuntu (?) distribution that runs within Windows - not as an emulation / WM but as a subsystem that converts the Linux ABI into Windows calls. A very large chunk of the user space Linux stuff will run in Windows now.
You can now use any Linux distro as a subsystem. All-in-all, it's pretty great.
Brought to you by Carl's Junior.
Indeed that's what it is.
WSL is effectively "GNU/kWindows" where Linux ELF binaries can run on the Windows kernel using the Linux kernel personality that translates Linux calls into Windows NT Kernel calls and where security, filesystems, etc are handled by the Windows kernel as expected.
There's no linux code actually in the system (other than perhaps headers translating the syscall numbers into actual system calls). Likewise, networking is done via Windows NDIS networking, as well as all the other kernel services. Several times I had to sit down and figure out what was actually happening - I had to add an /etc/hosts entry and i needed to figure out how it worked. (Hint: WSL is a kernel layer, so what happens is glibc will look at /etc/hosts, so I should edit the ubuntu /etc/hosts, not the Windows one. The Windows one is used by the Win32 resolver, while the Ubuntu one is used by glibc, and the tools I was using use glibc).
Because you can't fork() from win32. The cygwin1b.dll implements emulated fork functionality but it is slow as shit after decades. By creating a native subsystem, you can fork/exec at the same speed of CreateProcess with the added benefit of being fully binary compatible.
There was an effort to add Linux ABI support on top of cygwin years ago, it worked for linux32 applications, it was called LINE.
A real subsystem is better in every way.