我使用 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。
我的问题:
- 我使用的是哪个版本的 Linux 内核?
- 如果是 4.4.0,我该如何将其升级到 5.x?
- 如果是 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 主机的文件系统时性能有限。
通常,您不应该根据内核版本来做出选择。