将 WSL 从 20.10 升级到 Ubuntu Hirsute 21.04

Ada*_*iak 7 linux ubuntu windows-subsystem-for-linux

我在 sudo do-release-upgrade 期间遇到了这种情况:

Reading cache
pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.

Checking package manager
Reading package lists... Done
Building dependency tree
Reading state information... Done
Hit http://security.ubuntu.com/ubuntu groovy-security InRelease
Hit http://archive.ubuntu.com/ubuntu groovy InRelease
Hit http://archive.ubuntu.com/ubuntu groovy-updates InRelease
Hit http://archive.ubuntu.com/ubuntu groovy-backports InRelease
Fetched 0 B in 6s (0 B/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done

Restoring original system state

Aborting
Reading package lists... Done
Building dependency tree
Reading state information... Done
=== Command detached from window (Wed Jul 14 08:30:31 2021) ===
=== Command terminated with exit status 1 (Wed Jul 14 08:30:41 2021) ===
Run Code Online (Sandbox Code Playgroud)

并按住终端,不再进行任何操作。

如何修复并进行全面升级?

小智 10

长话短说:apt purge snapd

我还有一个 WSL1 系统。使用 do-release-upgrade 从 ubuntu 20.10 升级到 21.04 以同样的方式失败。我偶然发现了这篇 Reddit 帖子,它为我指明了正确的方向。显然,由于某种原因,WSL 不喜欢升级 snapd。我不使用snapd,所以我就把它删除了。

删除 snapd 后,我仍然看到 lspci 失败,但它更新了几乎所有内容。有一个包失败了:usrmerge,它的失败与这个askubuntu问题完全相同:Both /lib/udev/hwdb.bin and /usr/lib/udev/hwdb.bin exist.解决方案是删除其中一个。我删除了旧的。


Not*_*1ds 1

听起来您正在使用 WSL1,因为lspci在升级过程中某处出现故障。 /procWSL1 下的支持比 WSL2 下的支持要有限得多。

如果是这种情况,请在运行do-release-upgrade.

  • 首先,如果您还不知道发行版名称,请使用wsl -l -v.
  • 确保实例未通过 运行wsl --terminate <distroname>。几分钟后再次确认停止wsl -l -v
  • 使用备份实例wsl --export <distroname> <filename.tar>
  • 更改实例的 WSL 版本wsl --set-version <distroname> 2

在那里再试sudo do-release-upgrade一次。完成后,您可以随时将版本更改回 WSL1。

请记住,与 LTS 版本不同,21.04 不一定经过 Canonical 的 WSL 测试(他们测试 WSL1 的可能性更小)。因此,请保留 20.04 的备份,以备不时之需。