完全重新安装 WSL

完全重新安装 WSL

我安装了WSL 1,喜欢在我的 PC 上安装 Linux,但后来发现这两个操作系统之间在文件方面的互操作性很差。

所以我安装了WSL 2按照规范操作(在 BIOS 设置中启用虚拟化等),但安装无法完全正常工作,我无法将其设置为默认设置,并且并非所有 shell 命令都按预期响应。
我在 Google 上搜索,有人遇到过类似的问题,但并没有提出太多直接的解决方案(我猜这仍然是一个相对较新的案例)。

所以我想尽可能深入地删除 WSL 并从头开始重新安装 WSL 2。

  • 彻底删除 WSL 最安全和最可取的流程是什么?
  • 是否可以在未安装 WSL 1 的情况下从头安装 WSL 2?

答案1


更新:目前这个答案有点过时了。如果你运行的是 Windows 10 或 11 22H2 之前安装的旧版 WSL,那么这可能是卸载的正确答案。但是,如果你运行的是 Store 版本(或 UWP 版本)的 WSL,请参阅我的较新的答案(和/或其他用户的答案,如果存在)。


是否可以在未安装 WSL 1 的情况下从头安装 WSL 2?

不。WSL2 需要基本的 WSL 支持。

彻底删除 WSL 最安全和最可取的流程是什么?

以下是我所掌握的关于移除的最佳信息一切与 WSL 相关。

听起来您认为现有实例已无望,但如果您想为后人保留它,您可以从以下方面开始:

  • wsl --export <distroname> archivename.tar

然后删除现有的发行版安装:

  • 您从商店安装的任何发行版,都应首先通过 Windows 中的“应用和功能”(又称“添加或删除程序”)进行删除。这也适用于通过下载的 Appx 包手动安装的发行版。

然后检查以确保没有遗留任何内容。从 PowerShell 或 CMD:

  • wsl -l
  • wsl --unregister <distroname>

此时,您可能只想从商店安装一个新的发行版。重新安装其他组件不太可能产生任何影响。但如果您确实想删除它们:

  • 在 Windows 的“应用程序和功能”(又称“添加或删除程序”)中,删除“Windows Subsystem for Linux Update”。我相当确定这是 Linux 内核更新。如果您想在下一步之前确保它完全消失,可能需要重新启动。

  • 从“打开或关闭 Windows 功能”中,禁用“适用于 Linux 的 Windows 子系统”。根据评论,在执行下一步之前可能需要重新启动。

  • 在 Windows 中的“打开或关闭 Windows 功能”中,禁用“虚拟机平台”。这是 WSL2 Hyper-V 支持。

  • 重启。

当您从那里重新安装时,如果您能确认在安装内核更新包后,“Windows Subsystem for Linux Update”是否返回到“应用与功能”中(步骤 4),我将不胜感激。安装文档)。我将根据该信息更新此答案。

答案2

此答案涉及 WSL 的较新 Store/UWP 版本。要确认您正在使用此较新版本,请从 PowerShell 运行以下命令:

Get-AppxPackage |? { $_.Name -like "*WindowsSubsystemforLinux*" }

如果您看到结果,请继续阅读此答案。如果没有得到结果,则您可能正在运行旧版本的 WSL。请参阅我以前的回答关于如何彻底卸载该版本。

对于 Store/UWP 版本,答案已经改变:

是否可以在未安装 WSL 1 的情况下从头安装 WSL 2?

是的,在 Windows 11 22H2 下,wsl --install默认情况下仅有的安装 WSL2。要安装 WSL1,您必须添加wsl --install --enable-wsl1

请注意,该--enable-wsl1选项在 Windows 10 上不可用,即使在与较新的 WSP 版本兼容的完全更新系统上也是如此。在 Windows 10 (19045.2311) 上,WSL1 仍会自动安装并启用wsl --install

彻底删除 WSL 最安全和最可取的流程是什么?

以下是我所掌握的关于移除的最佳信息一切与 WSL 相关。这应确保 (a) 所有功能均被删除,并且 (b) 所有磁盘空间均被回收。

  1. 或者,备份现有发行版:

    听起来您认为现有实例已无望,但如果您想为后人保留它,您可以从以下方面开始:

    wsl --export <distroname> archivename.tar
    

    通过 确认所有要备份的分发名称wsl -l -v

    或者,只将对您重要的文件从发行版复制到发行版之外的安全位置。通常,这将包括您的主目录中的所有内容,但也包括/var/etc可能想要保留的任何文件。

  2. 或者,确认备份分发的有效性:

    当然,如果备份对您很重要,那么请确认它可以与wsl --import新名称一起使用。

  3. 取消注册现有的发行版:

    对于每个发现的带有 的分布wsl -l -v,通过以下方式删除它:

    wsl --unregister <distroname>
    

    警告:除非您有如上所述的有效备份,否则这是一个破坏性和不可逆的操作。

  4. 卸载任何发行版从商店安装的(应用程序):

    设置->添加或删除程序并查找您可能已从商店安装的任何发行版(Ubuntu、Debian、Alpine、openSUSE 或其他)。这实际上与您在上面取消注册的发行版是分开的。这些软件包包括最初创建您的发行版的 Distro Launcher 和 rootfs(例如ubuntu2004.exe)。

    卸载每个发行版。

    在旧版 Windows 中,卸载这些软件包卸载了相应的发行版,导致了一些意外的数据丢失。看来大多数最新系统都要求分两个步骤删除这些数据,这是一件好事。

  5. 此外设置->添加或删除程序,查找并删除任何“适用于 Linux 的 Windows 子系统”应用。这可能包括:

    • 适用于 Linux 的 Windows 子系统:主要 WSL 包本身
    • Windows 子系统 Linux 更新:对 WSL 旧版本(内置,作为 Windows 功能提供)内核包的更新。
    • Windows Subsystem for Linux WSLg 预览版:随 Windows 11 推出的 WSLg 功能。
  6. 此时最好重新启动以释放任何其他正在使用的文件。

  7. 接下来,转到设置->打开或关闭 Windows 功能

  8. 如果已启用,请禁用:

    • 虚拟机平台
    • 适用于 Linux 的 Windows 子系统

    Windows 可能会提示重新启动。

  9. 重启后,确认上述所有项目均已成功删除。此时,任何wsl命令应该只需返回默认的“安装”帮助文本。

从这里重新安装的推荐方法是:

  • 打开提升的 PowerShell。最好以普通用户身份在管理员提升的会话中执行此操作,而不是以分离管理员用户。

    wsl --install
    

    默认情况下,这将:

    • 重新启用虚拟机平台
    • 从 Microsoft Store 安装最新的 WSL 版本。此版本现在直接包含内核,而不需要像以前那样需要单独的安装步骤。
    • 从 Microsoft Store 安装默认的 Ubuntu 发行版

    另请参阅wsl --help其他安装选项。例如,您可以在此阶段跳过发行版的安装或选择其他发行版。

相关内容