今天早些时候,我们写道,微软将为 Linux 的 Windows 子系统添加一些重要的新功能,包括对 Docker 容器的本机支持。事实证明,那不是它的一半。
当前适用于 Linux 的 Windows 子系统使用 Microsoft 编写的内核组件,该组件提供与 Linux 内核相同的内核 API,但由 Microsoft 从头开始编写。本质上,它从 Linux API 转换为 Windows NT 内核 API。这工作得很好,但当前的子系统有一些缺点:无法使用 Linux 驱动程序,特别是文件系统驱动程序。它的文件系统性能位于 Windows 自己的 NTFS 之上,通常比真正的 Linux 内核慢 20 倍。它也是一个相对较旧的内核版本;它大约提供了 Linux 4.4 提供的一组 API,该 API 于 2016 年发布。一些 API 根本没有实现,而其他 API 仅部分实现以满足特定应用程序的需求。
一切都随着适用于 Linux 2 的 Windows 子系统而改变。WSL 2 将在轻量级虚拟机中运行完整的 Linux 内核,而不是在 NT 内核上模拟 Linux 内核 API。该内核将针对此特定用例进行精简和定制,并提供精简的硬件支持(因为它将遵循主机 Windows 操作系统)和更快的启动。
Linux 内核是 GPL 开源的;GPL 许可要求对代码所做的任何修改必须在 GPL 许可下发布和提供。微软将适当遵守这一点,发布它对内核所做的补丁和修改。WSL 2 也将使用与当前 WSL 类似的拆分:内核组件将随 Windows 一起提供,而各种 Linux 发行版提供的“个性”可以从 Microsoft Store 安装。
通过使用 Linux 内核本身,微软可以免费获得 Linux 的所有功能。这就是 WSL 2 将支持 Docker 容器的原因:所有底层基础设施,如 cgroups,都已经在 Linux 内核中,微软不需要自己实现这些功能。嵌入式内核将由 Windows 更新提供服务和更新。
这也大大提高了性能。文件系统繁重的操作(例如提取 tarball)最多可以快 20 倍;其他活动(例如在 Git 中克隆源代码存储库)可能会快五倍。
WSL 已经受到开发人员的热烈欢迎,因为它提供了类似 Linux 的可靠开发环境。WSL 2 将把它提升到一个新的水平,并且几乎消除了 WSL 1 的兼容性问题。
WSL 2 的第一个预览版将于 6 月发布。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!