WSL环境下AOSP执行repo sync报Errno 13权限拒绝如何解决
问题根因
你遇到的两类报错中,Errno 13 Permission denied权限拒绝是核心问题,后续的Python序列化错误是repo工具捕获权限异常时产生的衍生问题,无需单独处理。
核心触发原因是你将AOSP源码存放在了WSL挂载的Windows NTFS分区(/mnt/e路径)下:WSL挂载的Windows分区默认采用和Linux不兼容的权限模型,不支持AOSP同步、构建所需的Linux文件权限规则、软链接、大小写敏感等特性,repo同步时创建git引用文件会直接触发权限报错。
解决方案
按优先级从高到低选择:
- 方案1(强烈推荐):将源码迁移到WSL原生Linux文件系统
- 在WSL的用户目录下新建源码存放路径,执行命令:
mkdir -p ~/MyCustomROM/source - 进入该目录重新执行
repo init和repo sync操作即可。原生EXT4分区完全兼容AOSP所需的所有文件特性,不会有权限问题。 - 若需要在Windows侧访问源码,可直接在Windows资源管理器地址栏输入
\\wsl$\Ubuntu-20.04\访问WSL内的所有文件,不影响跨系统读写。
- 在WSL的用户目录下新建源码存放路径,执行命令:
- 方案2(不推荐,仅作临时验证):修改WSL挂载配置适配Windows分区权限
如果你暂时必须将源码存放在Windows分区,可修改WSL的挂载规则兼容Linux权限:- 在WSL中执行命令编辑配置文件:
sudo nano /etc/wsl.conf - 在文件中加入以下内容:
[automount] options = "metadata,umask=22,fmask=11" mountFsTab = false - 保存退出后,在Windows终端执行
wsl --shutdown重启WSL,再重新执行repo sync即可。
注意:就算修改了挂载配置,后续构建AOSP时仍大概率遇到软链接失效、大小写不敏感、IO性能极低等问题,仅适合临时验证使用。
- 在WSL中执行命令编辑配置文件:
内容的提问来源于stack exchange,提问作者luismiguelss
相关产品推荐
相关产品推荐

