WSL:我运行的是版本 1 还是版本 2?

K7A*_*AAY 155 windows-subsystem-for-linux

我有适用于 Linux 的 Windows 子系统,但我不知道我有哪个版本,而且很多东西在版本 1 中不起作用。我如何检查我的版本?

K7A*_*AAY 138

  1. 在 Windows 10 命令提示符下,运行ver. 倒数第二个数字组版本是否为18917 或更高版本?如果是这样,您可能有 WSL 2 但尚未验证。继续执行步骤 AB。
    如果您没有看到 Windows 版本 18917 或更高版本,则您使用的是版本 1。
    这说明了操作系统为 Build 16299 时的结果:

    版本 16299

    A. 打开 Windows PowerShell并输入命令wsl -l -v。如果版本 2 安装正确,您将看到版本号。如果您没有看到版本号,或者看到错误消息(谢谢,Cornea Valentin),则您的版本是 1(您可能还会看到版本号“1”,这可能表明您正在运行 v1 - 请参阅在这里)。卸载它然后按照https://scotch.io/bar-talk/trying-the-new-wsl-2-its-fast-windows-subsystem-for-linux重新安装

    B. 在 WSL shell 提示符下,运行unameuname -r。如果内核版本 => 4.19,则为 WSL 版本 2。

为什么这是相关的?

WSL 1是基于微软的Linux兼容内核接口,在 兼容转换层没有Linux内核代码。

WSL 2 使用在轻量级 VM 环境中运行的 Linux 内核进行了重新设计,创新者发现他们可以使用 WSL 2 做更多的事情。

Windows 10 Version 2004(内部版本 19041.153 及更高版本)进一步增强了 WSL2;参见https://devblogs.microsoft.com/commandline/wsl2-will-be-generally-available-in-windows-10-version-2004/https://winaero.com/blog/wsl2-will-ship- with-windows-10-version-2004-with-kernel-updates-via-windows-update/

  • 同样,如果他在以下之后出现任何错误: wsl -l -v 它是 100% wsl 1。 (34认同)
  • 使用 `uname -a` 打印内核版本。 (15认同)
  • 我需要使用 uname -r 来查看内核版本,但内核版本最终是 4.4.0,我很确定这意味着 WSL 1。 (5认同)
  • 对我来说,`wsl -l -v` 会打印使用信息(即不起作用),但 `wsl -l --verbose` 会按预期打印详细列表。`systeminfo.exe` 给了我 `OS Version: 10.0.19041 N/A Build 19041`。 (5认同)
  • 我看到的是 4.4,是大于还是小于 4.19? (2认同)

Jac*_*ack 65

  1. 打开 PowerShell
  2. 检查版本 wsl -l -v
  3. 如果是版本 1,则更新版本 wsl --set-version Ubuntu-20.04 2

请注意,更改正在运行的操作系统的版本将终止它。

如果您无法更新到版本 2,那么您可能不在 WSL 2 内核上。这可以从 Microsoft 下载

  • @Jack,只有一个版本的 ubuntu,18.04,我注意到“wsl --set-version Ubuntu 2”在没有指定版本的情况下对我有用。我怀疑情况总是如此。 (6认同)

Luc*_*uce 8

在我运行的 WSL 版本中,我只需输入即可uname -r得到结果

5.4.72-microsoft-standard-WSL2

所以,我可以说它是 WSL2,所以你可以尝试运行uname -r并检查。