无法启动分发,因为其虚拟磁盘已损坏。
- 错误代码:Error code: Bash/Service/CreateInstance/WSL_E_DISK_CORRUPTED
- 错误原因:未知,可能突然关机导致
解决方法如下
新建一个wsl发行版本,可以商店直接安装
关闭其他所有发行版本
wsl.exe --shutdown
找到损坏的虚拟盘路径
, 替换 distribution-name
(损坏的wsl)
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"
备份一下虚拟磁盘
装载 损坏的虚拟盘 ext4.vhdx
到 新建的wsl发行版
上
如果装载不上,可能需要先从原来wsl上撤载(我没有遇到过)
wsl -s <新建的发行版名称> 2
wsl.exe --mount <path-to-ext4.vhdx> --vhd --bare
查看挂载后的情况, sdc
就是我们才挂上去的
wsl.exe lsblk
启动修复程序
device
切换成对应的名称,如上为sdc
,会要求输入很多yes
wsl.exe sudo e2fsck -f /dev/<device>
最后撤下挂载盘
wsl.exe --unmount
我的情况是撤下之后,就能访问原来的wsl了。如果不行,可能需要重新装载一下