bingo build的时候, sol.json的权限报错。

答案内容由AI生成,仅供参考:

:white_check_mark: 解决方案

:white_check_mark: 方法一:使用 root 用户执行构建命令(推荐)

由于 work.create_interface_config 任务需要对系统目录和配置文件进行写操作,普通用户权限不足。必须以 root 用户身份运行 bingo build

操作步骤:

# 切换到 root 用户
sudo su -

# 再次执行构建命令
cd /home/fs007/workspace/manifest
bingo build

:warning: 注意:若系统使用 sudo 环境隔离,建议直接使用 sudo su -sudo -i 进入完整 root 环境,避免 PATH 或 Python 环境不一致导致的新问题。


:white_check_mark: 方法二:检查 sol.json 文件所有权与权限

即使使用 root 用户,也可能因文件已被创建且归属其他用户,导致无法覆盖。

检查命令:

ls -l /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/sol.json

预期输出示例:

-rw-r--r-- 1 fs007 fs007 ... sol.json

若权限不合理,请修复:

# 删除旧文件(或修改权限)
rm -f /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/sol.json

# 或更改所属用户
chown root:root /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/
chmod 755 /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/

然后再以 root 用户重新执行 bingo build


:white_check_mark: 方法三:确保构建环境完整性

根据知识库信息,bingo 工具依赖 Python 第三方库(如 jsonschema),在切换用户后可能出现模块缺失。

若出现类似以下错误:

ModuleNotFoundError: No module named 'jsonschema'

解决方法:

# 以 root 用户安装缺失依赖
pip3 install jsonschema

或统一使用 conda / virtualenv 管理环境,确保 root 和普通用户的 Python 环境一致。

点击此处查看详细分析解答

bingo build 构建过程中 sol.json 权限报错的解决方案

在执行 bingo build 命令构建 OpenUBMC HPM 包的过程中,您遇到如下错误:

ERROR: 生成全量接口配置时发生错误: [Errno 13] Permission denied: 'sol.json'

此错误发生在 work.create_interface_config 任务阶段,具体为生成全量接口配置时因权限不足无法写入或修改 sol.json 文件。


:magnifying_glass_tilted_left: 问题分析

  1. 错误来源

    • 报错信息 [Errno 13] Permission denied 明确指出是权限被拒绝
    • 错误出现在 任务 work.create_interface_config 开始 阶段,表明该问题与接口配置文件的生成过程相关。
    • 涉及文件为 sol.json,该文件属于 OpenUBMC 系统中用于定义 Serial Over LAN (SOL) 功能的接口配置文件。
  2. 上下文依据

    • 知识图谱实体 bingo build 表明,bingo build 是 OpenUBMC 项目的核心构建命令,负责编译、打包和生成 HPM 固件包。

    • 文档片段 #1#2 提供了关键参考:构建过程中的 work.create_interface_config 任务需要特定权限来生成配置文件(如 sensor.jsonsol.json),并且明确指出:

      “该任务需要 root 权限。请切换到 root 用户,再执行 bingo build。”

    • 日志中显示其他非致命告警(如“不能从 yaml 文件中获取到键值”)属于配置缺失提示,不影响构建主流程;而 Permission denied 是导致配置生成失败的关键错误。


:white_check_mark: 解决方案

:white_check_mark: 方法一:使用 root 用户执行构建命令(推荐)

由于 work.create_interface_config 任务需要对系统目录和配置文件进行写操作,普通用户权限不足。必须以 root 用户身份运行 bingo build

操作步骤:

# 切换到 root 用户
sudo su -

# 再次执行构建命令
cd /home/fs007/workspace/manifest
bingo build

:warning: 注意:若系统使用 sudo 环境隔离,建议直接使用 sudo su -sudo -i 进入完整 root 环境,避免 PATH 或 Python 环境不一致导致的新问题。


:white_check_mark: 方法二:检查 sol.json 文件所有权与权限

即使使用 root 用户,也可能因文件已被创建且归属其他用户,导致无法覆盖。

检查命令:

ls -l /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/sol.json

预期输出示例:

-rw-r--r-- 1 fs007 fs007 ... sol.json

若权限不合理,请修复:

# 删除旧文件(或修改权限)
rm -f /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/sol.json

# 或更改所属用户
chown root:root /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/
chmod 755 /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/

然后再以 root 用户重新执行 bingo build


:white_check_mark: 方法三:确保构建环境完整性

根据知识库信息,bingo 工具依赖 Python 第三方库(如 jsonschema),在切换用户后可能出现模块缺失。

若出现类似以下错误:

ModuleNotFoundError: No module named 'jsonschema'

解决方法:

# 以 root 用户安装缺失依赖
pip3 install jsonschema

或统一使用 conda / virtualenv 管理环境,确保 root 和普通用户的 Python 环境一致。


:pushpin: 根本原因总结

项目 内容
直接原因 构建过程中尝试写入 sol.json 时权限不足
根本原因 work.create_interface_config 任务需管理员权限操作输出目录
触发阶段 bingo build 执行的 work.create_interface_config 子任务
典型场景 普通用户执行 bingo build,但在临时输出目录无写入权限

:white_check_mark: 最佳实践建议

  1. 统一使用 root 用户构建(或配置 sudo 免密执行)
  2. 定期清理构建缓存
    rm -rf /home/fs007/workspace/manifest/temp/build_openUBMC_debug_dev/output/*
    
  3. 确保 manifest.yml 配置完整(减少“获取不到键值”类警告)
  4. 升级至最新版 bingo(如 0.6.158)以获得更好的兼容性和错误提示

:white_check_mark: 验证是否修复

成功执行后,日志应显示:

开始生成全量接口配置
生成全量接口配置完成
任务 work.create_interface_config 完成
任务 personal 执行成功

并且可在输出目录找到:

/home/fs007/workspace/manifest/output/rootfs_openUBMC.hpm

表示 HPM 包构建与签名均已完成。


如仍存在问题,请提供 ls -l 输出和完整错误日志以便进一步诊断。

这个报错不影响出包能力,可在output/目录下获取固件包。error的原因是生成全量接口配置的功能需要docker环境具有root权限,也可以使用root用户构建试下。

谢谢。固件包确实已经生成了。我的环境是ubuntu的物理机。

现在改用root账户,再没有出现刚才的问题了。

1 个赞

如无问题可以标记解决方案和关闭帖子。

如何关闭帖子,请指点一下,谢谢