WSL 中有哪些 Linux 内核?

WSL 中有哪些 Linux 内核?

我使用 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

根据以上消息,我假设我正在使用 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

其中表明 Linux 内核是 4.4.0。

我的问题:

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

答案1

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

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

wsl.exe -l -v

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

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

在 WSL2 下,内核将报告为:

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

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

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

wsl --set-version Ubuntu-22.04 2

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

wsl --export Ubuntu-22.04 Ubuntu2204_backup.tar

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

答案2

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

WSL 1(Windows 10):

$ uname -a
Linux db-d-18 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 GNU/Linux

WSL 2:

# uname -a
Linux db-d-18 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 GNU/Linux

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

通常,您不应该根据内核版本来做出选择。

相关内容