跳到主要内容

WSL2 无法启动、重装 Ubuntu 与执行 configure.sh 权限报错的完整解决方案


WSL2 无法启动、重装 Ubuntu 与执行 configure.sh 权限报错的完整解决方案

适用系统:Windows 10 / 11
适用发行版:Ubuntu 20.04 / 22.04 / 24.04


🧱 一、问题背景

你在执行:

wsl -d Ubuntu-22.04

时出现:

无法将磁盘“C:\Users\xxx\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx”附加到 WSL2:系统找不到指定的文件。
错误代码: Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_FILE_NOT_FOUND

这个错误只说明 WSL 在创建实例或挂载虚拟磁盘时找不到指定路径,不能直接等同于“VHDX 已损坏”。常见情况包括:注册信息仍指向旧路径、VHDX 被移动或删除、发行版迁移/卸载不完整等。

先确认发行版实际注册路径和 ext4.vhdx 是否存在,再决定是修复路径、恢复备份,还是重装。不要一看到这个错误就直接注销发行版。


🩺 二、第一阶段:确认问题原因

1️⃣ 检查虚拟磁盘是否存在

打开资源管理器路径:

C:\Users\xxx\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\

查看是否有文件:ext4.vhdx

结果 下一步
✅ 存在 继续检查注册路径、占用、挂载及文件系统状态,不能仅凭“存在”判断已损坏
❌ 不存在 检查是否被移动、迁移到其他目录、误删,或注册信息仍指向旧位置

⚙️ 三、第二阶段:解决 ext4.vhdx 丢失问题

方法 1:如果文件存在但打不开

1️⃣ 关闭所有 WSL 服务:

wsl --shutdown

2️⃣ 尝试修复:

diskpart

然后依次输入:

select vdisk file="C:\Users\xxx\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
attach vdisk readonly

这只能检查虚拟磁盘能否附加,不能据此判断内部 ext4 文件系统是否完整。附加失败也可能由路径、占用或权限问题造成。检查结束后执行 detach vdisk,再执行 exit 退出 DiskPart。


方法 2:文件不存在(最常见)

先核对该发行版注册的实际路径,并查找备份、磁盘移动记录或回收站。确认 VHDX 无法找回、且不再需要旧系统数据后,才按下面步骤重装。


🔧 四、第三阶段:卸载旧的 Ubuntu 实例

1️⃣ 停止 WSL

wsl --shutdown

2️⃣ 注销(彻底删除)旧 Ubuntu

这一步会永久删除该发行版的数据、软件和配置。若 VHDX 还存在,先在 WSL 停止后复制到其他位置备份;能够启动或导出时,也可先用 wsl --export 备份。确认旧数据已保留或可以放弃后再执行。

wsl --unregister Ubuntu-22.04

若不确定发行版名称:

wsl --list

3️⃣ 不要手工删除发行版目录

执行 wsl --unregister 后,不需要再把 AppData\Local\Packages\... 里的目录当成“残留”手工清理。这里可能同时包含应用包自身数据和发行版状态,路径也会随安装方式变化。

如果只是准备重新安装,先确认 wsl -l -v 中旧实例已经不存在,再通过 wsl --install 或 Microsoft Store 正常安装即可。


🪄 五、第四阶段:重新安装 Ubuntu

方式一:命令行快速安装(推荐)

在 PowerShell(管理员)运行:

wsl --install -d Ubuntu-22.04

如果系统提示 “Installing, this may take a few minutes…
WslRegisterDistribution failed with error: 0x80071772”,请继续往下看👇


🧯 六、第五阶段:解决安装时报错 0x80071772

错误信息:

WslRegisterDistribution failed with error: 0x80071772
Error: 0x80071772

0x80071772 对应 Windows 的“指定文件已加密,而当前用户没有解密能力”错误。它和普通 NTFS 权限不足不是一回事,也不是靠给 AppData 整个目录授予“完全控制”就能解决。

解决步骤:

✅ 1️⃣ 先确认错误文本

如果完整错误明确包含类似:

The specified file is encrypted and the user does not have the ability to decrypt it.

就优先检查发行版安装位置、父目录或目标磁盘是否启用了 EFS 文件加密。不要先去改整个 AppData 的 ACL 权限。

✅ 2️⃣ 检查安装目录是否被 EFS 加密

