Windows Subsystem for Linux (WSL) 现已开源
The Windows Subsystem for Linux is now open source
发布于 Microsoft Build,2025年5月19日 作者:Pierre Boulay
今天,我们非常激动地宣布 Windows Subsystem for Linux 的开源发布。这是经过多年努力的成果,也为在 Microsoft/WSL
仓库中提出的第一个 issue 画上了圆满的句号:Will this be Open Source? · Issue #1 · microsoft/WSL。
这意味着驱动 WSL 的代码现在可以在 GitHub 上通过 Microsoft/WSL 获取,并向社区开源!您可以下载 WSL 并从源代码构建它,添加新的修复和功能,并参与 WSL 的积极开发。
WSL 组件概述
WSL 由一组发行版组件构成。一些在 Windows 中运行,一些在 WSL 2 虚拟机中运行。以下是 WSL 架构的概述:
WSL 的代码可以分为以下几个主要领域:
- 与 WSL 交互的入口点命令行可执行文件
- wsl.exe, wslconfig.exe 和 wslg.exe
- 启动 WSL VM,启动发行版,挂载文件访问共享等的 WSL 服务
- wslservice.exe
- Linux init 和守护进程,在 Linux 中运行以提供 WSL 功能的二进制文件
- 用于启动的 init,用于网络的 gns,用于端口转发的 localhost 等。
- 使用 WSL 的 plan9 服务器实现将 Linux 文件共享到 Windows
- plan9
访问 https://wsl.dev 以了解有关每个组件的更多信息。
这是对已经开源的 WSL 组件的补充:
- microsoft/wslg: Enabling the Windows Subsystem for Linux to include support for Wayland and X server related scenarios
- microsoft/WSL2-Linux-Kernel: The source for the Linux kernel used in Windows Subsystem for Linux 2 (WSL2)
以下组件仍然是 Windows 镜像的一部分,目前尚未开源:
- Lxcore.sys,驱动 WSL 1 的内核端驱动程序
- P9rdr.sys 和 p9np.dll,运行“\\wsl.localhost”文件系统重定向(从 Windows 到 Linux)
为什么现在开源?一点历史…
WSL 最初是在 2016 年的 BUILD 大会上宣布的,并首次随 Windows 10 周年更新一起发布。
当时,WSL 基于 pico 进程提供程序 lxcore.sys,该驱动程序使 Windows 能够本地运行 ELF 可执行文件,并在 Windows 内核中实现 Linux 系统调用。这最终成为了我们今天所知的“WSL 1”,WSL 仍然支持它。
随着时间的推移,越来越明显的是,提供与原生 Linux 最佳兼容性的最佳方法是依赖 Linux 内核本身。WSL 2 由此诞生,并于 2019 年首次宣布。
随着 WSL 背后的社区不断壮大,WSL 获得了更多功能,例如 GPU 支持、图形应用程序支持(通过 wslg)以及对 systemd 的支持。
最终,越来越明显的是,为了跟上不断增长的社区和功能请求,WSL 必须更快地发展并与 Windows 分开发布。这就是为什么我们在 2021 年将 WSL 与 Windows 代码库分离,并将其移动到自己的代码库中。这个新的 WSL 首先作为版本 0.47.1 发布到 Microsoft Store,于 2021 年 7 月发布。当时,仅支持 Windows 11,并且该软件包被标记为预览版,仅推荐给想要体验最新和最棒的 WSL 的用户。
我们继续开发这个新的“WSL 软件包”,直到它准备好普遍可用。这种情况发生在 2022 年 11 月,WSL 1.0.0 添加了对 Windows 10 的支持,并且是这个新的 WSL 的第一个“稳定”版本。
从那里开始,我们不断改进 WSL,目标是让所有用户完全过渡到这个新的 WSL 软件包,并远离随 Windows 附带的 WSL 组件。Windows 11 24H2 是第一个将用户从“内置”WSL 迁移到“新”WSL 软件包的 Windows 版本。我们在 Windows 镜像中保留了 wsl.exe,因此它可以按需下载最新的软件包,以使过渡更加容易。
随着我们不断改进 WSL,我们最终达到了另一个里程碑:WSL 2.0.0(计算机科学中最难的三个问题是什么?差一错误和命名!)。
WSL 2.0.0 引入了重大改进,例如镜像网络、DNS 隧道、session 0 支持、代理支持、防火墙支持等。
这就是我们今天仍在构建的里程碑!在撰写本文时,自 4 年前的 0.47.1 以来,WSL 2.5.7 是我们九页 GitHub 版本中最新的可用版本!
WSL 背后的社区
多年来,我们非常幸运能够拥有一个强大的社区,从第一天起就支持 WSL。我们很幸运地有很多人分享他们的知识,并花费无数的时间来帮助追踪错误,找到实现新功能的最佳方法并改进 WSL。
如果没有社区,WSL 永远不可能成为今天的样子。即使无法访问 WSL 的源代码,人们也能够做出重大贡献,从而使 WSL 成为现在的样子。
这就是为什么我们今天非常激动地开源 WSL。我们已经看到社区在无法访问源代码的情况下为 WSL 贡献了多少力量,我们迫不及待地想看看现在社区可以直接为该项目贡献代码后,WSL 将如何发展。
贡献 WSL
您是否有兴趣了解 WSL 的工作原理?您想了解特定功能的工作原理或进行更改吗?访问 microsoft/WSL 以了解更多信息!