惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
V
Visual Studio Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
B
Blog
I
InfoQ
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
H
Help Net Security
博客园 - Franky
宝玉的分享
宝玉的分享
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家

热爱生活与梦想

迁移LeanCloud的Waline评论数据到TiDB/Neon 25年江浙地区暑假自驾游之感慨 使用阿里云灵码继续完成构建 SSL 证书管理器 亲手给儿子做的棒棒糖摩天轮六一礼物 使用腾讯云 CodeBuddy 构建 SSL 证书管理器 修复代码块默认高度相关缺陷 HugoNexT4.7.2 新功能和升级提示 改善代码块折叠和选中功能 支持Github风格的警告样式 新增音乐短代码功能支持 给文章添加摘要和过期提示功能 回顾24年的过去总结 修复Mathjax行内显示公式的问题 给Hugo文章增加阅读更多跳转的锚点定位功能 Win10隐匿的VPN设置和L2TP连接常见错误 Go语言中“糟糕”的日期时间格式化设计 DaoCloud道客提供的免费Docker镜像代理服务 感谢万能淘宝让自己吃到喜欢的美食 WSL运行时遇到未知异常错误无法使用 隐藏的换行符导致Base64加密解密失败 MySQL自带客户端直接免密登录操作 Linux系统中删除目录软链接的注意项 Java程序调用外网API时CA问题 在Windows上安装Podman容器平台做虚拟化 记一次无法弹出移动硬盘的记录 为友情链接添加自动检测脚本 重新激活Github的2FA认证 Linux中使用tar压缩命令排除文件 继续小米手环的健康生活之旅 一次意外的“坠机”引发了我对手机保护壳的深思
如何不关机重启WSL2恢复虚拟服务
凡梦星尘 · 2024-05-20 · via 热爱生活与梦想

对于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卡住解决办法