如何将 WSL2 内核中的内核更新到最新版本?

如何将 WSL2 内核中的内核更新到最新版本?

我的 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 内核:

  1. 对于较新的 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不再可用在这些版本中。

  2. 对于不支持的旧版 Windows 10 wsl --update,请参阅@harrymc 的回答。您仍然可以选择加入自动更新,并且(当可用时)新内核将通过正常的 Windows 更新机制进行升级。

  3. 最后,您当然可以编译自己的 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

这应该会更新内核并显示最新的运行版本。

相关内容