Windows 将在新一代 WSL 中提供完整的 Linux 内核支持

阅读数:7964 2019 年 5 月 17 日

近年来,微软令 Linux 开发者社区中的很多用户感到了惊喜。这些惊喜包括在 windows 商店上架诸如 windows 版本的 Bash shell windows10 中原生的 OpenSSH 、甚至 Ubuntu、SUSE Linux 以及 Fedora 之类的产品。如今,微软则计划直接在 windows10 中提供完整的 Linux 内核支持。

微软项目经理 Jack Hammon 在其最新的博文中提到: “从今夏的 Windows insider builds 开始,我们将采用内部定制的 Linux 内核来为 Windows 下的 Linux 子系统提供支持(Windows Subsystem for Linux,WSL)。该内核最初将以 Linux 最新的长期稳定发行版 4.19 为基础,随后再根据新版本的设计进行更新,以确保 WSL 内核能够获取最新版 Linux 的特点和最佳性能。”

这次的 WSL 更新对微软来说是一项重大转变,标志着 Linux 内核首次成为 windows 系统的一部分。该 Linux 内核的整合工作将于今年晚些时候在代号为 19H2 的 windows10 更新中完成,这也意味着,用户将无须再通过手动管理便可获得最新的安全修复以及内核改进。除此之外,新一代的 WSL 将因此拥有更高的处理效率:例如在相同解压任务中,WSL 2 可以实现 20 倍速于 WSL 1,达到 Git clone 大约 5 倍的速度。

而对于开发者而言,此次更新将极大地改进 Windows 下 Linux 子系统的表现。同时,微软于五月 6 号发布了新的 windows 命令行终端,作为访问诸如 PowerShell Cmd 以及 Linux 子系统等开发环境的关键途径。全新的 windows 终端与新一代 WSL 使得 Windows 开发变得更加友好且具有吸引力。

WSL 的转变

“Linux”通常用来指代 Linux 内核以及相关的 GNU 用户空间。相较于初代 WSL1,新版本的 WSL2 也不会提供任何用户空间二进制文件。微软内核将与用户所选择的用户空间直接交互。从 Windows 应用商店可以直接下载安装 WSL,也可以通过创建自定义 Linux 发行版包进行“侧载”。其中,有一个小的初始化脚本是唯一的例外,它被添加到引导过程,以完成 Windows 和 LInux 之间的连接,这使得 Windows 的 Linux 子系统非常具有魔力。

新版 WSL 的内核本身最初将基于 4.19 版本,这是 Linux 最新的长期稳定版本。 内核将在指定新的长期稳定版本时进行重新定位,以确保 WSL 内核始终具有最新的 Linux 优点。

除了来自于 Kernel.org 的 LTS 源,WSL2 中还添加了很多本地补丁。这些补丁通过缩短启动时间,减少内存暂用以及最小化受支持设备集的规模,调整生成的二进制文件,以利于其在 WLS2 中的使用。最终,微软提供了一种小巧、轻量级的内核,这个内核是专门为 WSL2 构建的,它类似于 WSL1 设计中的仿真体系结构的直接替代品。

代码上行

微软聘用了越来越多的 Linux 贡献者,他们将业界领先的 Linux 技术引入公司。 多年来,在 Azure Marktplace 提供的大量发行版中,这些 Linux 开发人员已经使微软能够很好地支持新的平台特性。

Jack Hammon 认为“微软 Linux 的一个重要理念是所有更改都在上游。 这是因为维护下游补丁增加了复杂性,这并不是开源社区的标准做法。在利用 Linux 的过程中,我们承诺成为一个好的社区公民并回馈我们所做的改变。”

但是,在开发期间,必须使用本地修补程序来启用新功能或解决上游问题。 在这些情况下,微软会创建或找到满足产品需求的补丁,然后与社区合作以尽快集成该代码。 为了保护 LTS 分支的稳定性,某些补丁(例如新功能)可能只包含在内核的未来版本中,而不是直接利用后端移植添加到当前的 LTS 版本。

当 WSL 被实际部署时,除了长期稳定源之外,它还包含指向一组补丁的链接。 随着时间的推移,微软希望这个列表会缩小,因为当微软添加新的本地补丁以支持 WSL 的新特性时,补丁使其上行并增长。

安全性

WSL 内核将使用微软一流的 CI / CD 系统构建,并通过 Windows Update 在对用户透明的操作中提供服务。 内核将会与稳定版本的新特性同步更新和修复。 为了确保源的出处,微软本地制作了镜像存储库。 同时通过不断监控 Linux 安全邮件列表,并与多家 CVE 数据库公司合作,以确保微软的内核具有最新的修复和缓解措施。

Linux 的一大优点是其稳定且向后兼容的系统调用接口。 这将使微软能够将 Linux 内核的最新稳定分支发布到所有版本的 WSL2。 Jack Hammon 表示他们将会在建立新 LTS 并对其进行充分验证后对内核进行变基(rebase)。

开源性

为 WSL2 提供的内核将是完全开源的! 随着 WSL2 在 Windows insider builds 的发行,自定义内核的教程将在 Github 上同步发布,以保证开发者有创建自己的 WSL 内核以及提交修改的能力。 同时,微软表示他们将与有兴趣帮助改进上游的开发人员合作。

英文原文链接: Microsoft will ship a full Linux kernel in Windows 10

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论