如何在Windows 11上的WSL中安装Ubuntu 21.10?

我在Windows商店中没有看到安装Ubuntu 21.10的选项。
我想在Windows 11上的WSL中安装带有图形支持(WSLg)的Ubuntu 21.10。我在Windows商店中搜索了"Ubuntu",但只找到了较旧的版本。
2个回答

请注意,此答案仅适用于已发布的Ubuntu 20.04版本,并经过验证。正如@GavinRay在另一个答案中所报告的,在Ubuntu Community Preview for WSL(目前使用的是21.04版本)上存在问题。请参考Gavin的答案以获取解决方案。
Ubuntu仅提供(并测试)LTS版本供直接下载和安装到WSL上。
您可以安装基本的“Ubuntu”发行版(目前为20.04版本),然后通过稍微改变正常机制来升级到21.10版本:
  • sudo apt update && sudo apt upgrade以确保现有版本是最新的。

  • sudo apt remove snapd -- 需要这样做是因为WSL不直接支持Systemd

  • Sudo编辑/etc/update-manager/release-upgrades并更改最后一行为:

    prompt=normal
    
  • sudo do-release-upgrade升级到Hirsute/21.04

  • 推荐: 退出WSL,从PowerShell或CMD执行wsl --terminate Ubuntu,然后重新启动WSL/Ubuntu。

  • 重复 sudo do-release-upgrade 升级到Impish/21.10

  • 推荐: sudo apt purge needrestart以摆脱安装任何软件包后不必要的检查。

再次强调,这并不是Canonical似乎必须测试的情况,但人们已经这样做了一段时间(以及安装了许多其他不同的发行版)。
升级后,我建议创建一个备份镜像。如果您需要尝试某些功能而不影响正常使用,可以使用该镜像在将来创建新的、干净的21.10安装。
wsl --export Ubuntu Ubuntu2110_fresh_install.tar

创建一个目录,并从中创建新的安装。
wsl --import Ubuntu2110Test <directory> Ubuntu2210_fresh_install.tar

我个人会直接自动创建一个新的安装。这样做有以下优点:
- 可以让我自己命名安装(例如:'Ubuntu-21.10') - 可以将其放置在其他位置,而不是在 `%userprofile%\AppData\Local\Packages` 下面。

1这对我有效,谢谢!一个微不足道的更正(或许对某人有用):你在一个命令中漏掉了一个连字符:sudo do-release upgrade 当然应该是 sudo do-release-upgrade - Rob Cranfill
@RobCranfill 哎呀!谢谢你指出来 - 已经修复了!很高兴能帮到你! - NotTheDr01ds
1给Docker用户的小提示:https://patrickwu.space/2021/03/09/wsl-solution-to-native-docker-daemon-not-starting/ - Jim
@Jim 不错的信息,但看起来有点过时,因为WSL2的内核现在已经升级到了5.10版本。你知道最新内核下,nftables是否仍然是WSL2的一个问题吗? - NotTheDr01ds
1@NotTheDr01ds 很不幸,是的,我在 Linux DESKTOP-7IQV62O 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux 上进行了测试,发现 nftables 仍然存在问题,最后找到了一篇我之前提到的临时解决方案的文章。 - Jim
1@Jim 谢谢确认。唉...真遗憾。不知道在即将发布的LTS版本之前,Canonical或者Microsoft会不会采取措施解决这个问题。 - NotTheDr01ds
1@Jim 提醒一下,Launchpad问题已标记为“修复完成”。如果有机会,我会深入研究并尝试在我的环境中重现。目前我正在使用我的21.10版本的发行版进行Podman操作,但创建另一个发行版也很容易。 - NotTheDr01ds

警告 - 在Ubuntu的社区预览版(目前为21.04版本)上,按照@NotTheDr01ds的回答所描述的过程会导致WSL实例“几乎变砖”。
升级完成并退出Ubuntu后,重新启动它会出现“未安装模式”错误。然后立即退出,使得故障排除变得非常困难。
这种情况发生在尝试从Windows终端或开始菜单快捷方式启动Ubuntu社区预览版时。
幸运的是,您仍然可以通过“wsl bash”来启动。(附注:这是因为以这种方式运行“bash”不会导致登录shell,因此“问题脚本”在“/etc/profile.d/wsl-integration.sh”中不会运行。)
这个非常神秘的错误实际上与一个叫做“gsettings”的东西有关。
通过使用“wsl bash”启动后,我能够通过运行“sudo apt install gsettings-desktop-schemas”来解决这个问题。现在Ubuntu可以正常启动了。
我也在WSL Github上报告了这个问题(链接:on the WSL Github)。
还可以查看报告给Canonical/Ubuntu WSL团队的LaunchPad问题

1很抱歉你经历了这么多烦恼。如果你先阅读了这个问答,可能会对你有所帮助:2018年运行Windows子系统上的GUI应用程序最简单的方法是什么? - WinEunuuchs2Unix
1@WinEunuuchs2Unix 我不确定这与这个答案(或问题)有什么关系?当被引用的问题被提出或回答时,这位用户试图升级的“预览”版本并不存在。它也没有提到“找不到模式”问题,也没有提到“gsettings”解决方案。 - NotTheDr01ds
1我觉得没关系你没有把这个问题留在评论中。对我来说,这个答案似乎是可行的,因为你使用的是21.04的“预览”版本,而我的指导是基于“正式发布”的版本。你的答案希望能帮到其他尝试使用同一路径的人。 - NotTheDr01ds
1只是一个提醒,我在社区预览版上重现了这个问题。已经有几个人向Canonical团队此处报告了这个问题。我已经追踪到问题出在/etc/profile.d/wsl-integration.sh文件上。当你执行wsl bash时,它不会发生,因为跳过了运行配置脚本的步骤,但你在那里真的非常幸运;-)。 - NotTheDr01ds
我运行 sudo do-release-upgrade 时收到了 command not found 的错误提示。现在看来,只需要再等待几个月就能收到WSL的正式Jammy版本发布,但是... - AlMo320