WSL2完全冻结无法运行任何发行版,如何在无Shell访问的情况下恢复数据?
WSL2完全冻结无法运行任何发行版,如何在无Shell访问的情况下恢复数据?
哎呀,这种WSL突然完全冻住的情况真的太闹心了,连基本命令都用不了,还得着急救数据——别慌,咱们可以绕过WSL本身,直接从Windows文件系统入手来恢复数据,具体方法如下:
核心思路:直接操作WSL2的磁盘镜像文件
WSL2的每个发行版数据都存在一个独立的ext4.vhdx虚拟磁盘文件里,我们可以直接找到这个文件,挂载后导出数据,完全不需要通过WSL的Shell或命令工具。
步骤1:定位WSL2的磁盘镜像文件
重启电脑后,绝对不要启动任何WSL发行版,也尽量少运行wsl命令(避免触发冻结),然后按下面的步骤找文件:
- 打开文件资源管理器,在地址栏输入
%USERPROFILE%\AppData\Local\Packages,回车进入文件夹 - 在里面找到对应发行版的文件夹:比如Ubuntu的文件夹名类似
CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc,Debian的话会包含DebianProject字样,以此类推 - 进入该文件夹后,找到
LocalState目录,里面的ext4.vhdx就是你要找的发行版磁盘镜像
步骤2:挂载镜像并访问数据
因为WSL2用的是ext4文件系统,Windows默认不支持读写,所以需要借助工具来处理:
- 打开「磁盘管理」:按下
Win+X,在弹出的菜单里选择「磁盘管理」 - 点击顶部的「操作」→「附加VHD」,浏览选中刚才找到的
ext4.vhdx文件。如果只是恢复数据,建议勾选「只读模式」,避免误操作损坏原有数据 - 安装ext4文件系统支持工具:比如免费开源的Ext2Fsd,安装完成后打开它的管理界面
- 在Ext2Fsd里找到刚才挂载的虚拟磁盘,给它分配一个驱动器号(比如Z:)
- 现在你就可以在文件资源管理器里打开这个驱动器,直接复制发行版里的所有文件到Windows的其他磁盘分区了
备选方案:抓住系统启动的窗口期尝试备份
你提到系统刚启动时还能运行wsl -l -v这类命令,那可以试试在这个窗口期快速执行备份:
- 重启电脑后,立刻打开管理员权限的命令提示符
- 快速输入备份命令:
wsl --export <你的发行版名称> D:\wsl_backup.tar- 比如你的发行版是Ubuntu-22.04,命令就是
wsl --export Ubuntu-22.04 D:\ubuntu_backup.tar
- 比如你的发行版是Ubuntu-22.04,命令就是
- 这个方法的关键是“快”,一旦WSL开始冻结就会失效,如果执行后还是挂,就回到上面的磁盘镜像方法就行
备注:内容来源于stack exchange,提问作者lemek