在资源管理器中查看发行版所在目录或目标安装位置的 属性 -> 高级,确认“加密内容以便保护数据”是否被启用。如果目录确实被 EFS 加密,应先在能够正常解密该目录的用户上下文中解除加密,或把 WSL 安装到未使用 EFS 的本地目录。

BitLocker 是整卷加密,与 EFS 不是同一个机制;正常解锁的 BitLocker 系统盘本身不会等同于这个错误。

✅ 3️⃣ 再检查 WSL 状态

wsl --status
wsl --version
wsl --update

确认 WSL 本身工作正常后,再重新安装发行版:

wsl --install -d Ubuntu-22.04

如果错误文本不是“文件已加密”,而是其他代码,就应按那个具体错误重新排查,不要把这一节套到所有安装失败场景。


🚀 七、第六阶段:初始化 Ubuntu 系统

安装完成后首次运行:

wsl -d Ubuntu-22.04

系统会提示:

Enter new UNIX username:
New password:

设置用户名与密码后即可进入 Ubuntu。


💾 八、第七阶段:备份与恢复建议

建议你立即备份 WSL 虚拟磁盘,以防下次损坏。

✅ 导出 WSL 系统镜像:

wsl --export Ubuntu-22.04 D:\Backup\Ubuntu22.04.tar

✅ 若以后要恢复:

wsl --import Ubuntu-22.04 D:\WSL\Ubuntu22.04 D:\Backup\Ubuntu22.04.tar

⚙️ 九、第八阶段:执行 configure.sh 报错 Permission denied

安装好 Ubuntu 后,你可能遇到:

-bash: ./configure.sh: Permission denied

这通常是因为文件没有执行权限。


🪜 步骤 1:查看文件权限

ls -l configure.sh

若输出为:

-rw-r--r--

说明无执行权限。


🪜 步骤 2:添加执行权限

chmod +x configure.sh

再次运行:

./configure.sh

🧩 特殊情况 1:脚本位于 Windows 目录(如 /mnt/c)

WSL 可以执行 Windows 挂载目录中的脚本;若出现权限问题,应检查挂载选项、文件权限和 CRLF 换行。也可以采用下面两种方式。

✅ 方法 1:

cp /mnt/c/Users/逐梦/Desktop/configure.sh ~/
cd ~
chmod +x configure.sh
./configure.sh

✅ 方法 2:
直接使用 bash 执行(绕过执行权限检查):

bash /mnt/c/Users/逐梦/Desktop/configure.sh

🧩 特殊情况 2:脚本缺少或写错解释器声明

打开文件:

head -n 1 configure.sh

常见 Bash 脚本可以使用:

#!/usr/bin/env bash

或:

#!/bin/bash

具体应与脚本实际使用的 shell 语法一致;如果直接用 bash configure.sh 启动,则不依赖可执行位和 shebang 来选择解释器。


📘 十、知识扩展:理解 Linux 权限

权限符号 含义
r 可读 (read)
w 可写 (write)
x 可执行 (execute)

例如:

-rwxr-xr-x

表示:

  • 所有者可读/写/执行;
  • 组用户和其他人可读/执行。

✅ 十一、总结

阶段 问题 解决方法
1️⃣ 无法附加 VHDX 先核对注册路径和 ext4.vhdx 是否存在,不直接判定损坏
2️⃣ 确认旧实例无法恢复 备份能保留的数据后,再考虑 wsl --unregister Ubuntu-22.04
3️⃣ 重装时报错 0x80071772 优先检查 EFS 加密及完整错误文本
4️⃣ 安装成功但脚本无法执行 检查执行权限、挂载位置和换行格式,可用 chmod +x 或 bash script.sh
5️⃣ 位于 Windows 目录脚本 需要时复制到 Linux 文件系统中再执行

💡 十二、建议与最佳实践

1️⃣ 定期备份 WSL 实例

wsl --export Ubuntu-22.04 D:\Backup\Ubuntu22.04.tar

2️⃣ 不要手工清理 WSL 的发行版数据目录
ext4.vhdx 就是 WSL2 发行版的主要 Linux 文件系统。不要把 AppData 或自定义 WSL 安装目录里的相关文件当普通缓存删除;需要迁移或卸载时优先使用 WSL 自带命令。

3️⃣ 脚本优先放在 Linux 主目录下执行
路径:/home/<用户名>/

4️⃣ 检查并更新 WSL

wsl --update

文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
赏
评论

评论将在接近此处时加载,也可点击立即加载。

  目录