WSL2:为啥我必须在重启 PC 后关闭 WSL 才能重启 WSL

Posted

技术标签:

【中文标题】WSL2:为啥我必须在重启 PC 后关闭 WSL 才能重启 WSL【英文标题】:WSL2: Why do I have to shutdown WSL to restart WSL after restarting PCWSL2:为什么我必须在重启 PC 后关闭 WSL 才能重启 WSL 【发布时间】:2020-12-31 11:11:22 【问题描述】:

我的 Windows 使用 Ubuntu 设置了 WSL。在我升级到 WSL2 之前,它一直运行良好。

问题是:每次我启动我的电脑(或重新启动我的电脑)时,它都会失去从 Ubuntu 到 Windows 驱动器的连接。

我收到这样的消息:

cd: Input/output error: /mnt/d/

上面的问题可以通过运行这个很容易解决:

wsl.exe --shutdown

我想永久解决这个问题,而不是每次遇到问题都关闭 WSL。

知道如何永久解决这个问题吗?

【问题讨论】:

不确定唯一一个拒绝投票,但甚至没有留下评论或答案的人。 :) 老实说,这周我在使用 WSL2 时遇到了一些问题,我不知道如何解决这些问题。与您实际遇到的问题相同。我安装了一个新的 WSL2 发行版(Debian),现在似乎解决了,但是 code 命令不再适用于启动 Visual Studio 代码。 @froginvasion 是的,现在,我每天打开我的电脑工作,我必须运行wsl.exe --shutdown 才能让它工作。 我可以确认 【参考方案1】:

这听起来像是一个快速启动问题。尝试在控制面板中禁用它。

【讨论】:

您能否提供额外的详细信息或说明为什么这会成为快速启动问题的来源? 这主要和我过去快速启动的经验有关,和WSL没有特别的关系。如果您有兴趣,我的搜索历史中充满了错误代码。 快速启动是一种休眠形式,它也会导致 WSL 中的网络功能出现问题。我同意@Smithienious 的观点,如果wsl --shutdown 正在解决它,快速启动或休眠可能是一个原因。我最初在this Github 问题的某个地方发现了这个,并且已经得到了一些 cmets 的证实,并且在this 答案上的支持。我参与的另一个问题/答案表明驱动器安装可能是同一子系统的一部分,但我现在手边没有。 快速启动确实是一个很酷的功能,它可以节省大量时间。如果需要,我们可以硬重启,但大多数时候,我们会想要快速启动。因此,禁用它不是一个好主意。如果我必须在禁用快速启动或重新运行wsl --shutdown 之间做出选择,那么wsl --shutdown 只需要不到 1 秒(Windows-R 已经记住了)。 这不是根本原因。如果没有快速启动,它仍然会发生。解决方法是在需要时运行 wsl.exe --shutdown【参考方案2】:

我遇到了同样的问题。所以我制作了一个包含 wsl --shutdown 的 .bat 文件,并将它的快捷方式放在 C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 中,这样每次 PC 启动时,它都会自动执行。

在运行窗口(win+r)输入shell:startup即可得到上述目录。

【讨论】:

以上是关于WSL2:为啥我必须在重启 PC 后关闭 WSL 才能重启 WSL的主要内容,如果未能解决你的问题,请参考以下文章

为啥带有 SourceTree 的 WSL2 上的 Git 对我来说这么慢?

使用过vmware 再开启wsl2闪退处理

wsl2 中的文件物理存储在哪里? [关闭]

最详尽教程完整介绍-Windows 的 Linux 子系统-WSL1&WSL2

windows 子系统wsl2 占用内存过大的解决方案

WSL2 - 仅在 \\wsl$\ 挂载点从 Windows 访问时,Linux 相关符号链接损坏 [关闭]