yod*_*bar 34 windows linux uninstall installation windows-subsystem-for-linux
我安装了WSL 1,喜欢在我的 PC 上安装 Linux,然后发现两个操作系统之间文件互操作性稀缺的局限性。
因此,我按照规范安装了WSL 2(在 BIOS 设置和所有内容中启用了虚拟化),但安装并未完全正常工作,我无法将其设置为默认值,并且并非所有 shell 命令都按预期响应。
我用谷歌搜索,有人遇到了类似的问题,但没有提出那么多直接的解决方案(我想这仍然是一个相对较新的案例)。
所以我想尽可能深地删除 WSL 并从头开始重新安装 WSL 2。
Not*_*1ds 35
更新:目前这个答案有点过时了。如果您运行的是在 Windows 10 或 11 22H2 之前安装的旧版 WSL,那么这可能是有关如何卸载的正确答案。但是,如果正在运行 WSL 的商店版本(或 UWP 版本),则请查看我的新答案(和/或其他用户的答案,如果存在)。
是否可以在不安装 WSL 1 的情况下从头开始安装 WSL 2?
否。WSL2 需要基本 WSL 支持。
彻底删除 WSL 的最安全、最明智的流程是什么?
这是我所拥有的关于删除与 WSL 相关的所有内容的最佳信息。
听起来您认为现有实例是一个失败的原因,但如果您想为后代备份它,您可以从以下开始:
wsl --export <distroname> archivename.tar
然后删除现有的发行版安装:
然后检查以确保没有留下任何东西。从 PowerShell 或 CMD:
wsl -l
wsl --unregister <distroname>
您可能只想从商店安装一个新的发行版。其他组件的任何额外重新安装都不太可能产生影响。但如果你确实想删除它们:
*从“打开或关闭 Windows 功能”中,禁用“Linux 的 Windows 子系统”。根据注释,在下一步之前可能需要重新启动。
从 Windows 中的“打开或关闭 Windows 功能”中,禁用“虚拟机平台”。这就是 WSL2 Hyper-V 支持。
重启。
当您从那里重新安装时,如果您能确认“Windows Subsystem for Linux Update”在安装内核更新包后返回到“应用程序和功能”(安装文档中的步骤 4 ),我将不胜感激。我将根据该信息更新此答案。
Not*_*1ds 23
此答案指的是较新的 Store/UWP 版本的 WSL。要确认您使用的是此较新版本,请从 PowerShell 运行以下命令:
Get-AppxPackage |? { $_.Name -like "*WindowsSubsystemforLinux*" }
Run Code Online (Sandbox Code Playgroud)
如果您看到结果,请继续阅读此答案。如果您没有得到结果,那么您可能正在运行旧版本的 WSL。请参阅我关于如何完全卸载该版本的旧答案。
对于 Store/UWP 版本,答案已更改:
是否可以在不安装 WSL 1 的情况下从头开始安装 WSL 2?
是的,在 Windows 11 22H2 下,wsl --install
默认情况下只会安装 WSL2。要安装 WSL1,您必须添加wsl --install --enable-wsl1
.
请注意,该--enable-wsl1
选项在 Windows 10 上不可用,即使在与较新的 WSP 版本兼容的完全更新的系统上也是如此。在 Window 10 (19045.2311) 上,WSL1 仍会自动安装并通过wsl --install
.
彻底删除 WSL 的最安全、最明智的流程是什么?
这是我所拥有的关于删除与 WSL 相关的所有内容的最佳信息。这应确保 (a) 删除所有功能,以及 (b) 回收所有磁盘空间。
(可选)备份现有发行版:
听起来您认为现有实例是一个失败的原因,但如果您想为后代备份它,您可以从以下开始:
wsl --export <distroname> archivename.tar
Run Code Online (Sandbox Code Playgroud)
通过 确认要备份的所有发行版名称wsl -l -v
。
或者,仅将对您重要的文件从发行版复制到发行版之外的安全位置。通常,这将包括您的主目录中的所有内容,但也会查看/var
您/etc
可能想要保留的任何文件。
(可选)确认备份分发的有效性:
当然,如果备份对您很重要,请确认它可以使用wsl --import
新名称。
取消注册现有发行版:
对于使用 找到的每个发行版wsl -l -v
,通过以下方式将其删除:
wsl --unregister <distroname>
Run Code Online (Sandbox Code Playgroud)
警告:这是一个破坏性且不可逆的操作,除非您有上述有效的备份。
卸载从应用商店安装的所有分发包(应用程序):
转到“设置” -> “添加或删除程序”,然后查找您可能已从商店安装的任何发行版(Ubuntu、Debian、Alpine、openSUSE 或其他)。这实际上与您上面未注册的发行版是分开的。这些软件包包括最初创建您的发行版的 Distro Launcher 和 rootfs(例如ubuntu2004.exe
)。
卸载每个发行版。
在较旧的 Windows 版本中,卸载这些软件包也会卸载相应的发行版,从而导致一些意外的数据丢失。看来大多数最新的系统都要求通过两个单独的步骤来删除它们,这是一件好事。
另外,在“设置” -> “添加或删除程序”中,查找并删除任何“适用于 Linux 的 Windows 子系统”应用程序。这可能包括:
此时最好重新启动以释放任何其他正在使用的文件。
接下来,转到“设置” -> “打开或关闭 Windows 功能”。
如果已启用,请禁用:
Windows 可能会提示重新启动。
重新启动后,确认以上项目均已成功删除。此时,任何wsl
命令都应该简单地返回默认的“安装”帮助文本。
从此处重新安装的推荐方法是:
打开提升的 PowerShell。最好作为普通用户在管理员提升的会话中执行此操作,而不是作为单独的管理员用户。
wsl --install
Run Code Online (Sandbox Code Playgroud)
默认情况下,这将:
另请参阅wsl --help
其他安装选项。例如,您可以在此阶段跳过发行版的安装或选择不同的发行版。