本指南将比较 WSL 1 和 WSL 2,包括使用 WSL 1 而不是 WSL 2 的例外情况。 WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。 WSL 2 是安装 Linux 发行版时的当前默认版本,它使用最新最好的虚拟化技术在轻量级实用工具虚拟机 (VM) 内运行 Linux 内核。 WSL2 将 Linux 发行版作为托管 VM 内的隔离容器运行。 如果你的发行版当前运行的是 WSL 1,而你想要更新到 WSL 2,请参阅从 WSL 1 更新到 WSL 2。
比较功能
功能
WSL 1
WSL 2
Windows 和 Linux 之间的集成
✅
✅
启动时间短
✅
✅
与传统虚拟机相比,占用的资源量少
✅
✅
可以与当前版本的 VMware 和 VirtualBox 一起运行
✅
❌
托管 VM
❌
✅
完整的 Linux 内核
❌
✅
完全的系统调用兼容性
❌
✅
跨 OS 文件系统的性能
✅
❌
systemd 支持
❌
✅
IPv6 支持
✅
✅
从上面的比较表中可以看出,WSL 2 架构在几个方面优于 WSL 1,但跨 OS 文件系统的性能除外,对于这种情况,可通过将项目文件存储在与处理项目时运行的工具相同的操作系统上进行处理。
WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。 通过按 Windows 徽标键 + R,检查你的 Windows 版本,然后键入 winver,选择“确定”。 (或者在 Windows 命令提示符下输入 ver 命令)。 你可能需要更新到最新的 Windows 版本。 低于 14393 的版本完全不支持 WSL。
传统的 VM 体验可能启动速度慢,是独立的,消耗大量资源,需要你花费时间进行管理。 WSL 2 没有这些属性。
WSL 2 有 WSL 1 的优点,包括 Windows 和 Linux 之间的无缝集成,启动时间短,资源占用量少,并且无需 VM 配置或管理。 虽然 WSL 2 确实使用 VM,但 VM 是在幕后管理和运行的,因此你将具有与 WSL 1 相同的用户体验。
完整的 Linux 内核
WSL 2 中的 Linux 内核是 Microsoft 根据最新的稳定版分支(基于 kernel.org 上提供的源代码)构建的。此内核已专门针对 WSL 2 进行了调整,针对大小和性能进行了优化,以便在 Windows 上提供良好的 Linux 体验。 内核将由 Windows 更新提供服务,这意味着你将获得最新的安全修补程序和内核改进功能,而无需自行管理它。
如果依赖 Linux 发行版在与主机相同的网络中拥有 IP 地址,则可能需要设置一种替代方法来运行 WSL 2。 WSL 2 作为 hyper-v 虚拟机运行。 这是对 WSL 1 中使用的桥接网络适配器的更改,这意味着 WSL 2 使用网络地址转换 (NAT) 服务作为其虚拟网络,而不是将其桥接到主机网络接口卡 (NIC),从而生成唯一的将在重启时更改的 IP 地址。 要详细了解将 WSL 2 服务的 TCP 端口转发到主机 OS 的问题和缓解措施,请参阅 WSL GitHub 存储库问题 4150,NIC 桥接模式(TCP 缓解措施)。
备注
请考虑尝试 VS Code 远程 WSL 扩展,以便使你不仅能够使用 Linux 命令行工具将项目文件存储在 Linux 文件系统上,而且还可以使用 Windows 上的 VS Code 在 Internet 浏览器中创作、编辑、调试或运行项目,而不会造成任何与跨 Linux 和 Windows 文件系统工作相关联的性能下降。 了解详细信息。
Microsoft Store 中的 WSL
WSL 已将更新功能从 Windows OS 映像提取到一个包中,该包可通过 Microsoft Store 获得。 这意味着一旦更新和服务可用就会进行快速更新并提供服务,而无需等待 Windows 操作系统的更新。
WSL 最初作为可选组件包含在 Windows 操作系统中,需要启用该组件才能安装 Linux 发行版。 Microsoft Store 中的 WSL 具有相同的用户体验,并且是相同的产品,但作为商店包而不是整个 OS 更新接收更新和服务。 从 Windows 版本 19044 或更高版本开始,运行 wsl.exe --install 命令将从 Microsoft Store 安装 WSL 服务更新。 (请参阅宣布推出此更新的博客文章)。 如果你已经在使用 WSL,则可以更新以确保通过运行 wsl.exe --update 从商店接收最新的 WSL 功能和服务。