我的 WSL2 子系统中的当前内核版本是:
5.10.60.1-microsoft-standard-WSL2
然而,我看到微软 WSL 官方 GitHub 仓库有一个更新的内核版本:
linux-msft-wsl-5.10.102.1
如何在已安装的 WSL 设置中更新内核?我尝试过这个:
wsl --update
但它不会更新内核版本。
答案1
为确保获取 WSL2 内核更新:
- Windows 10:打开
设置>更新和安全>Windows更新.
Windows 11 :打开设置 > Windows 更新。 - 点击“高级选项”
- 启用“更新 Windows 时接收其他 Microsoft 产品的更新”
- 返回设置中的上一页,单击“检查更新”。
这将允许 Windows 为 WSL 2 安装最新的 Linux 2 内核。
Github 上存在更高版本并不意味着它已被纳入稳定版本。
答案2
目前至少有三种方法可以升级你的 WSL2 内核:
对于较新的 Windows 版本(Windows 10 21H2 和 Windows 11),
wsl --update
通常是最好的选择,但请注意,微软在 Github 上发布内核的时间与他们提供自动更新的时间之间存在轻微的滞后。当写下这个问题时:
- 5.10.60.1 是 Windows 11 上自动更新的最新可用版本
- 5.10.16 是 Windows 10 的最新版本。
- 5.10.102.1 是 WSL2 内核 Github 存储库中最新的版本。它刚刚在几天前的 3 月 8 日发布。这就是为什么
wsl --update
当时没有将它拉到 OP 中的原因——它根本还不可用wsl --update
(或者 Windows 自动更新也不可用)。
但是,现在,截至本次编辑时:
- 5.10.102.1 是最新版本稳定的
wsl --update
可通过Windows 10 和 11 系统获取内核(以及自动 Windows 更新)。 - 5.15.57.1 刚刚作为最新预览版发布(在 Windows 11 Insider 版本上)。
wsl --update
请注意,您可能需要在管理会话中运行才能更新。如果需要,您可以使用以下命令恢复到以前的内核版本:
wsl --update --rollback
无论如何,我建议在更新之前重命名(或移动到另一个位置)以前的内核,以便您可以根据需要使用该
.wslconfig
文件在各个内核之间切换。注意:目前,Microsoft Store 中还为 Windows 11 用户提供了 WSL 的“预览”版本。如果您使用此 Store 版本,则不仅会更新内核本身,还会更新 WSL Store 软件包的最新版本。由于它是用户级应用程序,因此
wsl --update
您不再需要wsl --update
在管理会话中运行。wsl --update --rollback
不再可用在这些版本中。对于不支持的旧版 Windows 10
wsl --update
,请参阅@harrymc 的回答。您仍然可以选择加入自动更新,并且(当可用时)新内核将通过正常的 Windows 更新机制进行升级。最后,您当然可以编译自己的 WSL2 内核。最好从 Microsoft 源代码开始,因为它具有正确的配置选项选择,使内核可以在 Windows/WSL2 中最佳运行。
编译或获取自定义内核后,你可以通过创建
.wslconfig
与适当的部分和内核配置。
答案3
wsl --update
对于那些由于公司严格的用户更新策略而无法更新 WSL 内核的人,他们可以手动安装 WSL 内核。读这个
- 从这里下载最新的内核:https://www.catalog.update.microsoft.com/Search.aspx?q=wsl
- 打开并将更新提取到您的桌面
- 加载具有提升权限的命令提示符(开始 --> cmd --> 右键单击 --> 以管理员身份运行)
- 在命令提示符中运行以下命令:
cd C:\Users\your_username\Desktop\
wsl --shutdown
wsl_update_x64.msi
wsl
uname -r
这应该会更新内核并显示最新的运行版本。