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。
我的问题:
Not*_*1ds 22
虽然 WSL2 是您安装的新发行版的默认设置,但您的 Ubuntu 发行版最初似乎是作为 WSL1 安装的。
您可以通过以下方式确认:
wsl.exe -l -v
Run Code Online (Sandbox Code Playgroud)
在 WSL1 下运行时uname -a,伪内核将报告为:
在 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命令不起作用。
虽然默认 WSL 版本设置为 2,但您运行的 WSL 发行版是 WSL 1。它根本不使用 Linux 内核。
\nWSL 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\nRun Code Online (Sandbox Code Playgroud)\nWSL 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\nRun Code Online (Sandbox Code Playgroud)\nWSL 1 和 2 满足不同的需求。WSL 1 提供 Windows 软件和文件的高性能互操作。WSL 2 提供真正的 Linux 内核,支持容器和更快的 Linux 文件系统等,但代价是访问 Windows 主机\xe2\x80\x99s 文件系统时性能有限。
\n您通常不应根据内核版本进行选择。
\n| 归档时间: |
|
| 查看次数: |
11791 次 |
| 最近记录: |