WSL2 Ubuntu 22.04只读文件系统导致dpkg及常用命令故障求助
兄弟我太懂你这种抓狂的感觉了!WSL2突然把文件系统搞成只读模式,连dpkg、ps这些基础命令都用不了,简直离谱。别慌,咱们一步步来解决这个问题:
核心原因
这种情况大多是因为WSL2的虚拟磁盘(VHDX文件)因为异常关机、强制终止WSL进程等原因损坏了,系统为了防止数据进一步损坏,自动把文件系统挂载成了只读模式。
修复步骤
1. 彻底关闭所有WSL实例
先把所有Ubuntu终端关掉,然后打开Windows的PowerShell(管理员权限),执行这条命令完全终止WSL:
wsl --shutdown
2. 定位Ubuntu的虚拟磁盘文件
Ubuntu 22.04的默认虚拟磁盘路径一般是:
C:\Users\<你的Windows用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx
把<你的Windows用户名>换成你实际的用户名,比如你Windows叫"Tom",路径就是C:\Users\Tom\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx。如果是自定义安装的WSL,需要自己找对应的VHDX文件。
3. 用Windows磁盘工具修复虚拟磁盘
还是在管理员PowerShell里执行diskpart进入磁盘管理工具,然后依次输入以下命令(注意把路径换成你自己的):
select vdisk file="C:\Users\Tom\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx" attach vdisk readonly repair vdisk detach vdisk
每输完一条按回车,等执行完成再输下一条。
4. 重新启动WSL并修复文件系统
打开PowerShell执行wsl进入Ubuntu,先尝试重新挂载根文件系统为可读写:
sudo mount -o remount,rw /
如果这条命令没有报错,再执行dpkg的修复命令:
sudo dpkg --configure -a
这时候应该就能正常使用dpkg和其他命令了!
备选方案(如果修复失败)
如果上面的方法都救不回来,那只能备份重要数据(如果还能访问的话),然后重置Ubuntu实例:
在管理员PowerShell里执行:
wsl --unregister Ubuntu-22.04
之后去微软商店重新安装Ubuntu 22.04就行,不过这个操作会清除所有Ubuntu里的数据,一定要先备份好重要文件!
备注:内容来源于stack exchange,提问作者DDS

