我安装了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) 所有磁盘空间均被回收。
或者,备份现有发行版:
听起来您认为现有实例已无望,但如果您想为后人保留它,您可以从以下方面开始:
wsl --export <distroname> archivename.tar
通过 确认所有要备份的分发名称
wsl -l -v
。或者,只将对您重要的文件从发行版复制到发行版之外的安全位置。通常,这将包括您的主目录中的所有内容,但也包括
/var
您/etc
可能想要保留的任何文件。或者,确认备份分发的有效性:
当然,如果备份对您很重要,那么请确认它可以与
wsl --import
新名称一起使用。取消注册现有的发行版:
对于每个发现的带有 的分布
wsl -l -v
,通过以下方式删除它:wsl --unregister <distroname>
警告:除非您有如上所述的有效备份,否则这是一个破坏性和不可逆的操作。
卸载任何发行版包从商店安装的(应用程序):
去设置->添加或删除程序并查找您可能已从商店安装的任何发行版(Ubuntu、Debian、Alpine、openSUSE 或其他)。这实际上与您在上面取消注册的发行版是分开的。这些软件包包括最初创建您的发行版的 Distro Launcher 和 rootfs(例如
ubuntu2004.exe
)。卸载每个发行版。
在旧版 Windows 中,卸载这些软件包还卸载了相应的发行版,导致了一些意外的数据丢失。看来大多数最新系统都要求分两个步骤删除这些数据,这是一件好事。
此外设置->添加或删除程序,查找并删除任何“适用于 Linux 的 Windows 子系统”应用。这可能包括:
- 适用于 Linux 的 Windows 子系统:主要 WSL 包本身
- Windows 子系统 Linux 更新:对 WSL 旧版本(内置,作为 Windows 功能提供)内核包的更新。
- Windows Subsystem for Linux WSLg 预览版:随 Windows 11 推出的 WSLg 功能。
此时最好重新启动以释放任何其他正在使用的文件。
接下来,转到设置->打开或关闭 Windows 功能。
如果已启用,请禁用:
- 虚拟机平台
- 适用于 Linux 的 Windows 子系统
Windows 可能会提示重新启动。
重启后,确认上述所有项目均已成功删除。此时,任何
wsl
命令应该只需返回默认的“安装”帮助文本。
从这里重新安装的推荐方法是:
打开提升的 PowerShell。最好以普通用户身份在管理员提升的会话中执行此操作,而不是以分离管理员用户。
wsl --install
默认情况下,这将:
- 重新启用虚拟机平台
- 从 Microsoft Store 安装最新的 WSL 版本。此版本现在直接包含内核,而不需要像以前那样需要单独的安装步骤。
- 从 Microsoft Store 安装默认的 Ubuntu 发行版
另请参阅
wsl --help
其他安装选项。例如,您可以在此阶段跳过发行版的安装或选择其他发行版。