You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fedora编译AOSP(crDroid)报错chmod ninja.sh Operation not permitted求助

问题原因
  • 该报错由Fedora默认的安全机制拦截构建操作导致:报错中提到的ninja.sh是ckati在编译流程中临时生成的脚本,生成后会快速销毁,不会持久化存储在磁盘中,因此全局搜索无法找到对应文件。
  • Ubuntu的默认安全策略对AOSP类构建流程的适配度更高,不会拦截这类临时生成脚本的权限修改操作,因此相同源码在Ubuntu环境下可正常编译。
  • 具体触发拦截的常见原因有三类:
    1. 存放ROM源码的分区被挂载了noexec参数,禁止分区内的文件被赋予执行权限
    2. Fedora默认启用的*fapolicyd(文件访问控制守护进程)*拦截了临时脚本的chmod操作
    3. SELinux默认策略拦截了构建过程中的非常规权限修改操作
解决方案

按优先级依次尝试以下操作:

  • 排查分区挂载参数
    执行命令mount | grep <你的ROM源码存放根路径>,检查输出中是否包含noexec标识。如果存在,执行以下命令重新挂载分区移除noexec限制:
    sudo mount -o remount,exec <ROM源码所在分区的挂载路径>
    如需永久生效,修改/etc/fstab中对应分区的挂载配置,删除noexec参数即可。
  • 临时关闭fapolicyd服务
    编译前执行命令:
    sudo systemctl stop fapolicyd
    编译完成后可执行sudo systemctl start fapolicyd恢复防护。如果需要长期编译AOSP,可自行添加fapolicyd规则将源码目录加入访问白名单。
  • 临时关闭SELinux强制模式验证
    执行命令:
    sudo setenforce 0
    重新尝试编译,如果问题解决,编译完成后执行sudo setenforce 1即可恢复SELinux防护,也可自定义SELinux策略豁免编译相关的权限操作。
  • 权限校验
    确认执行编译操作的普通用户对源码目录、out输出目录有完整的rwx权限,不要使用root用户执行编译操作。

内容的提问来源于stack exchange,提问作者fishe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:39:03