前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何不关机重启WSL2恢复虚拟服务

如何不关机重启WSL2恢复虚拟服务

作者头像
凡梦星尘
发布于 2024-11-20 09:33:36
发布于 2024-11-20 09:33:36
1660
举报
文章被收录于专栏:Hugo博客Hugo博客

对于Windows系统WSL技术较熟悉的小伙伴对于WSL和WSL2两个版本间的架构差异应该都比较了解,有不少人可能都会吐槽WSL2其实是一种倒退,只不过今天我们不讨论这点,而是来分享下在使用WSL2服务遇到的问题,及亲测有效的解决方案。

之前的分享中有提到过借助WSL2+Podman两者组合方案实现容器化环境搭建,后来在使用过程中却也是遇到了些问题。起初以为是Podman的技术原因还不成熟的原因,直到后来才发现是WSL2服务本身存在问题,进而导致容器环境无法正常使用。

问题现象

平日里一般都会使用休眠来代替关机,之前未使用虚拟服务时也没有察觉出有何异常。只是有次开启了Podman里的容器,想在休眠恢复后再重新连接虚拟服务的容器服务系统,便遇到了无法访问的情况:终端命令一直卡住不动,没有任何报错和响应输出。

解决方案

开始是只能无奈的关机重启再启动WSL2和Podman服务,只是这样会比较麻烦,得要重新启用需要使用的软件与文档。后来网上调研了些相关的处理办法,梳理出如下可用的方案(只需要4个步骤就可以恢复Podman的服务):

1 2 3 4 5 6 7 8 9 10 11 12 13 14

# 1.停止虚拟服务 net stop vmms # 2.停止Liux子系统管理 net stop LxssManger # 3.停止WSL2虚拟服务 taskkill /f /im wslservice.exe # 4.启动Podman服务 podman machine start podman-vm # 5.进入WSL系统 podman machine ssh podman-vm

命令执行过程中的日志输出参考如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

C:\Users\用户名>net stop vmms The Hyper-V 虚拟机管理 service is stopping. The Hyper-V 虚拟机管理 service was stopped successfully. C:\Users\用户名>net stop LxssManager The LxssManager service is stopping. The LxssManager service was stopped successfully. C:\Users\用户名>taskkill /f /im wslservice.exe SUCCESS: The process "wslservice.exe" with PID 48264 has been terminated. C:\Users\用户名>wsl -l 适用于 Linux 的 Windows 子系统分发: podman-vm (默认) C:\Users\用户名>podman machine start podman-vm Starting machine "podman-vm" API forwarding for Docker API clients is not available due to the following startup failures. could not start api proxy since expected pipe is not available: podman-vm Podman clients are still able to connect. Machine "podman-vm" started successfully C:\Users\用户名>podman machine ssh podman-vm Connecting to vm podman-vm. To close connection, use `~.` or `exit` Last login: Mon May 20 18:15:03 2024 from ::1 [user@用户名 ~]$ uname -a Linux 用户名 5.15.146.1-microsoft-standard-WSL2 #1 SMP Thu Jan 11 04:09:03 UTC 2024 x86_64 GNU/Linux

如此看来在WSL2中使用Linux系统也是路途多坎坷呀,建议还是要注意在准备系统休眠前,把正在进行的Linux相关操作保存好,避免后面系统休眠后无法进入WSL系统而导致数据。也可以将如上的解决方案做成批处理脚本,便于在休眠重启后一键快速恢复。

2024-08-08 更新:可以尝试直接使用命令podman manchine stop podman-vm停止虚拟服务,然后使用podman machine start podman-vm 启动虚拟服务,这样便省去上述那些复杂的操作步骤。

引用参考:

  1. 如何在死掉后彻底重启wsl2
  2. wsl卡住解决办法
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题现象
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档