WSL 中有哪个 Linux 内核?

man*_*ans 20 linux kernel ubuntu windows-subsystem-for-linux wsl2

我使用 Ubuntu 22.04 安装了 WSL 2。

当我尝试在 PowerShell 中检查 WSL 内核时,得到以下结果:

PS C:\Users\user> wsl --status
Default Distribution: Ubuntu-22.04
Default Version: 2

Windows Subsystem for Linux was last updated on 6/7/2022
WSL automatic updates are on.

Kernel version: 5.10.102.1
Run Code Online (Sandbox Code Playgroud)

从上面的消息中,我假设我使用的是 Linux 内核 5.10.102.1。

但是当我运行 Ubuntu 并使用 时uname -a,我得到了一个不同的 Linux 内核:

user@DESKTOP-:/mnt/c/Users/user$ uname -a
Linux DESKTOP-VMP6T3Q 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

其中表示 Linux 内核是 4.4.0。

我的问题:

  1. 我使用的是哪个版本的 Linux 内核?
  2. 如果是4.4.0,如何升级到5.x?
  3. 如果是5.10,我如何检查以确保它是该版本?

Not*_*1ds 22

虽然 WSL2 是您安装的新发行版的默认设置,但您的 Ubuntu 发行版最初似乎是作为 WSL1 安装的。

您可以通过以下方式确认:

wsl.exe -l -v
Run Code Online (Sandbox Code Playgroud)

在 WSL1 下运行时uname -a,伪内核将报告为:

  • “Linux”
  • 主机名
  • “4.4.0-”
  • Windows 内部版本号(在您的情况下为 19041)
  • “-微软”
  • ...

在 WSL2 下,内核将报告为:

  • “Linux”
  • 主机名
  • 内核版本
  • “-微软标准-WSL2”

在安装 WSL2 或将其设置为默认值之前安装发行版是很常见的。将默认版本更改为 2 实际上不会更改已安装的发行版。

您可以(并且应该)通过退出发行版然后从 PowerShell 转换发行版:

wsl --set-version Ubuntu-22.04 2
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以先使用以下命令进行备份:

wsl --export Ubuntu-22.04 Ubuntu2204_backup.tar
Run Code Online (Sandbox Code Playgroud)

我说“应该”是因为 Ubuntu 22.04 在 WSL1 下有一些重大问题,特别是该unzip命令不起作用。


Dan*_*l B 8

虽然默认 WSL 版本设置为 2,但您运行的 WSL 发行版是 WSL 1。它根本不使用 Linux 内核。

\n

WSL 1(Windows 10):

\n
$ uname -a\nLinux db-d-18 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 GNU/Linux\n
Run Code Online (Sandbox Code Playgroud)\n

WSL 2:

\n
# uname -a\nLinux db-d-18 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 GNU/Linux\n
Run Code Online (Sandbox Code Playgroud)\n

WSL 1 和 2 满足不同的需求。WSL 1 提供 Windows 软件和文件的高性能互操作。WSL 2 提供真正的 Linux 内核,支持容器和更快的 Linux 文件系统等,但代价是访问 Windows 主机\xe2\x80\x99s 文件系统时性能有限。

\n

您通常不应根据内核版本进行选择。

\n

  • “您通常不应根据内核版本进行选择。”请开发。 (2认同)