Windows Subsystem for Linux允许用户在Windows 10系统中安装和运行Linux发行版。Windows Subsystem for Linux 2 (WSL2)即将在2020年5月发布的更新(Windows 10 2004)中发布,其中引入了一些新的特征和性能提升。
WSL version 1 (WSL1)使用了兼容Linux的 kernel,将Linux系统调用翻译使得其可以与window NT kernel进行通信。但这降低了其运行的性能,并使得其很难运行特定的Linux应用。奇热在即将发布的Windows 10 version 2004版本中,微软测试了WSL的一些新特征,使用内置的Linux kernel和全部系统调用的兼容性来运行更多的Linux应用。
新变化
微软称,WSL 2中包含一个新的架构,修改了Linux二进制文件与Windows和硬件交互的方式。更新的WSL可以提供给用户与WSL 1一样的体验。
Real Linux kernel
Windows 10 version 2004中引入了一个真实的Linux kernel,使得系统全部的系统调用更加兼容。这也是首次,Linux kernel安装在Windows系统中。Kernel是基于kernel.org的开源代码的,并针对WSL 2做了大小和性能的优化。
微软称之后会通过Windows更新来更新Linux kernel,也就是说无需手动下载软件或工具来更新Linux的安全特征。微软称WSL 2使用了虚拟技术来在一个轻量级的虚拟机中运行Linux kernel,但是真实体验和传统虚拟机要好一些。WSL 2没有传统虚拟机的资源不足和性能问题。
- 新的虚拟化技术也可以让Windows和Linux更好的融合,启动速度也更快,无需用户进行虚拟机配置或管理。
WSL 2比WSL 1更快
在WSL 2中,用户会感受到git clone, npm install, apt update这种文件密集型的操作会更快。微软称,与WSL 1相比,WSL 2解压压缩文件的速率要快20倍;使用git clone, npm install, cmake的速度也提升了2-5倍。
在Windows 10 version 2004中,Linux二进制文件使用了系统调用执行函数,比如访问文件、请求内容、创建进程等。
有了Linux kernel的支持,WSL 2可以访问所有兼容的系统调用,使得更多的Linux 应用可以在容器中运行。
其他改进
WSL中还修复了一些安全问题:
· Unicode字符处理问题;
· wsl.exe中止而instance idle timers没有取消的问题;
· 检查了\\wsl$的大小写;
· 修复localhost relay [GH 4340];
· 更新Linux kernel 到4.19.81;
· 修改/dev/net/tun的默认权限为 0666 [GH 4629];
· 在启动进程前清除signal mask;
· 在symlink非交互时处理/etc/resolv.conf symlink的创建;
· 使用内存cgroup 来限制install和conversion操作的内存数量[GH 4669];
· 当Windows Subsystem for Linux可选组件未启动时,用wsl.exe来改善特征;
· 如果WSL可选组件未安装,修改wsl.exe未打印帮助文本;
· 修复创建实例时的竞争条件;
· 创建含有所有命令行功能的wslclient.dll;
· 在LxssManagerUser服务停止时防止奔溃;
· 修复当distroName参数为Null时,wslapi.dll失败的问题。