openUBMC Studio 用户指南
更新时间: 2026/09/03
在AtomGit上查看源码

一、简介

openUBMC Studio 是一款基于 Code - OSS 的 openUBMC 集成开发环境,面向 openUBMC 开发、调试和构建场景。

最近版本新增功能

下表按发布时间倒序汇总 openUBMC Studio 最近三个版本的新增功能,单击功能名称可跳转到对应章节。当前收录 2026 年 8 月和 9 月发布的版本;后续发布新版本时,仅保留最近三个版本。

版本新增功能
2.1.1(2026 年 9 月 1 日)AI 引导环境初始化:通过预置 Prompt 引导 AI Agent 完成 GitCode 登录、开发环境部署和规则集配置。
CSR 拓扑插件 0.3.7:提供本地、日志和远程三种整机拓扑模式,支持总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
事件管理:可视化管理事件字典、描述模板和 CSR 事件绑定,并导出事件字典及机型支持清单。
日志诊断、Agent 日志体检与告警链条分析:导入 BMC 一键日志压缩包或 dump 目录,结合本地证据和 openUBMC RAG 生成问题清单、导出 PDF 报告,并分析指定告警的触发链条。
C/C++、Lua 与北向接口快速调试:根据组件 Git 变更生成调试计划,直接部署 Lua 和运行时配置,按需构建 C/C++ 与生成型北向配置,并完成服务重启、结果校验和环境恢复。
BMC 远程 GDB 调试:支持附加板端 systemd 服务,或部署并启动独立程序进行源码级调试。
出包签名配置:可视化管理 HPM 和 EEPROM 签名档案,生成本地自签名证书并吊销签名者证书。
2026 年 8 月 1 日版本BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级、日志监控和 MCP 工具。
白牌包定制:可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
Manifest 配置与一键出包:可视化编辑 manifest.yml 出包配置,并按机型和包型构建固件包。
组件与固件联合构建:从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。

主要特性

openUBMC Studio 的主要特性包括:

  • 智能代码辅助:提供代码跳转、定义预览和引用查找等功能。
  • 实时错误检查:基于规则集检测代码错误和潜在问题。
  • 表达式计算器:支持 CSR 表达式的编写、调试和批量测试。
  • SMC 命令字配置:提供可视化的 SMC 命令字解析和配置工具。
  • 模型配置:支持产品和规则集的选择与配置。
  • CSR 拓扑可视化与调试:支持本地、日志和远程三种整机拓扑模式,提供总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
  • 事件管理:支持查看和编辑事件字典、描述模板及 CSR 事件绑定。
  • 能效调速配置:支持通过 Excel 导入热设计表格并生成 CSR 调速曲线代码。
  • Manifest 可视化配置:支持配置构建变体、组件依赖、默认特性和组件特性,并提供配置诊断。
  • 组件与固件联合构建:支持从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。
  • 一键出包:支持选择机型和包型,完成出包预检、固件构建、日志查看和产物下载。
  • 签名配置:支持管理 HPM 和 EEPROM 签名档案,并生成或吊销本地自签名证书。
  • AI 引导环境初始化:支持通过 AI Agent 完成社区开发环境初始化。
  • 日志诊断与告警链条分析:支持导入 BMC 一键日志进行可视化诊断、Agent 日志体检和告警链条分析。
  • C/C++、Lua 与北向接口快速调试:支持按照 Git 变更规划直接部署或隔离构建,将最小替换集部署到 BMC 并验证结果。
  • BMC 远程 GDB 调试:支持附加板端服务,或部署独立程序进行源码级调试。
  • BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级和日志监控。
  • 白牌包定制:支持可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
  • 社区集成:对接 openUBMC 社区资源和服务。

二、AI 引导环境初始化

openUBMC Studio 提供 AI 引导环境初始化能力。将预置 Prompt 发送给 AI Agent(例如 opencode、Claude Code 或 Cursor)后,AI Agent 会检测当前状态、诊断问题,并按顺序引导用户完成社区开发环境初始化。

使用前准备

  • 已安装并能正常使用 AI Agent,例如 opencode、Claude Code 或 Cursor。

打开配置引导

  1. 在欢迎页面中单击“配置引导”入口。

  2. 在打开的配置引导窗口中找到“AI 引导初始化”卡片。

复制引导指令

  1. 单击“复制指令”卡片,打开 Prompt 对话框。

  2. 单击“复制到 AI Agent”,将 Prompt 复制到剪贴板。

  3. 切换到 AI Agent,粘贴并发送 Prompt。

了解 AI 引导流程

AI Agent 接收到 Prompt 后,会按以下流程引导用户完成环境初始化:

  1. GitCode 登录认证:AI Agent 打开 OAuth 登录窗口,并在用户授权后检测登录状态。
  2. 环境检测与部署:AI Agent 检测操作系统。Windows 用户可以选择 Docker(约 5 分钟)或 WSL(约 30 分钟)部署方式,Linux 用户直接进入环境配置。
  3. 规则集配置:AI Agent 引导用户在 openUBMC Studio 界面中选择机型和规则集,并通过 localview_get_data_source 验证配置是否生效。
  4. 状态写回:每个步骤完成后,AI Agent 会回写向导状态;全部步骤完成后,向导状态变为“已完成”。

说明

AI Agent 在每个步骤开始前会查询当前配置进度,并自动跳过已完成的步骤。初始化中断后,可以重新发送 Prompt 继续执行。

验证初始化结果

  1. 确认配置引导窗口显示初始化已完成。

  2. 返回欢迎页面,确认状态栏中的登录状态、机型和规则集信息已更新。

常见问题

  • Docker SSH 连接失败:检查容器内 sshd 是否启动、10022 端口是否开放,以及密钥认证是否配置正确。
  • Conan 鉴权失败:检查 GitCode 登录状态是否有效,重新登录后重试。
  • 规则集未生效:在 openUBMC Studio 状态栏中确认是否已选择机型和规则集,必要时重新配置。

三、登录到社区

openUBMC Studio提供了便捷的社区登录功能,通过社区登录可以获取更多资源和服务支持。

登录步骤

  1. 点击IDE右下角状态栏中的登录图标

  2. 在弹出的登录页面中输入您的openUBMC社区账号和密码

  3. 点击“登录”按钮完成登录

登录状态保持

登录成功后,IDE会自动保持和刷新登录状态:

  • 自动刷新:IDE会定期刷新登录状态,确保持续有效
  • 状态保持:退出IDE后,登录状态会继续保持一段时间
  • 自动重连:重新打开IDE时,会自动尝试使用上一次的登录状态重新登录

Conan中心仓集成

登录社区后,IDE会自动同步登录到Conan中心仓:

  • 登录状态自动保持并刷新
  • 只要IDE处于登录状态,Conan就处于登录状态
  • 在执行出包等操作时不会因为认证问题而超时

说明:

建议在开始开发工作前先完成社区登录,以确保能够正常访问所有资源和服务。

四、CSR 编码辅助

openUBMC Studio提供了强大的CSR编码辅助功能,包括引用跳转、规则检查、表达式计算器和SMC计算器等,帮助开发者快速定位代码、发现问题并提高开发效率。

模型配置

使用CSR编码辅助功能前,需要先完成模型配置。登录IDE后,点击Web版Studio状态栏中的"未选择机型"按钮,按以下步骤操作:

  1. 在模型配置页面中,选择对应的产品和规则集。

  2. 确认产品信息后,选择需要配置的模型文件。

  3. 配置模型文件对应的代码仓和分支信息。

  4. 完成配置后,点击"确定"保存配置。模型配置完成后,规则检查、拓扑配置等功能即可正常使用。

说明:

模型配置完成后即可使用以下CSR编码辅助功能。后续如需切换产品或规则集,可重新进行模型配置。

引用跳转功能

引用跳转功能可以帮助开发者快速定位代码定义和引用位置,支持多种跳转方式,大幅提高代码阅读和导航效率。

转到定义

  1. 在代码编辑器中,将光标定位到需要查看定义的符号上。

  2. 使用以下任一方式跳转到定义:

    • 右键点击符号,选择“转到定义”
    • 按住 Ctrl 键,点击符号

  3. 编辑器将自动跳转到符号的定义位置。

转到引用

  1. 在代码编辑器中,将光标定位到需要查看引用的符号上。

  2. 使用以下任一方式查看引用:

    • 按下 Shift + F12
    • 右键点击符号,选择“转到引用”

  3. 在侧边栏将显示所有引用该符号的位置列表。

  4. 点击列表中的项可跳转到对应的引用位置。

鼠标悬停预览定义

  1. 在代码编辑器中,将鼠标悬停在符号上。

  2. 等待片刻,将显示符号的定义预览窗口。

基本规则错误检查功能

openUBMC Studio内置了CSR规则检查功能,模型配置完成后即可支持CSR语法与配置约束的实时检查。该功能支持错误位置高亮和规则自动更新,帮助开发者在编码阶段就发现潜在问题。

实时检查

模型配置后,在openUBMC Studio中打开任意CSR文件,检查自动生效:

页面中的类型错误和格式错误都会被实时拦截:

表达式中的语法错误也可以被实时拦截:

查看检查结果

  1. 错误和警告会以波浪线形式标注在代码中:

    • 红色波浪线:表示错误(Error)
    • 黄色波浪线:表示警告(Warning)

  2. 查看"问题"面板:

    • 点击底部"问题"标签页
    • 查看所有错误和警告列表
    • 点击列表项可快速定位到对应代码位置

复杂规则校验

openUBMC Studio已建立复杂规则校验能力,可以在社区代码仓 openubmc_dsl_rulepack 中开发业务相关的检查规则,自定义规则同样支持实时检查功能。

表达式计算器功能

表达式计算器是openUBMC Studio提供的强大工具,用于编写、调试和测试CSR表达式,帮助开发者快速验证表达式的正确性。

打开表达式计算器

  1. 打开CSR文件,在表达式上方将显示“计算表达式”按钮

  2. 点击“计算表达式”按钮,表达式计算器窗口将在右侧打开

表达式计算器界面

表达式计算器界面包含以下部分:

  • 表达式编辑区:显示和编辑当前选中的表达式
  • 模式切换按钮:可以在“调试模式”和“用例模式”之间切换
  • 变量面板:显示当前表达式中可用的变量及其值
  • 结果面板:显示表达式计算结果和各级管道的计算过程

修改表达式

  1. 在表达式编辑区查看或修改表达式

  2. 修改完成后,点击“保存到文件”按钮保存修改

  3. 保存后,表达式计算器会自动重新加载表达式

  4. 源文件中的表达式修改并保存后,表达式编辑页面也会自动重新加载

调试表达式

  1. 在表达式编辑区查看表达式内容

  2. 在变量面板中输入或修改变量值

  3. 完成输入后,系统将自动计算:

    • 各级管道的中间结果
    • 最终表达式结果

说明:

调试功能可以帮助您逐步查看表达式的计算过程,快速定位问题。

表达式批量用例测试

  1. 在表达式计算器中, 点击“用例模式”按钮切换到批量测试模式

  2. 创建测试用例:

    • 按照要求输入测试用例名称和参数值以及结果值
  3. 执行批量测试:

    • 点击“加载用例”加载所有测试用例
    • 点击“Execute all”执行所有测试用例
    • 查看验证报告,显示每个用例的执行结果

说明:

测试用例可以导出为文件,方便团队共享和版本管理。
建议为复杂表达式编写多个测试用例,确保表达式在各种情况下都能正确工作。

SMC计算器功能

SMC计算器用于解析和配置SMC命令字,帮助开发者快速理解和生成SMC命令,简化SMC相关的开发工作。

打开SMC计算器

  1. 打开CSR文件,定位到Scanner或Accessor的offset字段

  2. 点击offset字段上方显示的"计算偏移量"按钮

  3. SMC计算器窗口将在右侧打开

SMC命令字解析

SMC计算器提供了强大的命令字解析功能:

  1. 自动解析:当前偏移量会被自动解析,显示各字段的含义
  2. 实时计算:修改下方输入框的数据内容将自动更新和计算偏移量
  3. 应用到文件:点击“应用”按钮可以将计算结果写入到CSR文件
  4. 字段提示:鼠标悬停在字段上方可以显示具体的字段含义和说明

SMC命令字可视化辅助

openUBMC Studio提供了直观的SMC命令字可视化功能:

  1. 水印显示:SMC命令字将在CSR中以水印形式显示字段内容,方便查看

  2. 悬停详情:鼠标悬停在offset字段上将显示偏移量的详细信息,包括:

    • 各字段的值
    • 字段的含义
    • 完整的偏移量计算结果

说明:

可视化辅助功能可以帮助您快速理解复杂的SMC命令字结构,减少配置错误。

五、拓扑与 CSR 可视化配置

CSR 拓扑插件提供整机和单板卡两个维度的总线及器件拓扑可视化。0.3.7 版本新增本地、日志和远程三种整机拓扑模式,并支持总线异常检测、日志包离线还原、真机在位调试以及单板卡可视化配置。

创建拓扑配置

  1. 单击 openUBMC Studio 左侧的拓扑十字形侧边栏图标。

  2. 单击“创建配置”。

  3. 单击“添加仓库”,选择 CSR 文件夹,即可在该机型配置中使用来自该文件夹的 CSR。可以添加多个 CSR 代码仓,单击右下角的“确定”即可创建项目。

  4. 创建完成后,拓扑起点为 root.sr

CSR 整机拓扑

CSR 整机拓扑图提供整机维度与单 CSR 维度的总线及器件拓扑可视化:以板卡为节点展示整机的层级结构、Connector 连接关系与总线连线,支持双击板卡下钻到单板视图、从器件库拖拽器件完成配置。根据数据来源不同,拓扑图分为三种使用模式:本地模式日志模式远程模式

三种模式对比与选择

对比项本地模式日志模式远程模式
数据来源模型配置的本地 CSR 代码仓日志压缩包(connectors.txt + .sr真机运行时(mdbctl + framework.log
依赖模型配置
在位状态静态配置,可切换(在位/不在位/天池加载/动态加载)收集时刻快照,只读运行时实际值,可切换开关模拟拔插
典型场景日常开发、搭建整机拓扑、板卡适配现场日志离线分析、问题回溯真机调试、在位异常定位

根据手头资源选择:

  • 有整机 CSR 代码仓,需要搭建或修改拓扑配置 → 本地模式(见下文「本地模式」)。
  • 只有现场日志压缩包,需要还原收集时刻的整机拓扑 → 日志模式(完整指南见导入 BMC 日志压缩包查看 CSR 拓扑)。
  • 有可达真机 BMC,需要查看实时在位或调试板卡加载 → 远程模式(完整指南见远程模式连接 BMC 环境)。

模式切换:日志模式与远程模式均为临时查看模式,重新从侧边栏加载本地拓扑(如切换机型或点击侧边栏文件节点)即恢复本地模式,导入日志产生的临时解压目录会自动清理。

界面说明

拓扑图中的主要元素如下:

  • 板卡节点:每个节点代表一块板卡,显示板卡类型、SR 文件名与对应的板型示意图;根节点为 root.sr(BMC 主板)。
  • 在位状态:节点左上角显示在位标签或开关,含义与可操作性随模式不同,详见各模式说明。
  • 板卡选择器:本地模式下,尚未确定 SR 的节点提供候选板卡列表与数量选择器,用于配置下游板卡。
  • 总线连线与连接桩:连线表示上游 Connector 传入的总线,由上游板卡的连接桩连向下游板卡;总线配置不一致时会出现红色连线或异常标志。
  • 单板下钻:双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面,查看该板卡 SR 的板内拓扑与详情。
  • 工具栏:配置选择框与「导出配置」按钮用于整机拓扑的多配置管理,仅本地模式可用。

本地模式

本地模式是默认模式,数据来自模型配置的本地 CSR 代码仓,用于日常开发中搭建与修改整机拓扑。

查看整机拓扑

点击侧边栏拓扑插件图标,进入整机拓扑图页面,显示如下:

  1. 总线连线:板卡之间的连线为上游 Connector 传入的总线,将鼠标悬停在总线上可显示总线名称。

  2. 总线异常检测:自动检测上游 Connector 传入总线与下游板卡 Anchor 中定义总线的一致性。

    1. 总线类型不匹配

      当上游 Connector 的 Buses 和下游板卡 Anchor 的 Buses 同一索引位置的总线类型不一致时,总线显示为红色,将鼠标悬停在图标上可查看具体信息。

      总线类型判断逻辑:取总线名称前缀,若前缀相同,则认为类型匹配。

    2. 上游多传入总线

      当上游 Connector 的 Buses 数量大于下游板卡 Anchor 的 Buses 数量时,Connector 的 Buses 数组中多出的总线会被识别为上游多传入总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。

    3. 下游板卡多出总线

      当上游 Connector 的 Buses 数量小于下游板卡 Anchor 的 Buses 数量时,下游板卡 Anchor 的 Buses 数组中多出的总线会被识别为下游多定义总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。

  3. 板卡合并:SR 文件中的不同 Connector 加载同一个文件时,拓扑图会将其合并为一张板卡。

配置整机拓扑

  1. 可通过板卡上方选项在整机拓扑中选择对应板卡,各板卡可选下游板卡数量和类型由该板卡的 Connector 配置决定;尚未确定 SR 的节点通过板卡选择器从候选列表中指定 SR 文件。所有配置信息会自动在本地持久化。

  2. 双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。

  3. 通过工具栏的配置选择框可在多套整机配置之间切换,点击「导出配置」可导出当前配置。

在位状态

本地模式根据 SR 文件中上游 Connector 的 IdentifyModePresence 值显示在位状态,单击开关可切换:

显示含义
天池加载IdentifyMode 为 3,由天池配置加载
在位 / 不在位IdentifyMode 为 2,Presence 为固定值 1 / 0
动态加载IdentifyMode 为 2,Presence 为表达式,按表达式动态计算
  1. 板卡在位状态

  2. 切换在位状态:单击开关可同步修改上游 Connector 中 Presence 的值。

CSR 单板卡配置

双击整机拓扑页面的任意板卡,或单击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。单板卡视图支持新增、删除总线或器件,以及修改 Mux 总线的 ChannelId。也可以按 Ctrl + Z 撤销、按 Ctrl + Y 恢复。

定位器件

单击器件,右侧 SR 文件会自动定位到该器件对象所在的位置。

修改 ChannelId

单击器件上方的 ChannelId 数字方块,可修改其值。

新增总线

单击 + 图标,选择总线类型并填写总线后缀,然后单击“确定”新增总线。

删除器件、总线

将鼠标悬停在器件或总线上,单击鼠标右键并选择“删除”。

拖拽器件

打开器件库,将器件拖拽到总线上即可将器件挂载到总线,同时自动修改对应 CSR 文件内容。也可以拖拽器件到可下连的器件卡片上进行挂载。

导入 BMC 日志压缩包查看 CSR 拓扑

openUBMC Studio 支持导入 BMC 一键收集的日志压缩包,在离线环境下还原当前整机加载的 CSR 及其拓扑关系。适用于现场问题定位与离线日志分析:拿到日志包即可查看板卡层级结构、连接关系与在位情况,无需连接真机。

使用前准备

  • 已安装 openUBMC Studio 并启用 CSR 拓扑插件(随主插件提供)。
  • 准备 BMC 一键收集的日志压缩包,支持 ziptartgzgz(含 .tar.gz)格式。
  • 本机需可执行 tar 命令(日志包解压依赖系统 tar)。

说明:

导入日志模式不依赖模型配置,也无需预先创建拓扑项目,可直接使用。

导入日志压缩包

  1. 在 openUBMC Studio 左侧 CSR 拓扑侧边栏视图标题栏,点击「导入日志包」按钮。

  2. 在弹出的文件选择框中,选择 BMC 日志压缩包并点击「选择日志压缩包」确认。

  3. 工具自动解压并解析日志包中的 connectors.txt,随后在主编辑区渲染整机 CSR 拓扑图。导入成功后右下角提示「成功导入: 文件路径」。

查看导入的拓扑

  • 板卡层级与连接关系:拓扑图展示整机各板卡的层级结构与总线连接,查看能力与本地整机拓扑页面一致,但不支持切换板卡配置(配置选择框与导出配置按钮为禁用状态)。

  • 在位状态:每块板卡以只读标签显示在位状态(在位/不在位),状态取自日志包记录。

实现原理

数据来源

导入模式的拓扑数据全部来自日志压缩包内部,不访问真机,各数据项来源如下:

数据项来源用途
板卡层级结构connectors.txt 的树形拓扑部分构建整机拓扑树(板卡父子关系)
Connector 详情(BusesTypePresenceIdentifyMode 等)connectors.txt 的 Connector 详情段总线连线、连接器类型、在位状态
板卡类型与名称(Unit.Type / Unit.Name日志包内的 .sr 文件拓扑节点显示的板卡类型与名称
下游总线(ManagementTopology.Anchor.Buses日志包内的 .sr 文件总线一致性检测的下游锚点
板卡 SR 详情日志包内的 .sr 文件双击板卡下钻查看的自描述内容

connectors.txt 通常位于日志包的 dump_info/AppDump/hwdiscovery/ 目录下;工具同时支持在解压根目录及任意子目录中递归查找。.sr 文件从 connectors.txt 所在目录及其子目录中递归收集。

connectors.txt 格式示例

connectors.txt 由 BMC 硬件自发现流程生成,前半部分是板卡树形结构,后半部分是每个 Connector 的属性详情:

text
root
├─Connector_BMC
│├─Connector_PCPU_1
│└─Connector_PCPU_2
└─Connector_PSU_1

Connector_BMC:
.Buses: ["I2c_1","I2c_2"]
.Type: BMC
.Presence: 1
.IdentifyMode: 2

Connector_PSU_1:
.Buses: ["I2c_3"]
.Type: PSU
.Presence: 0
.IdentifyMode: 2
  • 树形部分:通过行首的 ├─└─ 符号表达层级,每个节点即一块板卡的 Connector,对应 SR 文件名为 节点名.sr(如 Connector_PCPU_1.sr)。

  • 详情部分Connector_XXX: 开启一个 Connector 段,其下以 .属性: 值 逐行列出属性。其中 Presence 决定在位标签(1=在位,0=不在位),Buses 决定上游总线连线。

处理流程

  1. 解压:调用系统 tar(zip 在 Linux 下用 unzip)将日志包解压到固定临时目录。
  2. 查找 connectors.txt:按「解压根目录 → dump_info/AppDump/hwdiscovery/ → 递归子目录」的顺序查找。
  3. 解析:拆分树形结构与 Connector 详情段,得到拓扑树骨架与各 Connector 属性。
  4. 收集 SR 文件:递归收集同目录下全部 .sr 文件并解析缓存到内存。
  5. 构建拓扑:将 Connector 属性与 SR 文件按名称(去除末尾 _序号 后缀)匹配,生成前端拓扑树并渲染。

说明:

在位状态反映的是收集日志时刻的整机状态,非实时数据。

功能验证

导入完成后,可按以下检查项验证功能是否正常:

验证项操作步骤预期结果
导入解析选择 BMC 一键收集日志压缩包导入右下角提示「成功导入: 文件路径」,主编辑区渲染整机拓扑
板卡层级对比拓扑树与日志包 connectors.txt 的树形结构板卡父子层级一致,无遗漏板卡
在位状态查看板卡节点标签,与 connectors.txt 中对应 Connector 的 Presence 值比对标签显示与记录一致(1=在位,0=不在位)
板卡详情下钻双击拓扑中的板卡节点编辑器第二列打开该板卡 SR 文件内容

常见问题

现象处理建议
提示「未找到 connectors.txt 文件」请确认导入的是 BMC 一键收集日志压缩包(内含 connectors.txt
导入会占用/残留磁盘空间吗日志包解压到固定临时目录(系统临时目录/bmc-log-import),每次导入前自动清理旧数据,无需手动维护
能否修改在位状态或板卡配置导入模式为只读查看,不支持修改在位状态与 CSR 配置;配置选择与导出按钮为禁用状态

远程模式连接 BMC 环境

远程模式支持连接真机 BMC 环境,自动从运行时数据(mdbctl 调试命令 + 框架日志)构建整机 CSR 拓扑,实时展示板卡实际在位情况。无需从 BMC 手动导出数据再导入,选择环境即可出图,适用于真机调试、板卡适配验证与在位异常定位。

使用前准备

  • 已安装并启用 BMC环境管理 插件(openubmc.bmcstudio-bmc-remote),并添加至少一条 BMC 连接。连接的添加方法参见 BMC环境管理插件 章节。
  • 目标 BMC 运行 openUBMC 固件,开放 Telnet 调试通道(23 端口免认证调试 shell),且板上具备 mdbctl 调试命令。
  • 开发机无需安装 telnet 客户端,扩展使用内置连接直连。

说明:

远程模式不依赖模型配置,选中环境后自动跳过机型配置流程,直接加载拓扑。

连接 BMC 环境

  1. 在 CSR 拓扑侧边栏视图标题栏,点击「远程调试」按钮。

  2. 在顶部弹出的环境选择框中,选择目标 BMC 环境。列表展示全部已配置连接,并实时探测在线状态(在线/离线图标 + 账号信息)。

  3. 选择后显示「正在加载 xx 环境的 CSR 拓扑」进度通知,工具自动读取真机运行时的 Connector 对象与 SR 加载记录并构建拓扑。

  4. 加载完成后,拓扑图工具栏显示当前连接的环境名称与 IP,主编辑区渲染整机实时拓扑。

查看实时拓扑

  • 真实在位状态:拓扑以真机运行时数据为准(而非静态 root.sr 配置),每块板卡显示实际在位/不在位状态。
  • EEPROM 板卡:CSR 烧录在 EEPROM(而非 .sr 文件)的板卡会被自动解码,与文件板卡同等展示,双击同样可查看内容。
  • 板卡 SR 下钻:双击板卡即可进入单板视图查看该板卡的 SR 内容。
  • 在位调试:板卡节点上的在位开关可点击切换,模拟板卡拔插,详见下文「在位调试」。

在位调试

远程模式下,点击板卡节点上的在位开关即可模拟板卡拔插,验证下级板卡的加载逻辑,无需物理操作真机。

说明:

切换在位状态不是卸载板卡:该板卡已加载的 SR 不受影响,只影响下级板卡的加载判断——下级板卡检测到上游 Connector 的 Presence 为 0 时不会加载。

普通在位属性

Presence 为固定值(1/0)的板卡,节点上显示单个在位开关。点击开关后:

  1. 工具通过 mdbctl setprop 向真机下发修改,更新该 Connector 的 Presence 值;
  2. 重新读取运行时在位状态并重建拓扑(不重新读取 SR 文件);
  3. 下级板卡的加载状态随 Presence 变化体现在拓扑上。

同步属性(多开关)

Presence 为表达式(引用其他对象属性,如多个物理在位开关共用一个 Connector)时,节点上会按同步源渲染多个开关,每个开关对应一个同步源对象的属性。点击单个开关只修改对应同步源对象的属性值,适用于逐个验证各物理开关对板卡加载的影响。

注意:

在位调试通过 setprop 真实修改真机运行时属性,直接影响下级板卡的加载判断。请确认影响范围后再操作,调试完成后建议将开关切回原状态。

实现原理

数据来源

远程模式的拓扑数据来自真机运行时,全部通过 Telnet 调试通道(23 端口)自动采集,各数据项来源如下:

数据项来源用途
Connector 对象清单真机运行时(mdbctl lsobj connector拓扑节点唯一来源,以实际加载为准(非静态 root.sr)
Connector 实际在位值真机运行时(mdbctl lsprop 读取 Presence板卡在位/不在位状态
SR 文件加载记录真机 /var/log/framework.log 中框架打印的加载日志确定每个 Connector 实际加载的 SR 文件路径(含根节点)
SR 文件内容真机 /opt/bmc/sr/*.sr板卡类型/名称(Unit 字段)、下游总线、双击下钻内容
EEPROM 板卡 CSR板上 EEPROM(CDR 容器格式)CSR 烧录在 EEPROM(无 .sr 文件)板卡的解码展示
拓扑层级关系Connector 的 GroupPosition 属性按 GroupPosition 建树(去末两位即父节点)

通过日志查看 Connector 加载的文件

每个 Connector 实际加载的 SR 文件记录在 BMC 的框架日志 /var/log/framework.log 中,由硬件自发现流程打印,共两类记录:

记录一(init.lua,板卡加载主源)——每个 Connector 加载 SR 时打印,position 即该 Connector 的 GroupPosition

text
2026-08-20 10:15:32 hwdiscovery NOTICE: init.lua(152): position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr, ...

记录二(dump.lua,根节点主源)——根板卡的加载只出现在此类记录中:

text
2026-08-20 10:15:30 hwdiscovery NOTICE: dump.lua(88): start to dump connector: root loading file: /opt/bmc/sr/root.sr

工具解析后的对应关系示例:

日志记录解析结果
position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.srGroupPosition 为 0101011A 的 Connector 加载了 14100513_pcie_card.sr
start to dump connector: root loading file: /opt/bmc/sr/root.sr根节点加载 root.sr(拓扑根板卡)
start to dump connector: Connector_EXU_1 loading file: Eeprom/...loading file 为 EEPROM 对象路径)该板卡 CSR 烧录在 EEPROM,工具改走 EEPROM 解码

也可以在 BMC 上手动执行以下命令核对(与工具解析使用同一数据源):

bash
grep -E "get csr data from|start to dump connector" /var/log/framework.log

说明:

同一 Connector 多次加载时取最新一条记录(日志按最新文件优先解析);加载失败的记录(如占位文件)会被过滤,不会体现在拓扑中。

处理流程

  1. 连通性自检:通过 Telnet 23 端口连接目标 BMC,探测调试 shell 可用性。
  2. 发现 Connector:执行 mdbctl lsobj connector 获取运行时全量 Connector 对象,再批量 mdbctl lsprop 读取每个 Connector 的 Presence 实际值。
  3. 解析加载记录:读取 /var/log/framework.log(含历史 .gz 轮转文件),解析「position → SR 文件」与「运行时名 → 文件」两组映射。
  4. 建树:按 Connector 的 GroupPosition 属性构建整机层级(去掉末两位十六进制即父节点位置)。
  5. 读取 SR 内容:按映射从 /opt/bmc/sr/ 读取 .sr 文件;EEPROM 板卡读取 EEPROM 二进制(CDR 容器)并本地解码出 CSR。
  6. 渲染:组装拓扑树、在位状态与 SR 数据,发送到拓扑图视图渲染。

说明:

在位状态以真机运行时数据为准(mdbctl 实时读取),而非 CSR 静态配置中的 Presence 表达式,可避免静态配置与实际加载不一致造成的误判。
所有数据仅在加载拓扑和切换在位开关时读取,不在本地持久化。

功能验证

连接环境并加载拓扑后,可按以下检查项验证功能是否正常:

验证项操作步骤预期结果
环境列表点击「远程调试」按钮列出全部已配置 BMC 连接,并标注在线/离线状态与账号信息
拓扑加载选择一个在线环境显示「正在加载 xx 环境的 CSR 拓扑」进度,完成后工具栏显示环境名与 IP,渲染整机拓扑
在位一致性将拓扑中板卡在位状态与真机实际在位比对(可对照 BMC Web 页面或板上 mdbctl 查询结果)与真机实际加载一致(以运行时数据为准)
加载文件一致性在 BMC 上执行上文 grep 命令,比对拓扑中板卡对应的 SR 文件双击下钻打开的 SR 文件与日志记录的 get csr data from 路径一致
板卡详情下钻双击拓扑中的板卡节点打开单板视图,可查看该板卡 SR 内容
EEPROM 板卡查看拓扑中无 .sr 文件的板卡EEPROM 板卡正常解码展示,双击同样可查看 CSR 内容
在位开关切换点击某板卡节点的在位开关切换后拓扑自动刷新,下级板卡加载状态随之变化
同步属性切换点击同步属性板卡上的单个开关仅对应同步源对象的属性变化,其余开关状态不变,拓扑刷新

常见问题

现象处理建议
提示「未配置 BMC 环境,请先添加连接」先在 BMC环境管理插件中添加连接,参见 BMC环境管理插件 章节
提示「远程拓扑加载失败」检查环境是否在线、BMC 23 端口是否开放、板上 mdbctl 是否可用;详细原因可查看输出通道中 RemoteTopologyLoader 的日志
环境列表显示「探测中」连接健康探测最长 3 秒,离线环境会标注离线状态,不影响选择其他环境

说明:

远程模式下配置选择与导出配置不可用(禁用),与导入日志模式一致。
此外,远程拓扑支持通过 MCP 工具 csr_topo_get_remote_topology 供 AI Agent 查询整机 Connector 在位清单与 SR 来源。

能效调速配置

能效调速配置功能提供能效调速对象的配置入口,支持通过Excel导入热设计表格解析调速曲线配置,支持对象自动关联及配置检查、CSR片段自动生成。

打开配置页面

点击CSR拓扑侧边栏中的温度计图标即可开启能效调速配置页面。

配置能效调速对象

  1. 通过该页面配置能效调速对象,以及配置对象间的关联关系。

  2. 点击右上角的"导入Excel"即可导入热设计表格,当前仅支持xlsx格式,若为其他格式请通过Excel另存为xlsx格式文件。完成导入后,温度点与调速曲线等配置可以自动解析。

  3. 点击右上角"生成CSR"即可根据当前配置产生CSR代码片段,可以自行填入CSR文件中。生成CSR过程支持配置语法检查,禁止出现ID冲突等问题。

六、事件管理

本章节介绍 openUBMC Studio 的事件管理功能。用户可以在 IDE 中查看和编辑 event_def.json 中的事件信息与描述模板,也可以查看、新增和保存事件与 CSR Event_ 对象的绑定关系。

说明

事件管理依赖模型配置生成的事件字典基线。如尚未配置模型,请先完成模型配置中的产品和规则集选择。

功能说明

BMC 事件字典定义了整机事件的事件标识、严重级别、事件编码和描述模板等标准信息。事件管理提供以下能力:

  • 事件字典管理:查看、筛选和搜索全部事件,编辑基础字段与中英文描述模板,新建自定义事件模板,以及还原或导出差量。
  • CSR 绑定管理:查看事件在 SR 文件中绑定的 Event_ 对象,可视化新增、编辑和删除绑定,并批量保存到 SR 文件。

根据打开入口,事件管理提供以下两种视图:

视图入口CSR 绑定聚合范围
单板卡视图单 SR 拓扑视图中的“事件管理”当前 SR 文件及其拆分文件中的 Event_ 对象
整机视图总拓扑页面工具栏中的“事件管理”总拓扑下所有 SR 文件中的 Event_ 对象

两种视图共用同一套事件字典与编辑能力,仅 CSR 绑定的聚合范围不同。

使用前准备

  • 模型配置:已完成产品和规则集选择,事件字典基线来自 Conan 规则包中的 event_def.json
  • 拓扑项目:已通过拓扑侧边栏创建配置并添加 CSR 仓库,当前工作区存在可用的 SR 上下文。

说明

字段修改、描述模板修改和自定义事件模板会以差量形式保存在本地缓存中。编辑停止约 1 秒后,差量会自动写入缓存;关闭事件管理面板时,差量会自动落盘。原始字典文件不会被直接修改。

打开事件管理

  • 打开整机视图:进入总拓扑页面,单击工具栏中的“事件管理”。

  • 打开单板卡视图:进入单 SR 拓扑视图,单击“事件管理”。此时 CSR 绑定范围限定为当前 SR 文件。

事件管理会在独立面板中打开,不影响原拓扑页面。

查看事件管理界面

事件管理界面由工具栏、事件列表、编辑横幅、分页栏和详情面板组成。

  • 工具栏:提供新建事件模板、重新拉取、导出、清除全部筛选和搜索功能。
  • 事件列表:展示全部事件,支持列头筛选和分页。
  • 编辑横幅:存在未导出的编辑时,以黄色或绿色横幅提示导出。
  • 详情面板:单击事件行后显示在界面右侧。拖动面板左边缘可以在约 280~700px 范围内调整宽度,单击“×”可以关闭面板。

筛选和搜索事件

查看列表字段

说明
事件(EventKeyId/EventName事件唯一标识与名称,内容过长时自动省略,悬停后显示全文
级别严重程度:提示(蓝灰)、一般(蓝)、重要(橙)或紧急(红)
CSR 绑定当前视图范围内绑定的 Event_ 对象数量
分类根据事件标识推导的业务分类
机型支持当前机型是否支持该事件
EventCode事件的十六进制唯一编码
恢复上报是否上报恢复事件
EventType事件类型
LifeCycleId生命周期标识

设置筛选条件

  1. 单击“级别”“CSR 绑定”“分类”“机型支持”或“恢复上报”列头中的筛选按钮。
  2. 勾选需要保留的选项。每个选项会显示对应的事件数量。
  3. 如需清空当前列的条件,再次打开筛选菜单并单击“清空筛选”。

右上角搜索框支持按 EventKeyId、事件名称或事件编码进行模糊搜索。存在筛选或搜索条件时,工具栏会显示“清除全部筛选(N)”,单击后可以恢复完整列表。

设置分页

底部分页栏支持将每页数量设置为 20、40、80 或 100 条,也支持按页码跳转。没有事件数据时,可以通过空状态入口新建事件模板;存在数据但被过滤时,可以通过空状态入口清除筛选。

新建和编辑事件

新建事件模板

  1. 单击工具栏中的“新建事件模板”。
  2. 在右侧详情面板中编辑新模板。

新建的自定义事件会置于列表顶部并自动选中。详情面板底部提供“删除该自定义事件模板”按钮。

编辑基础字段

  1. 在事件列表中单击目标事件。

  2. 在右侧详情面板中打开“基础信息”页签。

基础字段说明如下:

字段说明
事件名称 EventName事件短名称,通常与 EventKeyId 的最后一段一致
SeverityId严重级别:0 表示提示、1 表示一般、2 表示重要、3 表示紧急
机型支持标记当前机型是否支持该事件,是导出 eventDefList.txt 的依据
恢复上报 DeassertFlag是否上报恢复事件,与 LifeCycleId 共同决定事件是否可恢复
事件编码 EventCode十六进制唯一编码,例如 0x0200001F
旧版事件编码 OldEventCode跨版本兼容映射,没有对应关系时留空
上报通道 ReportChannel目标通道位掩码,65535 表示向全部通道上报
事件类型 EventTypeBMC 固件定义的编号,当前字典中的常见取值为 01
生命周期标识 LifeCycleIdBMC 固件定义的编号,当前字典中的常见取值为 01
动作标识 ActionIdBMC 固件定义的编号,当前字典中的常见取值为 01

编辑描述模板

“描述模板”区域提供以下四类内容的中英文编辑,单击右上角的“中”或“EN”可以切换语言:

  • Description:描述。
  • Cause:可能原因。
  • Influence:影响。
  • Suggestion:处理建议。

说明

  • 描述支持 %Component%DescArg1%DescArg5 占位符,依次引用 CSR 事件绑定中的 ComponentDescArg 字段。输入占位符后,界面会显示提示。
  • 可能原因与处理建议支持多条内容,多条内容之间使用 @#AB; 分隔。

还原事件数据

  • 还原单个事件:单击详情面板标题行中的“还原”,丢弃该事件的全部本地编辑并恢复为字典基线值。

  • 重新拉取全部事件:单击工具栏中的“重新拉取”,在确认窗口中继续操作。完成后,事件管理会丢弃全部编辑,从 Conan 包重新读取事件字典,并将筛选、搜索和分页恢复为初始状态。

注意

“重新拉取”会丢弃当前所有本地编辑。首次打开事件管理时,系统优先读取本地缓存;仅在需要放弃全部差量或重新获取 Conan 包中的最新数据时执行此操作。

查看并导出修改

存在未同步的编辑时,列表上方会显示编辑横幅。

横幅含义导出文件
黄色事件字段、描述模板或自定义模板发生变化event_def.json
绿色机型支持字段发生变化eventDefList.txt
  • 查看修改:打开变化清单后,可以单击事件标识定位到对应事件,也可以单独还原某个事件。
  • 导出事件字典:导出的 event_def.json 包含全部事件定义与描述模板,文件版本号末段自动加一,例如从 1.0.0 更新为 1.0.1。导出后,请将文件提交到 VPD 仓库进行同步。
  • 导出机型事件清单:导出的 eventDefList.txt 仅包含“机型支持”为“是”的事件标识。

说明

两类横幅会根据修改内容独立显示和导出。两类内容均发生变化时,需要分别导出对应文件。

管理 CSR 绑定

CSR 绑定描述事件与 SR 文件中 Event_ 对象的对应关系。在详情面板中打开“CSR 绑定”页签,可以查看和编辑绑定。

查看 CSR 绑定

页签顶部显示当前视图类型和事件的绑定总数。绑定以卡片形式展示,每张卡片会标注所属 SR 文件,悬停后可以查看完整路径。

新增 CSR 绑定

  1. 单击详情面板底部的“CSR 绑定”。

  2. 在新增卡片中填写绑定字段。

  3. 如果当前处于整机视图,选择“目标 SR 文件”。整机根文件 root.sr 不在候选范围内;单板卡视图会自动使用当前 SR 文件。

  4. 单击“确定”,批量保存本次绑定修改。

查看绑定字段

字段说明
事件对象名必须以 Event_ 开头且不能只有前缀;同一拆分文件组内不得重名,不同组之间允许同名
目标 SR 文件仅在整机视图新增绑定时显示,用于指定绑定写入的 SR 文件
Condition绑定条件;清空后删除该键,纯数字内容会自动转换为数值
Component事件关联的器件组件,候选项按照目标 SR 文件分为“推荐”和“其他”两组
OperatorId操作符编号,可以留空
Enabled是否启用绑定,可以留空以删除该键

验证保存结果

  • “确定”仅在存在修改且表单校验通过时可用;单击“取消”会放弃本次全部修改。
  • 对象名为空、未以 Event_ 开头或在组内重名时,对应输入框会显示错误。
  • 保存成功后,绑定列表和绑定数量会自动刷新,事件列表会定位到当前事件。
  • 在编辑器中直接保存 SR 文件后,绑定列表和绑定数量也会自动刷新。

常见问题

  • 事件字段是否需要手动保存? 不需要。字段与描述模板编辑会在停止输入约 1 秒后写入本地缓存,并在关闭面板时落盘;CSR 绑定修改需要单击“确定”保存到 SR 文件。
  • 重新拉取后编辑全部消失:此行为符合预期。“重新拉取”会丢弃全部本地差量并恢复到字典基线。
  • CSR 绑定提示对象名必须以 Event_ 开头:事件对象名必须带有固定前缀,并且不能只有 Event_ 前缀。
  • 整机视图与单板卡视图的绑定数量不一致:两种视图的聚合范围分别为全部 SR 文件和当前 SR 文件,因此数量可能不同。
  • 还原事件后列表中的绑定数量未变化:“还原”仅丢弃事件字典的本地差量,不修改 CSR 绑定。
  • 导出的文件应提交到哪里? event_def.jsoneventDefList.txt 均用于提交到 VPD 仓库,具体流程遵循团队的字典变更管理规范。
  • 新建的模板在筛选结果中不可见:新建模板时会自动清空筛选。如模板仍不可见,请检查搜索词和列头筛选条件。

七、日志诊断与告警链条分析

一键日志解析插件(扩展 ID:openubmc.bmcstudio-log-reviewer)用于导入 BMC 一键日志包或 dump 目录,并通过可视化页面和 AI Agent 分析设备状态。用户可以浏览硬件、告警、传感器、性能及原始日志,也可以结合 openUBMC RAG 进行日志体检,或通过告警证据工具分析指定事件的触发链条。

功能说明

日志诊断提供以下使用方式:

使用方式主要能力适用场景
一键日志解析页面自动解压日志包,通过概览、硬件、告警、传感器、性能、调速、线缆和日志等视图展示 dump 日志人工浏览现场、筛选日志和快速确认异常范围
Agent 日志体检结合本地日志证据和 openUBMC RAG 生成问题清单,实时回写结果并导出 PDF 报告对日志进行批量体检和问题优先级排序
定向诊断与告警链条分析关联事件记录、运行日志、数据库及 CSR Event 定义,输出告警状态、触发链、恢复或复发情况和证据位置聚焦指定问题、还原告警链条和形成可复核结论

说明

可视化页面中的“智能检测”用于 Agent 日志体检。指定问题的深入诊断和告警链条分析可以在已配置 openUBMC Studio MCP 服务的 AI Agent 对话中发起。

使用前准备

如果活动栏中没有“一键日志解析”图标,请先执行以下操作:

  1. 在 openUBMC Studio 中打开插件市场,搜索“一键日志解析”。
  2. 安装插件,并按照提示重新加载窗口。
  3. 确认活动栏中出现“一键日志解析”图标。

使用 Agent 日志体检前,还需要满足以下条件:

  • 已登录 openUBMC 社区。
  • openubmc-rag 扩展已启用。
  • 当前网络可以访问配置的 LightRAG 服务。
  • AI Agent 可以访问 openUBMC Studio MCP 工具。

AI Agent 会在读取日志前检查 RAG 状态。未登录、RAG 工具未启用、网络异常或状态响应无法解析时,日志体检会停止并显示处理建议。

说明

如果所有 MCP 工具均提示网络错误,请将 localhost127.0.0.0/8::1 加入代理直连列表或 NO_PROXY,然后完全重启 openUBMC Studio 和 AI Agent。

打开一键日志

一键日志解析支持 Windows、Linux、WSL、SSH 远程工作区和容器工作区。

支持导入以下内容:

  • .tar.gz.tgz.tar.zip 格式的 BMC 一键日志压缩包。
  • 已解压且包含 AppDump 子目录的 dump 文件夹。

操作步骤如下:

  1. 单击活动栏中的“一键日志解析”图标。

  2. 根据日志形态,选择“打开 BMC 一键日志压缩包”或“打开 dump 目录”。

  3. 选择日志压缩包或 dump 根目录。选择目录时,应选中包含 AppDump 子目录的 dump 根目录。

  4. 等待解压和解析完成,确认日志页面已在编辑器区域打开。

也可以通过以下入口打开日志:

  • 在资源管理器中右键单击日志压缩包或 dump 文件夹,选择对应的一键日志解析命令。
  • 单击“最近打开”中的历史记录,重新打开对应日志。

“最近打开”最多保存 30 条记录。同一日志已经打开时,再次打开只会定位到原页面。删除一条最近记录时,对应的日志页面也会关闭。

查看日志包要求

日志包中必须存在名称完全匹配的 AppDump 目录,典型结构如下:

text
dump_info/
├── AppDump/
├── LogDump/
├── RTOSDump/
└── OSDump/

插件最多向下查找 6 层目录。AppDump 是导入日志时的必需目录;缺少 LogDumpRTOSDumpOSDump 时,日志包仍可能打开,但对应页面会显示无数据或目录缺失。

项目限制
单次选择1 个日志包,可以重复导入不同日志包
支持格式.tar.gz.tgz.tar.zip
tar 系列解压后总内容不超过 8GiB
tar 系列归档条目不超过 200000 项
ZIP 解压依赖系统中的 tarunzip,单次命令最长执行 300 秒
AppDump 查找深度最多递归 6 层

注意

插件不单独限制压缩文件本身的大小。处理大型日志包时,需要为远程暂存文件、中间 .tar 文件和解压目录预留足够空间,建议可用空间至少为解压后内容大小的两倍。

查看诊断信息

日志面板按照不同领域组织现场信息,常用视图包括:

  • 现场概览:查看机型、健康状态、FRU、板卡和软件版本。
  • 告警与传感器:查看告警记录、活动状态、传感器读值和门限信息。
  • 运行状态:查看性能、功率、进风温度、调速策略和 PID 配置。
  • 硬件关联:查看线缆检测、同步属性、CSR 和丝印信息。
  • 日志与诊断:查看操作日志、应用日志、框架日志、维护日志、驱动日志、串口日志、journalctl、一键日志原始文件和故障诊断文件。
  • 智能检测:使用 AI Agent 和 openUBMC RAG 进行日志体检。

不同页面按需解析日志文件,不会在导入时将所有文件一次性加载到内存。日志视图支持筛选、大小写匹配、全字匹配、正则表达式、匹配项跳转和保存搜索,具体可用项以当前视图为准。

使用 Agent 进行日志体检

日志体检会将本地日志证据与 openUBMC RAG 检索结果关联,并按照严重程度、紧急度和置信度排列问题。故障案例库是可信度最高的知识来源,但不是唯一可用来源。

说明

流程图中的问题数量和内容仅用于说明操作过程。实际问题数量、严重程度和诊断结论以导入日志中的证据及 RAG 检索结果为准。

复制分析 Prompt

  1. 打开日志页面顶部的“智能检测”。

  2. 单击“复制 Prompt 模板”。

  3. 将 Prompt 粘贴到能够访问 openUBMC Studio MCP 工具的 AI Agent 中。

  4. 发送 Prompt,等待 AI Agent 完成 RAG 状态检查并开始分析。

Prompt 已包含以下约束,无需手动填写日志路径:

  • 包含当前日志包的显示名称、分析任务标识和回调地址。
  • 只允许读取当前分析任务绑定的日志包。
  • 必须先检查 RAG 连接和社区登录状态。
  • 必须保留 RAG 引用的真实来源,其中故障案例库来源具有最高可信度。
  • 每个问题必须同时提供 RAG 匹配内容和本地日志证据。
  • 分析完成后,按照用户配置的 TopN 返回结果。

查看实时问题

AI Agent 分析期间,每个已确认的问题会实时显示在“Agent 日志问题”区域。问题卡片包含以下内容:

  • 严重程度:CRITICALHIGHMEDIUMLOW
  • 紧急度:综合故障影响、恶化可能、冗余能力和修复窗口计算的 0~100 分。
  • 置信度:本地多源证据与 RAG 知识的一致程度。
  • 可能原因和处理建议。
  • RAG 匹配内容、来源及可信度。
  • 日志片段、日志包内相对路径和定位信息。

说明

截图中的故障名称和日志内容仅用于演示界面结构,不代表产品预置的诊断结论。

同一根因产生的重复现象应合并为一个问题。分析完成后,插件会依次按照严重程度、紧急度和置信度排序,并展示最紧急的 TopN 问题。

配置 TopN

TopN 默认值为 10,可以设置为 1~50:

  1. 单击“一键日志解析”侧边栏标题栏中的齿轮图标。
  2. 在设置页面中修改 bmcstudio.logReviewer.analysisTopN
  3. 创建新的分析会话,使新设置生效。

TopN 只限制分析完成后页面和 PDF 报告中展示的问题数量。AI Agent 可以在分析过程中回写更多候选问题,插件会在完成时统一排序和截取。已经打开的分析会话继续使用创建会话时的 TopN 值;如需让同一日志使用新的 TopN,请先从“最近打开”中删除该日志,再重新导入并发起分析。

导出 PDF 报告

“导出为 PDF 报告”仅在分析状态变为“已完成”后可用:

  1. 确认页面显示“Agent 智能分析:已完成”。
  2. 单击“导出为 PDF 报告”。
  3. 选择保存路径和文件名。
  4. 使用 PDF 阅读器打开报告,核对摘要、问题排序、RAG 内容、日志证据和处理建议。

报告在当前 openUBMC Studio 扩展宿主运行期间可以持续导出。完全关闭或重启 openUBMC Studio 后,内存中的分析会话不会保留,需要重新发起分析。

处理会话异常

场景预期行为
分析期间关闭日志页面AI Agent 回调可以继续写入后台会话,重新打开同一日志后恢复状态
页面关闭较长时间后重新打开运行中的会话按照空闲策略管理,重新打开并操作后刷新活跃状态
从“最近打开”中删除日志对应页面关闭,关联分析会话被清理
清空“最近打开”所有日志页面关闭,关联分析会话被清理
RAG 不可用分析停止并显示登录、网络或配置建议,不生成主观问题
日志中没有诊断内容日志包格式有效时,分析完成并显示 0 个问题,PDF 报告可以导出
缺少 AppDump导入失败,并提示文件可能不是 openUBMC 一键日志包
缺少 AppDump/fault_diagnosis结构化诊断失败,AI Agent 将分析任务标记为失败

使用 AI Agent 定向诊断日志

在 AI Agent 对话中提供日志路径和分析目标,例如:

text
请打开并诊断 /path/to/bmc-log.tar.gz,先给出设备健康概览、关键异常和对应证据位置。

openUBMC Studio 会打开同一份日志的可视化面板,同时将机型、健康状态、硬件清单、告警、传感器、性能、调速、线缆和 CSR 等结构化数据提供给 AI Agent。后续可以继续要求 AI Agent 聚焦某个领域,例如:

text
继续分析当前日志中的散热异常,关联传感器、调速策略、功率和相关运行日志。

分析告警链条

分析单条告警时,建议提供以下任一组定位信息:

  • 事件码和发生时间。事件码格式为 0x 后接 8 位十六进制数字,时间格式为 YYYY-MM-DD HH:mm:ss
  • sel.txt 中的事件记录 ID。openUBMC Studio 可以据此解析事件码和发生时间。
  • 需要区分多个告警实例时,再补充组件或实例名称。

示例:

text
基于当前打开的一键日志,分析事件码 0x12345678、时间 2026-08-28 14:23:16 的完整告警触发链。
请说明当前告警状态、已观察到和缺失的阶段、恢复与复发情况,并在每个节点标注证据文件及行号或数据库记录位置。

AI Agent 会根据日志中的实际证据按需给出以下内容:

  • 唯一告警锚点及其匹配方式,避免混淆相同事件码的不同告警实例。
  • 告警当前状态,包括 activeinactiveconflictedunknown,并分别列出状态依据。
  • 已观察到的触发流程,例如采样、数值转换、门限或事件规则求值、事件存储和北向上报;未采集到的阶段会标记为缺失。
  • 运行期事件与 dump 内 .sr 文件中 CSR Event/PowerEvent 定义、属性和直接引用关系的关联结果。
  • Assert/Deassert 恢复配对、复发次数下界、历史覆盖范围和可能的时钟跳变。
  • 每个关键事实对应的 dump 相对路径、行号、列号、JSON Pointer 或数据库定位信息。

注意

告警链条分析仅关联 dump 中可观察到的事实,不会自动将时间相邻的事件视为因果,也不会使用静态 CSR 定义证明规则在告警时刻一定执行。日志缺失或状态冲突时,结论会保留为“证据不足”或“存在冲突”,需要结合现场信息和业务知识继续判断。

了解数据范围和安全边界

  • AI Agent 日志工具只能访问分析任务绑定的日志包,不会自动选择其他历史日志。
  • 日志证据使用日志包内相对路径,不会向页面回写宿主绝对路径。
  • 日志体检唯一允许访问的外部知识是 openUBMC RAG 状态和知识检索结果。
  • tar 系列导入会拒绝路径逃逸、绝对路径和解压炸弹,并忽略符号链接、硬链接及设备文件。
  • PDF 报告只包含当前分析会话中的摘要、TopN 问题、RAG 依据和日志证据。

八、BMC 环境管理

本章介绍 openUBMC Studio 的 BMC环境管理 插件(扩展 ID:openubmc.bmcstudio-bmc-remote)的功能与使用方法。该插件用于在 IDE 内集中管理多台 BMC 环境、批量下发命令、上传文件、一键升级固件、实时监控日志、自动调试组件以及远程 GDB 调试。

BMC环境管理插件在活动栏注册一个「BMC环境管理」容器,下设两个视图:

  • BMC Environments:BMC 环境连接树,按分组组织,管理连接的元数据与凭据。
  • Command Macros:命令宏树,维护可批量下发的命令序列。

插件的核心能力包括:

  • 连接管理:以分组方式管理多台 BMC,单条连接可任选 SSH、Telnet 或 WebView 方式接入。
  • 连通性管理:手动或周期性探测 BMC 可达性,并在状态变化时播报。
  • 命令宏:预定义命令序列与变量,按「全部可达 / 分组 / 手动多选」批量下发,回收结构化结果。
  • SFTP 上传:从资源管理器右键将本地文件或目录上传到 BMC。
  • HPM 一键升级:右键 .hpm 固件包,并发升级多台 BMC,全程进度可视。
  • 实时日志监控:实时 tail 远端 /var/log 日志,支持日志轮转衔接、时间回绕校准与原始文件下载。
  • 组件自动调试:根据 Git 变更自动部署 Lua、C/C++ 和北向接口调试内容,详见 C/C++、Lua 与北向接口快速调试
  • 远程 GDB 调试:附加板端服务或部署独立程序进行源码级调试,详见 BMC 远程 GDB 调试
  • MCP 工具:对外暴露 27 个 MCP 工具,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。

使用前准备

环境要求

  • 运行平台:推荐 Linux(Ubuntu)。连接管理以 Linux 为目标平台;HPM 升级与日志监控仅依赖 Node 内置模块,三平台行为一致。
  • 系统依赖:建议预装以下工具:
    • openssh-client:SSH 接入与 SFTP 上传。
    • telnet:Telnet 接入与实时日志监控。
    • tar(支持 -z):目录上传与日志下载解压。
    • libsecret-1-0 / gnome-keyring:Linux 下用于安全存储密码。

安装插件

  1. 在 openUBMC Studio 中打开插件市场(活动栏的「扩展」图标,或按 Ctrl+Shift+X),搜索「BMC环境管理」,点击「安装」。
  2. 安装完成后重启 IDE 生效。活动栏出现「BMC环境管理」图标即表示安装成功。

说明:

若已安装 openUBMC Studio 主插件,BMC环境管理作为配套扩展随其一同提供,具体获取方式请参考 openUBMC Studio 安装指南

BMC 环境管理

新增分组

连接以「分组」为单位组织,系统默认创建一个分组。

  1. BMC Environments 视图标题栏单击「Add Group」按钮。
  2. 输入分组名称并确认。

分组的右键菜单支持「Add」「Rename Group」「Delete Group」。分组非空时拒绝删除(保护数据),需先清空或迁移其下连接。

新增连接

  1. 单击 BMC Environments 视图标题栏「Add BMC Environment」按钮,或在某个分组上右键选择「Add」。
  2. 在弹出的表单中填写连接信息并保存。

连接字段说明:

字段说明备注
名称 name连接显示名称必填
IP 地址 hostBMC 的 IPv4 地址必填,仅接受 IPv4,非法地址会被拒绝
用户名 username登录用户名必填
密码 password登录密码必填(新增时);密码存于操作系统级安全存储,不落配置文件、不进日志
分组 group所属分组不选则落入首个分组
标签 tags标签数组可选,用于归类
描述 description连接描述可选

接入 BMC

在连接上右键,选择接入方式:

  • Connect via SSH:使用进程内 SSH 客户端登录(兼容老款 BMC 的弱算法与 keyboard-interactive 交互),以伪终端呈现。默认在编辑器区(接近全屏)打开,由配置项 bmc.autoMaximizeTerminal 控制,关闭后回到底部面板。
  • Connect via Telnet:调用系统 telnet 命令接入,需本机已安装 telnet。Telnet 不会自动发送密码,需手动输入。
  • Open in WebView:使用系统浏览器打开 BMC Web UI(https://{host})。

SSH 握手超时由 bmc.connectionTimeout(默认 30 秒)控制。

编辑与删除

  • Edit Configuration / Change Password:修改连接信息。编辑密码时留空表示保留原密码。
  • Disconnect:发送 exit、关闭终端并注销会话。
  • Delete:删除前会弹出模态确认;删除会先关闭相关终端并清理该连接的凭据。

说明:

删除连接会连带删除其凭据;删除分组前需先清空连接或迁移。

连通性管理

插件通过 TCP 探测 SSH 22 端口判断 BMC 可达性,连接树图标实时反映状态(不可达时变红),分组徽章显示「X/Y 可达」。

  • 手动探测单个:右键连接 → 「Check Connection Health」,提示可达 / 不可达。
  • 全量刷新:单击视图标题栏「Refresh」,先把全部连接置为检测中再统一探测。
  • 周期检测:右键连接 → 「开启自动检测连通状态」/「关闭自动检测连通状态」。开启后每 10 秒 探测一轮,仅对开启该项的连接生效。
  • 状态播报:右键连接 → 「开启连通性变更播报」/「关闭连通性变更播报」。上线提示「{分组}/{名称} 已上电」,掉线提示「{名称} 已下电」。

探测超时由 bmc.pingTimeout(默认 3000 毫秒)控制。可达性 = 「TCP 22 端口通 + 已配置凭据」;运行宏、上传、升级前均以此作为就绪判据。

命令宏

命令宏用于预定义「一组有序 shell 命令 + 变量 + 失败策略」,运行时按目标范围批量下发到 BMC,每台环境复用一条 SSH 连接执行完整命令集,并回收结构化的「环境 × 命令」结果矩阵。

新建宏

  1. 单击 Command Macros 视图标题栏「Add Command Macro」按钮。
  2. 在表单中填写宏内容并保存。

宏字段说明:

字段说明默认值 / 范围
名称 name宏名称必填
描述 description宏描述可选
命令 commands有序命令列表至少 1 条;每条可单独设置 descriptiontimeoutMsabortOnFailure(遇错:默认 / 中断 / 继续)
变量 variables自定义变量(键名不含 `---

一、简介

openUBMC Studio 是一款基于 Code - OSS 的 openUBMC 集成开发环境,面向 openUBMC 开发、调试和构建场景。

最近版本新增功能

下表按发布时间倒序汇总 openUBMC Studio 最近三个版本的新增功能,单击功能名称可跳转到对应章节。当前收录 2026 年 8 月和 9 月发布的版本;后续发布新版本时,仅保留最近三个版本。

版本新增功能
2.1.1(2026 年 9 月 1 日)AI 引导环境初始化:通过预置 Prompt 引导 AI Agent 完成 GitCode 登录、开发环境部署和规则集配置。
CSR 拓扑插件 0.3.7:提供本地、日志和远程三种整机拓扑模式,支持总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
事件管理:可视化管理事件字典、描述模板和 CSR 事件绑定,并导出事件字典及机型支持清单。
日志诊断、Agent 日志体检与告警链条分析:导入 BMC 一键日志压缩包或 dump 目录,结合本地证据和 openUBMC RAG 生成问题清单、导出 PDF 报告,并分析指定告警的触发链条。
C/C++、Lua 与北向接口快速调试:根据组件 Git 变更生成调试计划,直接部署 Lua 和运行时配置,按需构建 C/C++ 与生成型北向配置,并完成服务重启、结果校验和环境恢复。
BMC 远程 GDB 调试:支持附加板端 systemd 服务,或部署并启动独立程序进行源码级调试。
出包签名配置:可视化管理 HPM 和 EEPROM 签名档案,生成本地自签名证书并吊销签名者证书。
2026 年 8 月 1 日版本BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级、日志监控和 MCP 工具。
白牌包定制:可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
Manifest 配置与一键出包:可视化编辑 manifest.yml 出包配置,并按机型和包型构建固件包。
组件与固件联合构建:从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。

主要特性

openUBMC Studio 的主要特性包括:

  • 智能代码辅助:提供代码跳转、定义预览和引用查找等功能。
  • 实时错误检查:基于规则集检测代码错误和潜在问题。
  • 表达式计算器:支持 CSR 表达式的编写、调试和批量测试。
  • SMC 命令字配置:提供可视化的 SMC 命令字解析和配置工具。
  • 模型配置:支持产品和规则集的选择与配置。
  • CSR 拓扑可视化与调试:支持本地、日志和远程三种整机拓扑模式,提供总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
  • 事件管理:支持查看和编辑事件字典、描述模板及 CSR 事件绑定。
  • 能效调速配置:支持通过 Excel 导入热设计表格并生成 CSR 调速曲线代码。
  • Manifest 可视化配置:支持配置构建变体、组件依赖、默认特性和组件特性,并提供配置诊断。
  • 组件与固件联合构建:支持从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。
  • 一键出包:支持选择机型和包型,完成出包预检、固件构建、日志查看和产物下载。
  • 签名配置:支持管理 HPM 和 EEPROM 签名档案,并生成或吊销本地自签名证书。
  • AI 引导环境初始化:支持通过 AI Agent 完成社区开发环境初始化。
  • 日志诊断与告警链条分析:支持导入 BMC 一键日志进行可视化诊断、Agent 日志体检和告警链条分析。
  • C/C++、Lua 与北向接口快速调试:支持按照 Git 变更规划直接部署或隔离构建,将最小替换集部署到 BMC 并验证结果。
  • BMC 远程 GDB 调试:支持附加板端服务,或部署独立程序进行源码级调试。
  • BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级和日志监控。
  • 白牌包定制:支持可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
  • 社区集成:对接 openUBMC 社区资源和服务。

二、AI 引导环境初始化

openUBMC Studio 提供 AI 引导环境初始化能力。将预置 Prompt 发送给 AI Agent(例如 opencode、Claude Code 或 Cursor)后,AI Agent 会检测当前状态、诊断问题,并按顺序引导用户完成社区开发环境初始化。

使用前准备

  • 已安装并能正常使用 AI Agent,例如 opencode、Claude Code 或 Cursor。

打开配置引导

  1. 在欢迎页面中单击“配置引导”入口。

  2. 在打开的配置引导窗口中找到“AI 引导初始化”卡片。

复制引导指令

  1. 单击“复制指令”卡片,打开 Prompt 对话框。

  2. 单击“复制到 AI Agent”,将 Prompt 复制到剪贴板。

  3. 切换到 AI Agent,粘贴并发送 Prompt。

了解 AI 引导流程

AI Agent 接收到 Prompt 后,会按以下流程引导用户完成环境初始化:

  1. GitCode 登录认证:AI Agent 打开 OAuth 登录窗口,并在用户授权后检测登录状态。
  2. 环境检测与部署:AI Agent 检测操作系统。Windows 用户可以选择 Docker(约 5 分钟)或 WSL(约 30 分钟)部署方式,Linux 用户直接进入环境配置。
  3. 规则集配置:AI Agent 引导用户在 openUBMC Studio 界面中选择机型和规则集,并通过 localview_get_data_source 验证配置是否生效。
  4. 状态写回:每个步骤完成后,AI Agent 会回写向导状态;全部步骤完成后,向导状态变为“已完成”。

说明

AI Agent 在每个步骤开始前会查询当前配置进度,并自动跳过已完成的步骤。初始化中断后,可以重新发送 Prompt 继续执行。

验证初始化结果

  1. 确认配置引导窗口显示初始化已完成。

  2. 返回欢迎页面,确认状态栏中的登录状态、机型和规则集信息已更新。

常见问题

  • Docker SSH 连接失败:检查容器内 sshd 是否启动、10022 端口是否开放,以及密钥认证是否配置正确。
  • Conan 鉴权失败:检查 GitCode 登录状态是否有效,重新登录后重试。
  • 规则集未生效:在 openUBMC Studio 状态栏中确认是否已选择机型和规则集,必要时重新配置。

三、登录到社区

openUBMC Studio提供了便捷的社区登录功能,通过社区登录可以获取更多资源和服务支持。

登录步骤

  1. 点击IDE右下角状态栏中的登录图标

  2. 在弹出的登录页面中输入您的openUBMC社区账号和密码

  3. 点击“登录”按钮完成登录

登录状态保持

登录成功后,IDE会自动保持和刷新登录状态:

  • 自动刷新:IDE会定期刷新登录状态,确保持续有效
  • 状态保持:退出IDE后,登录状态会继续保持一段时间
  • 自动重连:重新打开IDE时,会自动尝试使用上一次的登录状态重新登录

Conan中心仓集成

登录社区后,IDE会自动同步登录到Conan中心仓:

  • 登录状态自动保持并刷新
  • 只要IDE处于登录状态,Conan就处于登录状态
  • 在执行出包等操作时不会因为认证问题而超时

说明:

建议在开始开发工作前先完成社区登录,以确保能够正常访问所有资源和服务。

四、CSR 编码辅助

openUBMC Studio提供了强大的CSR编码辅助功能,包括引用跳转、规则检查、表达式计算器和SMC计算器等,帮助开发者快速定位代码、发现问题并提高开发效率。

模型配置

使用CSR编码辅助功能前,需要先完成模型配置。登录IDE后,点击Web版Studio状态栏中的"未选择机型"按钮,按以下步骤操作:

  1. 在模型配置页面中,选择对应的产品和规则集。

  2. 确认产品信息后,选择需要配置的模型文件。

  3. 配置模型文件对应的代码仓和分支信息。

  4. 完成配置后,点击"确定"保存配置。模型配置完成后,规则检查、拓扑配置等功能即可正常使用。

说明:

模型配置完成后即可使用以下CSR编码辅助功能。后续如需切换产品或规则集,可重新进行模型配置。

引用跳转功能

引用跳转功能可以帮助开发者快速定位代码定义和引用位置,支持多种跳转方式,大幅提高代码阅读和导航效率。

转到定义

  1. 在代码编辑器中,将光标定位到需要查看定义的符号上。

  2. 使用以下任一方式跳转到定义:

    • 右键点击符号,选择“转到定义”
    • 按住 Ctrl 键,点击符号

  3. 编辑器将自动跳转到符号的定义位置。

转到引用

  1. 在代码编辑器中,将光标定位到需要查看引用的符号上。

  2. 使用以下任一方式查看引用:

    • 按下 Shift + F12
    • 右键点击符号,选择“转到引用”

  3. 在侧边栏将显示所有引用该符号的位置列表。

  4. 点击列表中的项可跳转到对应的引用位置。

鼠标悬停预览定义

  1. 在代码编辑器中,将鼠标悬停在符号上。

  2. 等待片刻,将显示符号的定义预览窗口。

基本规则错误检查功能

openUBMC Studio内置了CSR规则检查功能,模型配置完成后即可支持CSR语法与配置约束的实时检查。该功能支持错误位置高亮和规则自动更新,帮助开发者在编码阶段就发现潜在问题。

实时检查

模型配置后,在openUBMC Studio中打开任意CSR文件,检查自动生效:

页面中的类型错误和格式错误都会被实时拦截:

表达式中的语法错误也可以被实时拦截:

查看检查结果

  1. 错误和警告会以波浪线形式标注在代码中:

    • 红色波浪线:表示错误(Error)
    • 黄色波浪线:表示警告(Warning)

  2. 查看"问题"面板:

    • 点击底部"问题"标签页
    • 查看所有错误和警告列表
    • 点击列表项可快速定位到对应代码位置

复杂规则校验

openUBMC Studio已建立复杂规则校验能力,可以在社区代码仓 openubmc_dsl_rulepack 中开发业务相关的检查规则,自定义规则同样支持实时检查功能。

表达式计算器功能

表达式计算器是openUBMC Studio提供的强大工具,用于编写、调试和测试CSR表达式,帮助开发者快速验证表达式的正确性。

打开表达式计算器

  1. 打开CSR文件,在表达式上方将显示“计算表达式”按钮

  2. 点击“计算表达式”按钮,表达式计算器窗口将在右侧打开

表达式计算器界面

表达式计算器界面包含以下部分:

  • 表达式编辑区:显示和编辑当前选中的表达式
  • 模式切换按钮:可以在“调试模式”和“用例模式”之间切换
  • 变量面板:显示当前表达式中可用的变量及其值
  • 结果面板:显示表达式计算结果和各级管道的计算过程

修改表达式

  1. 在表达式编辑区查看或修改表达式

  2. 修改完成后,点击“保存到文件”按钮保存修改

  3. 保存后,表达式计算器会自动重新加载表达式

  4. 源文件中的表达式修改并保存后,表达式编辑页面也会自动重新加载

调试表达式

  1. 在表达式编辑区查看表达式内容

  2. 在变量面板中输入或修改变量值

  3. 完成输入后,系统将自动计算:

    • 各级管道的中间结果
    • 最终表达式结果

说明:

调试功能可以帮助您逐步查看表达式的计算过程,快速定位问题。

表达式批量用例测试

  1. 在表达式计算器中, 点击“用例模式”按钮切换到批量测试模式

  2. 创建测试用例:

    • 按照要求输入测试用例名称和参数值以及结果值
  3. 执行批量测试:

    • 点击“加载用例”加载所有测试用例
    • 点击“Execute all”执行所有测试用例
    • 查看验证报告,显示每个用例的执行结果

说明:

测试用例可以导出为文件,方便团队共享和版本管理。
建议为复杂表达式编写多个测试用例,确保表达式在各种情况下都能正确工作。

SMC计算器功能

SMC计算器用于解析和配置SMC命令字,帮助开发者快速理解和生成SMC命令,简化SMC相关的开发工作。

打开SMC计算器

  1. 打开CSR文件,定位到Scanner或Accessor的offset字段

  2. 点击offset字段上方显示的"计算偏移量"按钮

  3. SMC计算器窗口将在右侧打开

SMC命令字解析

SMC计算器提供了强大的命令字解析功能:

  1. 自动解析:当前偏移量会被自动解析,显示各字段的含义
  2. 实时计算:修改下方输入框的数据内容将自动更新和计算偏移量
  3. 应用到文件:点击“应用”按钮可以将计算结果写入到CSR文件
  4. 字段提示:鼠标悬停在字段上方可以显示具体的字段含义和说明

SMC命令字可视化辅助

openUBMC Studio提供了直观的SMC命令字可视化功能:

  1. 水印显示:SMC命令字将在CSR中以水印形式显示字段内容,方便查看

  2. 悬停详情:鼠标悬停在offset字段上将显示偏移量的详细信息,包括:

    • 各字段的值
    • 字段的含义
    • 完整的偏移量计算结果

说明:

可视化辅助功能可以帮助您快速理解复杂的SMC命令字结构,减少配置错误。

五、拓扑与 CSR 可视化配置

CSR 拓扑插件提供整机和单板卡两个维度的总线及器件拓扑可视化。0.3.7 版本新增本地、日志和远程三种整机拓扑模式,并支持总线异常检测、日志包离线还原、真机在位调试以及单板卡可视化配置。

创建拓扑配置

  1. 单击 openUBMC Studio 左侧的拓扑十字形侧边栏图标。

  2. 单击“创建配置”。

  3. 单击“添加仓库”,选择 CSR 文件夹,即可在该机型配置中使用来自该文件夹的 CSR。可以添加多个 CSR 代码仓,单击右下角的“确定”即可创建项目。

  4. 创建完成后,拓扑起点为 root.sr

CSR 整机拓扑

CSR 整机拓扑图提供整机维度与单 CSR 维度的总线及器件拓扑可视化:以板卡为节点展示整机的层级结构、Connector 连接关系与总线连线,支持双击板卡下钻到单板视图、从器件库拖拽器件完成配置。根据数据来源不同,拓扑图分为三种使用模式:本地模式日志模式远程模式

三种模式对比与选择

对比项本地模式日志模式远程模式
数据来源模型配置的本地 CSR 代码仓日志压缩包(connectors.txt + .sr真机运行时(mdbctl + framework.log
依赖模型配置
在位状态静态配置,可切换(在位/不在位/天池加载/动态加载)收集时刻快照,只读运行时实际值,可切换开关模拟拔插
典型场景日常开发、搭建整机拓扑、板卡适配现场日志离线分析、问题回溯真机调试、在位异常定位

根据手头资源选择:

  • 有整机 CSR 代码仓,需要搭建或修改拓扑配置 → 本地模式(见下文「本地模式」)。
  • 只有现场日志压缩包,需要还原收集时刻的整机拓扑 → 日志模式(完整指南见导入 BMC 日志压缩包查看 CSR 拓扑)。
  • 有可达真机 BMC,需要查看实时在位或调试板卡加载 → 远程模式(完整指南见远程模式连接 BMC 环境)。

模式切换:日志模式与远程模式均为临时查看模式,重新从侧边栏加载本地拓扑(如切换机型或点击侧边栏文件节点)即恢复本地模式,导入日志产生的临时解压目录会自动清理。

界面说明

拓扑图中的主要元素如下:

  • 板卡节点:每个节点代表一块板卡,显示板卡类型、SR 文件名与对应的板型示意图;根节点为 root.sr(BMC 主板)。
  • 在位状态:节点左上角显示在位标签或开关,含义与可操作性随模式不同,详见各模式说明。
  • 板卡选择器:本地模式下,尚未确定 SR 的节点提供候选板卡列表与数量选择器,用于配置下游板卡。
  • 总线连线与连接桩:连线表示上游 Connector 传入的总线,由上游板卡的连接桩连向下游板卡;总线配置不一致时会出现红色连线或异常标志。
  • 单板下钻:双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面,查看该板卡 SR 的板内拓扑与详情。
  • 工具栏:配置选择框与「导出配置」按钮用于整机拓扑的多配置管理,仅本地模式可用。

本地模式

本地模式是默认模式,数据来自模型配置的本地 CSR 代码仓,用于日常开发中搭建与修改整机拓扑。

查看整机拓扑

点击侧边栏拓扑插件图标,进入整机拓扑图页面,显示如下:

  1. 总线连线:板卡之间的连线为上游 Connector 传入的总线,将鼠标悬停在总线上可显示总线名称。

  2. 总线异常检测:自动检测上游 Connector 传入总线与下游板卡 Anchor 中定义总线的一致性。

    1. 总线类型不匹配

      当上游 Connector 的 Buses 和下游板卡 Anchor 的 Buses 同一索引位置的总线类型不一致时,总线显示为红色,将鼠标悬停在图标上可查看具体信息。

      总线类型判断逻辑:取总线名称前缀,若前缀相同,则认为类型匹配。

    2. 上游多传入总线

      当上游 Connector 的 Buses 数量大于下游板卡 Anchor 的 Buses 数量时,Connector 的 Buses 数组中多出的总线会被识别为上游多传入总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。

    3. 下游板卡多出总线

      当上游 Connector 的 Buses 数量小于下游板卡 Anchor 的 Buses 数量时,下游板卡 Anchor 的 Buses 数组中多出的总线会被识别为下游多定义总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。

  3. 板卡合并:SR 文件中的不同 Connector 加载同一个文件时,拓扑图会将其合并为一张板卡。

配置整机拓扑

  1. 可通过板卡上方选项在整机拓扑中选择对应板卡,各板卡可选下游板卡数量和类型由该板卡的 Connector 配置决定;尚未确定 SR 的节点通过板卡选择器从候选列表中指定 SR 文件。所有配置信息会自动在本地持久化。

  2. 双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。

  3. 通过工具栏的配置选择框可在多套整机配置之间切换,点击「导出配置」可导出当前配置。

在位状态

本地模式根据 SR 文件中上游 Connector 的 IdentifyModePresence 值显示在位状态,单击开关可切换:

显示含义
天池加载IdentifyMode 为 3,由天池配置加载
在位 / 不在位IdentifyMode 为 2,Presence 为固定值 1 / 0
动态加载IdentifyMode 为 2,Presence 为表达式,按表达式动态计算
  1. 板卡在位状态

  2. 切换在位状态:单击开关可同步修改上游 Connector 中 Presence 的值。

CSR 单板卡配置

双击整机拓扑页面的任意板卡,或单击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。单板卡视图支持新增、删除总线或器件,以及修改 Mux 总线的 ChannelId。也可以按 Ctrl + Z 撤销、按 Ctrl + Y 恢复。

定位器件

单击器件,右侧 SR 文件会自动定位到该器件对象所在的位置。

修改 ChannelId

单击器件上方的 ChannelId 数字方块,可修改其值。

新增总线

单击 + 图标,选择总线类型并填写总线后缀,然后单击“确定”新增总线。

删除器件、总线

将鼠标悬停在器件或总线上,单击鼠标右键并选择“删除”。

拖拽器件

打开器件库,将器件拖拽到总线上即可将器件挂载到总线,同时自动修改对应 CSR 文件内容。也可以拖拽器件到可下连的器件卡片上进行挂载。

导入 BMC 日志压缩包查看 CSR 拓扑

openUBMC Studio 支持导入 BMC 一键收集的日志压缩包,在离线环境下还原当前整机加载的 CSR 及其拓扑关系。适用于现场问题定位与离线日志分析:拿到日志包即可查看板卡层级结构、连接关系与在位情况,无需连接真机。

使用前准备

  • 已安装 openUBMC Studio 并启用 CSR 拓扑插件(随主插件提供)。
  • 准备 BMC 一键收集的日志压缩包,支持 ziptartgzgz(含 .tar.gz)格式。
  • 本机需可执行 tar 命令(日志包解压依赖系统 tar)。

说明:

导入日志模式不依赖模型配置,也无需预先创建拓扑项目,可直接使用。

导入日志压缩包

  1. 在 openUBMC Studio 左侧 CSR 拓扑侧边栏视图标题栏,点击「导入日志包」按钮。

  2. 在弹出的文件选择框中,选择 BMC 日志压缩包并点击「选择日志压缩包」确认。

  3. 工具自动解压并解析日志包中的 connectors.txt,随后在主编辑区渲染整机 CSR 拓扑图。导入成功后右下角提示「成功导入: 文件路径」。

查看导入的拓扑

  • 板卡层级与连接关系:拓扑图展示整机各板卡的层级结构与总线连接,查看能力与本地整机拓扑页面一致,但不支持切换板卡配置(配置选择框与导出配置按钮为禁用状态)。

  • 在位状态:每块板卡以只读标签显示在位状态(在位/不在位),状态取自日志包记录。

实现原理

数据来源

导入模式的拓扑数据全部来自日志压缩包内部,不访问真机,各数据项来源如下:

数据项来源用途
板卡层级结构connectors.txt 的树形拓扑部分构建整机拓扑树(板卡父子关系)
Connector 详情(BusesTypePresenceIdentifyMode 等)connectors.txt 的 Connector 详情段总线连线、连接器类型、在位状态
板卡类型与名称(Unit.Type / Unit.Name日志包内的 .sr 文件拓扑节点显示的板卡类型与名称
下游总线(ManagementTopology.Anchor.Buses日志包内的 .sr 文件总线一致性检测的下游锚点
板卡 SR 详情日志包内的 .sr 文件双击板卡下钻查看的自描述内容

connectors.txt 通常位于日志包的 dump_info/AppDump/hwdiscovery/ 目录下;工具同时支持在解压根目录及任意子目录中递归查找。.sr 文件从 connectors.txt 所在目录及其子目录中递归收集。

connectors.txt 格式示例

connectors.txt 由 BMC 硬件自发现流程生成,前半部分是板卡树形结构,后半部分是每个 Connector 的属性详情:

text
root
├─Connector_BMC
│├─Connector_PCPU_1
│└─Connector_PCPU_2
└─Connector_PSU_1

Connector_BMC:
.Buses: ["I2c_1","I2c_2"]
.Type: BMC
.Presence: 1
.IdentifyMode: 2

Connector_PSU_1:
.Buses: ["I2c_3"]
.Type: PSU
.Presence: 0
.IdentifyMode: 2
  • 树形部分:通过行首的 ├─└─ 符号表达层级,每个节点即一块板卡的 Connector,对应 SR 文件名为 节点名.sr(如 Connector_PCPU_1.sr)。

  • 详情部分Connector_XXX: 开启一个 Connector 段,其下以 .属性: 值 逐行列出属性。其中 Presence 决定在位标签(1=在位,0=不在位),Buses 决定上游总线连线。

处理流程

  1. 解压:调用系统 tar(zip 在 Linux 下用 unzip)将日志包解压到固定临时目录。
  2. 查找 connectors.txt:按「解压根目录 → dump_info/AppDump/hwdiscovery/ → 递归子目录」的顺序查找。
  3. 解析:拆分树形结构与 Connector 详情段,得到拓扑树骨架与各 Connector 属性。
  4. 收集 SR 文件:递归收集同目录下全部 .sr 文件并解析缓存到内存。
  5. 构建拓扑:将 Connector 属性与 SR 文件按名称(去除末尾 _序号 后缀)匹配,生成前端拓扑树并渲染。

说明:

在位状态反映的是收集日志时刻的整机状态,非实时数据。

功能验证

导入完成后,可按以下检查项验证功能是否正常:

验证项操作步骤预期结果
导入解析选择 BMC 一键收集日志压缩包导入右下角提示「成功导入: 文件路径」,主编辑区渲染整机拓扑
板卡层级对比拓扑树与日志包 connectors.txt 的树形结构板卡父子层级一致,无遗漏板卡
在位状态查看板卡节点标签,与 connectors.txt 中对应 Connector 的 Presence 值比对标签显示与记录一致(1=在位,0=不在位)
板卡详情下钻双击拓扑中的板卡节点编辑器第二列打开该板卡 SR 文件内容

常见问题

现象处理建议
提示「未找到 connectors.txt 文件」请确认导入的是 BMC 一键收集日志压缩包(内含 connectors.txt
导入会占用/残留磁盘空间吗日志包解压到固定临时目录(系统临时目录/bmc-log-import),每次导入前自动清理旧数据,无需手动维护
能否修改在位状态或板卡配置导入模式为只读查看,不支持修改在位状态与 CSR 配置;配置选择与导出按钮为禁用状态

远程模式连接 BMC 环境

远程模式支持连接真机 BMC 环境,自动从运行时数据(mdbctl 调试命令 + 框架日志)构建整机 CSR 拓扑,实时展示板卡实际在位情况。无需从 BMC 手动导出数据再导入,选择环境即可出图,适用于真机调试、板卡适配验证与在位异常定位。

使用前准备

  • 已安装并启用 BMC环境管理 插件(openubmc.bmcstudio-bmc-remote),并添加至少一条 BMC 连接。连接的添加方法参见 BMC环境管理插件 章节。
  • 目标 BMC 运行 openUBMC 固件,开放 Telnet 调试通道(23 端口免认证调试 shell),且板上具备 mdbctl 调试命令。
  • 开发机无需安装 telnet 客户端,扩展使用内置连接直连。

说明:

远程模式不依赖模型配置,选中环境后自动跳过机型配置流程,直接加载拓扑。

连接 BMC 环境

  1. 在 CSR 拓扑侧边栏视图标题栏,点击「远程调试」按钮。

  2. 在顶部弹出的环境选择框中,选择目标 BMC 环境。列表展示全部已配置连接,并实时探测在线状态(在线/离线图标 + 账号信息)。

  3. 选择后显示「正在加载 xx 环境的 CSR 拓扑」进度通知,工具自动读取真机运行时的 Connector 对象与 SR 加载记录并构建拓扑。

  4. 加载完成后,拓扑图工具栏显示当前连接的环境名称与 IP,主编辑区渲染整机实时拓扑。

查看实时拓扑

  • 真实在位状态:拓扑以真机运行时数据为准(而非静态 root.sr 配置),每块板卡显示实际在位/不在位状态。
  • EEPROM 板卡:CSR 烧录在 EEPROM(而非 .sr 文件)的板卡会被自动解码,与文件板卡同等展示,双击同样可查看内容。
  • 板卡 SR 下钻:双击板卡即可进入单板视图查看该板卡的 SR 内容。
  • 在位调试:板卡节点上的在位开关可点击切换,模拟板卡拔插,详见下文「在位调试」。

在位调试

远程模式下,点击板卡节点上的在位开关即可模拟板卡拔插,验证下级板卡的加载逻辑,无需物理操作真机。

说明:

切换在位状态不是卸载板卡:该板卡已加载的 SR 不受影响,只影响下级板卡的加载判断——下级板卡检测到上游 Connector 的 Presence 为 0 时不会加载。

普通在位属性

Presence 为固定值(1/0)的板卡,节点上显示单个在位开关。点击开关后:

  1. 工具通过 mdbctl setprop 向真机下发修改,更新该 Connector 的 Presence 值;
  2. 重新读取运行时在位状态并重建拓扑(不重新读取 SR 文件);
  3. 下级板卡的加载状态随 Presence 变化体现在拓扑上。

同步属性(多开关)

Presence 为表达式(引用其他对象属性,如多个物理在位开关共用一个 Connector)时,节点上会按同步源渲染多个开关,每个开关对应一个同步源对象的属性。点击单个开关只修改对应同步源对象的属性值,适用于逐个验证各物理开关对板卡加载的影响。

注意:

在位调试通过 setprop 真实修改真机运行时属性,直接影响下级板卡的加载判断。请确认影响范围后再操作,调试完成后建议将开关切回原状态。

实现原理

数据来源

远程模式的拓扑数据来自真机运行时,全部通过 Telnet 调试通道(23 端口)自动采集,各数据项来源如下:

数据项来源用途
Connector 对象清单真机运行时(mdbctl lsobj connector拓扑节点唯一来源,以实际加载为准(非静态 root.sr)
Connector 实际在位值真机运行时(mdbctl lsprop 读取 Presence板卡在位/不在位状态
SR 文件加载记录真机 /var/log/framework.log 中框架打印的加载日志确定每个 Connector 实际加载的 SR 文件路径(含根节点)
SR 文件内容真机 /opt/bmc/sr/*.sr板卡类型/名称(Unit 字段)、下游总线、双击下钻内容
EEPROM 板卡 CSR板上 EEPROM(CDR 容器格式)CSR 烧录在 EEPROM(无 .sr 文件)板卡的解码展示
拓扑层级关系Connector 的 GroupPosition 属性按 GroupPosition 建树(去末两位即父节点)

通过日志查看 Connector 加载的文件

每个 Connector 实际加载的 SR 文件记录在 BMC 的框架日志 /var/log/framework.log 中,由硬件自发现流程打印,共两类记录:

记录一(init.lua,板卡加载主源)——每个 Connector 加载 SR 时打印,position 即该 Connector 的 GroupPosition

text
2026-08-20 10:15:32 hwdiscovery NOTICE: init.lua(152): position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr, ...

记录二(dump.lua,根节点主源)——根板卡的加载只出现在此类记录中:

text
2026-08-20 10:15:30 hwdiscovery NOTICE: dump.lua(88): start to dump connector: root loading file: /opt/bmc/sr/root.sr

工具解析后的对应关系示例:

日志记录解析结果
position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.srGroupPosition 为 0101011A 的 Connector 加载了 14100513_pcie_card.sr
start to dump connector: root loading file: /opt/bmc/sr/root.sr根节点加载 root.sr(拓扑根板卡)
start to dump connector: Connector_EXU_1 loading file: Eeprom/...loading file 为 EEPROM 对象路径)该板卡 CSR 烧录在 EEPROM,工具改走 EEPROM 解码

也可以在 BMC 上手动执行以下命令核对(与工具解析使用同一数据源):

bash
grep -E "get csr data from|start to dump connector" /var/log/framework.log

说明:

同一 Connector 多次加载时取最新一条记录(日志按最新文件优先解析);加载失败的记录(如占位文件)会被过滤,不会体现在拓扑中。

处理流程

  1. 连通性自检:通过 Telnet 23 端口连接目标 BMC,探测调试 shell 可用性。
  2. 发现 Connector:执行 mdbctl lsobj connector 获取运行时全量 Connector 对象,再批量 mdbctl lsprop 读取每个 Connector 的 Presence 实际值。
  3. 解析加载记录:读取 /var/log/framework.log(含历史 .gz 轮转文件),解析「position → SR 文件」与「运行时名 → 文件」两组映射。
  4. 建树:按 Connector 的 GroupPosition 属性构建整机层级(去掉末两位十六进制即父节点位置)。
  5. 读取 SR 内容:按映射从 /opt/bmc/sr/ 读取 .sr 文件;EEPROM 板卡读取 EEPROM 二进制(CDR 容器)并本地解码出 CSR。
  6. 渲染:组装拓扑树、在位状态与 SR 数据,发送到拓扑图视图渲染。

说明:

在位状态以真机运行时数据为准(mdbctl 实时读取),而非 CSR 静态配置中的 Presence 表达式,可避免静态配置与实际加载不一致造成的误判。
所有数据仅在加载拓扑和切换在位开关时读取,不在本地持久化。

功能验证

连接环境并加载拓扑后,可按以下检查项验证功能是否正常:

验证项操作步骤预期结果
环境列表点击「远程调试」按钮列出全部已配置 BMC 连接,并标注在线/离线状态与账号信息
拓扑加载选择一个在线环境显示「正在加载 xx 环境的 CSR 拓扑」进度,完成后工具栏显示环境名与 IP,渲染整机拓扑
在位一致性将拓扑中板卡在位状态与真机实际在位比对(可对照 BMC Web 页面或板上 mdbctl 查询结果)与真机实际加载一致(以运行时数据为准)
加载文件一致性在 BMC 上执行上文 grep 命令,比对拓扑中板卡对应的 SR 文件双击下钻打开的 SR 文件与日志记录的 get csr data from 路径一致
板卡详情下钻双击拓扑中的板卡节点打开单板视图,可查看该板卡 SR 内容
EEPROM 板卡查看拓扑中无 .sr 文件的板卡EEPROM 板卡正常解码展示,双击同样可查看 CSR 内容
在位开关切换点击某板卡节点的在位开关切换后拓扑自动刷新,下级板卡加载状态随之变化
同步属性切换点击同步属性板卡上的单个开关仅对应同步源对象的属性变化,其余开关状态不变,拓扑刷新

常见问题

现象处理建议
提示「未配置 BMC 环境,请先添加连接」先在 BMC环境管理插件中添加连接,参见 BMC环境管理插件 章节
提示「远程拓扑加载失败」检查环境是否在线、BMC 23 端口是否开放、板上 mdbctl 是否可用;详细原因可查看输出通道中 RemoteTopologyLoader 的日志
环境列表显示「探测中」连接健康探测最长 3 秒,离线环境会标注离线状态,不影响选择其他环境

说明:

远程模式下配置选择与导出配置不可用(禁用),与导入日志模式一致。
此外,远程拓扑支持通过 MCP 工具 csr_topo_get_remote_topology 供 AI Agent 查询整机 Connector 在位清单与 SR 来源。

能效调速配置

能效调速配置功能提供能效调速对象的配置入口,支持通过Excel导入热设计表格解析调速曲线配置,支持对象自动关联及配置检查、CSR片段自动生成。

打开配置页面

点击CSR拓扑侧边栏中的温度计图标即可开启能效调速配置页面。

配置能效调速对象

  1. 通过该页面配置能效调速对象,以及配置对象间的关联关系。

  2. 点击右上角的"导入Excel"即可导入热设计表格,当前仅支持xlsx格式,若为其他格式请通过Excel另存为xlsx格式文件。完成导入后,温度点与调速曲线等配置可以自动解析。

  3. 点击右上角"生成CSR"即可根据当前配置产生CSR代码片段,可以自行填入CSR文件中。生成CSR过程支持配置语法检查,禁止出现ID冲突等问题。

六、事件管理

本章节介绍 openUBMC Studio 的事件管理功能。用户可以在 IDE 中查看和编辑 event_def.json 中的事件信息与描述模板,也可以查看、新增和保存事件与 CSR Event_ 对象的绑定关系。

说明

事件管理依赖模型配置生成的事件字典基线。如尚未配置模型,请先完成模型配置中的产品和规则集选择。

功能说明

BMC 事件字典定义了整机事件的事件标识、严重级别、事件编码和描述模板等标准信息。事件管理提供以下能力:

  • 事件字典管理:查看、筛选和搜索全部事件,编辑基础字段与中英文描述模板,新建自定义事件模板,以及还原或导出差量。
  • CSR 绑定管理:查看事件在 SR 文件中绑定的 Event_ 对象,可视化新增、编辑和删除绑定,并批量保存到 SR 文件。

根据打开入口,事件管理提供以下两种视图:

视图入口CSR 绑定聚合范围
单板卡视图单 SR 拓扑视图中的“事件管理”当前 SR 文件及其拆分文件中的 Event_ 对象
整机视图总拓扑页面工具栏中的“事件管理”总拓扑下所有 SR 文件中的 Event_ 对象

两种视图共用同一套事件字典与编辑能力,仅 CSR 绑定的聚合范围不同。

使用前准备

  • 模型配置:已完成产品和规则集选择,事件字典基线来自 Conan 规则包中的 event_def.json
  • 拓扑项目:已通过拓扑侧边栏创建配置并添加 CSR 仓库,当前工作区存在可用的 SR 上下文。

说明

字段修改、描述模板修改和自定义事件模板会以差量形式保存在本地缓存中。编辑停止约 1 秒后,差量会自动写入缓存;关闭事件管理面板时,差量会自动落盘。原始字典文件不会被直接修改。

打开事件管理

  • 打开整机视图:进入总拓扑页面,单击工具栏中的“事件管理”。

  • 打开单板卡视图:进入单 SR 拓扑视图,单击“事件管理”。此时 CSR 绑定范围限定为当前 SR 文件。

事件管理会在独立面板中打开,不影响原拓扑页面。

查看事件管理界面

事件管理界面由工具栏、事件列表、编辑横幅、分页栏和详情面板组成。

  • 工具栏:提供新建事件模板、重新拉取、导出、清除全部筛选和搜索功能。
  • 事件列表:展示全部事件,支持列头筛选和分页。
  • 编辑横幅:存在未导出的编辑时,以黄色或绿色横幅提示导出。
  • 详情面板:单击事件行后显示在界面右侧。拖动面板左边缘可以在约 280~700px 范围内调整宽度,单击“×”可以关闭面板。

筛选和搜索事件

查看列表字段

说明
事件(EventKeyId/EventName事件唯一标识与名称,内容过长时自动省略,悬停后显示全文
级别严重程度:提示(蓝灰)、一般(蓝)、重要(橙)或紧急(红)
CSR 绑定当前视图范围内绑定的 Event_ 对象数量
分类根据事件标识推导的业务分类
机型支持当前机型是否支持该事件
EventCode事件的十六进制唯一编码
恢复上报是否上报恢复事件
EventType事件类型
LifeCycleId生命周期标识

设置筛选条件

  1. 单击“级别”“CSR 绑定”“分类”“机型支持”或“恢复上报”列头中的筛选按钮。
  2. 勾选需要保留的选项。每个选项会显示对应的事件数量。
  3. 如需清空当前列的条件,再次打开筛选菜单并单击“清空筛选”。

右上角搜索框支持按 EventKeyId、事件名称或事件编码进行模糊搜索。存在筛选或搜索条件时,工具栏会显示“清除全部筛选(N)”,单击后可以恢复完整列表。

设置分页

底部分页栏支持将每页数量设置为 20、40、80 或 100 条,也支持按页码跳转。没有事件数据时,可以通过空状态入口新建事件模板;存在数据但被过滤时,可以通过空状态入口清除筛选。

新建和编辑事件

新建事件模板

  1. 单击工具栏中的“新建事件模板”。
  2. 在右侧详情面板中编辑新模板。

新建的自定义事件会置于列表顶部并自动选中。详情面板底部提供“删除该自定义事件模板”按钮。

编辑基础字段

  1. 在事件列表中单击目标事件。

  2. 在右侧详情面板中打开“基础信息”页签。

基础字段说明如下:

字段说明
事件名称 EventName事件短名称,通常与 EventKeyId 的最后一段一致
SeverityId严重级别:0 表示提示、1 表示一般、2 表示重要、3 表示紧急
机型支持标记当前机型是否支持该事件,是导出 eventDefList.txt 的依据
恢复上报 DeassertFlag是否上报恢复事件,与 LifeCycleId 共同决定事件是否可恢复
事件编码 EventCode十六进制唯一编码,例如 0x0200001F
旧版事件编码 OldEventCode跨版本兼容映射,没有对应关系时留空
上报通道 ReportChannel目标通道位掩码,65535 表示向全部通道上报
事件类型 EventTypeBMC 固件定义的编号,当前字典中的常见取值为 01
生命周期标识 LifeCycleIdBMC 固件定义的编号,当前字典中的常见取值为 01
动作标识 ActionIdBMC 固件定义的编号,当前字典中的常见取值为 01

编辑描述模板

“描述模板”区域提供以下四类内容的中英文编辑,单击右上角的“中”或“EN”可以切换语言:

  • Description:描述。
  • Cause:可能原因。
  • Influence:影响。
  • Suggestion:处理建议。

说明

  • 描述支持 %Component%DescArg1%DescArg5 占位符,依次引用 CSR 事件绑定中的 ComponentDescArg 字段。输入占位符后,界面会显示提示。
  • 可能原因与处理建议支持多条内容,多条内容之间使用 @#AB; 分隔。

还原事件数据

  • 还原单个事件:单击详情面板标题行中的“还原”,丢弃该事件的全部本地编辑并恢复为字典基线值。

  • 重新拉取全部事件:单击工具栏中的“重新拉取”,在确认窗口中继续操作。完成后,事件管理会丢弃全部编辑,从 Conan 包重新读取事件字典,并将筛选、搜索和分页恢复为初始状态。

注意

“重新拉取”会丢弃当前所有本地编辑。首次打开事件管理时,系统优先读取本地缓存;仅在需要放弃全部差量或重新获取 Conan 包中的最新数据时执行此操作。

查看并导出修改

存在未同步的编辑时,列表上方会显示编辑横幅。

横幅含义导出文件
黄色事件字段、描述模板或自定义模板发生变化event_def.json
绿色机型支持字段发生变化eventDefList.txt
  • 查看修改:打开变化清单后,可以单击事件标识定位到对应事件,也可以单独还原某个事件。
  • 导出事件字典:导出的 event_def.json 包含全部事件定义与描述模板,文件版本号末段自动加一,例如从 1.0.0 更新为 1.0.1。导出后,请将文件提交到 VPD 仓库进行同步。
  • 导出机型事件清单:导出的 eventDefList.txt 仅包含“机型支持”为“是”的事件标识。

说明

两类横幅会根据修改内容独立显示和导出。两类内容均发生变化时,需要分别导出对应文件。

管理 CSR 绑定

CSR 绑定描述事件与 SR 文件中 Event_ 对象的对应关系。在详情面板中打开“CSR 绑定”页签,可以查看和编辑绑定。

查看 CSR 绑定

页签顶部显示当前视图类型和事件的绑定总数。绑定以卡片形式展示,每张卡片会标注所属 SR 文件,悬停后可以查看完整路径。

新增 CSR 绑定

  1. 单击详情面板底部的“CSR 绑定”。

  2. 在新增卡片中填写绑定字段。

  3. 如果当前处于整机视图,选择“目标 SR 文件”。整机根文件 root.sr 不在候选范围内;单板卡视图会自动使用当前 SR 文件。

  4. 单击“确定”,批量保存本次绑定修改。

查看绑定字段

字段说明
事件对象名必须以 Event_ 开头且不能只有前缀;同一拆分文件组内不得重名,不同组之间允许同名
目标 SR 文件仅在整机视图新增绑定时显示,用于指定绑定写入的 SR 文件
Condition绑定条件;清空后删除该键,纯数字内容会自动转换为数值
Component事件关联的器件组件,候选项按照目标 SR 文件分为“推荐”和“其他”两组
OperatorId操作符编号,可以留空
Enabled是否启用绑定,可以留空以删除该键

验证保存结果

  • “确定”仅在存在修改且表单校验通过时可用;单击“取消”会放弃本次全部修改。
  • 对象名为空、未以 Event_ 开头或在组内重名时,对应输入框会显示错误。
  • 保存成功后,绑定列表和绑定数量会自动刷新,事件列表会定位到当前事件。
  • 在编辑器中直接保存 SR 文件后,绑定列表和绑定数量也会自动刷新。

常见问题

  • 事件字段是否需要手动保存? 不需要。字段与描述模板编辑会在停止输入约 1 秒后写入本地缓存,并在关闭面板时落盘;CSR 绑定修改需要单击“确定”保存到 SR 文件。
  • 重新拉取后编辑全部消失:此行为符合预期。“重新拉取”会丢弃全部本地差量并恢复到字典基线。
  • CSR 绑定提示对象名必须以 Event_ 开头:事件对象名必须带有固定前缀,并且不能只有 Event_ 前缀。
  • 整机视图与单板卡视图的绑定数量不一致:两种视图的聚合范围分别为全部 SR 文件和当前 SR 文件,因此数量可能不同。
  • 还原事件后列表中的绑定数量未变化:“还原”仅丢弃事件字典的本地差量,不修改 CSR 绑定。
  • 导出的文件应提交到哪里? event_def.jsoneventDefList.txt 均用于提交到 VPD 仓库,具体流程遵循团队的字典变更管理规范。
  • 新建的模板在筛选结果中不可见:新建模板时会自动清空筛选。如模板仍不可见,请检查搜索词和列头筛选条件。

七、日志诊断与告警链条分析

一键日志解析插件(扩展 ID:openubmc.bmcstudio-log-reviewer)用于导入 BMC 一键日志包或 dump 目录,并通过可视化页面和 AI Agent 分析设备状态。用户可以浏览硬件、告警、传感器、性能及原始日志,也可以结合 openUBMC RAG 进行日志体检,或通过告警证据工具分析指定事件的触发链条。

功能说明

日志诊断提供以下使用方式:

使用方式主要能力适用场景
一键日志解析页面自动解压日志包,通过概览、硬件、告警、传感器、性能、调速、线缆和日志等视图展示 dump 日志人工浏览现场、筛选日志和快速确认异常范围
Agent 日志体检结合本地日志证据和 openUBMC RAG 生成问题清单,实时回写结果并导出 PDF 报告对日志进行批量体检和问题优先级排序
定向诊断与告警链条分析关联事件记录、运行日志、数据库及 CSR Event 定义,输出告警状态、触发链、恢复或复发情况和证据位置聚焦指定问题、还原告警链条和形成可复核结论

说明

可视化页面中的“智能检测”用于 Agent 日志体检。指定问题的深入诊断和告警链条分析可以在已配置 openUBMC Studio MCP 服务的 AI Agent 对话中发起。

使用前准备

如果活动栏中没有“一键日志解析”图标,请先执行以下操作:

  1. 在 openUBMC Studio 中打开插件市场,搜索“一键日志解析”。
  2. 安装插件,并按照提示重新加载窗口。
  3. 确认活动栏中出现“一键日志解析”图标。

使用 Agent 日志体检前,还需要满足以下条件:

  • 已登录 openUBMC 社区。
  • openubmc-rag 扩展已启用。
  • 当前网络可以访问配置的 LightRAG 服务。
  • AI Agent 可以访问 openUBMC Studio MCP 工具。

AI Agent 会在读取日志前检查 RAG 状态。未登录、RAG 工具未启用、网络异常或状态响应无法解析时,日志体检会停止并显示处理建议。

说明

如果所有 MCP 工具均提示网络错误,请将 localhost127.0.0.0/8::1 加入代理直连列表或 NO_PROXY,然后完全重启 openUBMC Studio 和 AI Agent。

打开一键日志

一键日志解析支持 Windows、Linux、WSL、SSH 远程工作区和容器工作区。

支持导入以下内容:

  • .tar.gz.tgz.tar.zip 格式的 BMC 一键日志压缩包。
  • 已解压且包含 AppDump 子目录的 dump 文件夹。

操作步骤如下:

  1. 单击活动栏中的“一键日志解析”图标。

  2. 根据日志形态,选择“打开 BMC 一键日志压缩包”或“打开 dump 目录”。

  3. 选择日志压缩包或 dump 根目录。选择目录时,应选中包含 AppDump 子目录的 dump 根目录。

  4. 等待解压和解析完成,确认日志页面已在编辑器区域打开。

也可以通过以下入口打开日志:

  • 在资源管理器中右键单击日志压缩包或 dump 文件夹,选择对应的一键日志解析命令。
  • 单击“最近打开”中的历史记录,重新打开对应日志。

“最近打开”最多保存 30 条记录。同一日志已经打开时,再次打开只会定位到原页面。删除一条最近记录时,对应的日志页面也会关闭。

查看日志包要求

日志包中必须存在名称完全匹配的 AppDump 目录,典型结构如下:

text
dump_info/
├── AppDump/
├── LogDump/
├── RTOSDump/
└── OSDump/

插件最多向下查找 6 层目录。AppDump 是导入日志时的必需目录;缺少 LogDumpRTOSDumpOSDump 时,日志包仍可能打开,但对应页面会显示无数据或目录缺失。

项目限制
单次选择1 个日志包,可以重复导入不同日志包
支持格式.tar.gz.tgz.tar.zip
tar 系列解压后总内容不超过 8GiB
tar 系列归档条目不超过 200000 项
ZIP 解压依赖系统中的 tarunzip,单次命令最长执行 300 秒
AppDump 查找深度最多递归 6 层

注意

插件不单独限制压缩文件本身的大小。处理大型日志包时,需要为远程暂存文件、中间 .tar 文件和解压目录预留足够空间,建议可用空间至少为解压后内容大小的两倍。

查看诊断信息

日志面板按照不同领域组织现场信息,常用视图包括:

  • 现场概览:查看机型、健康状态、FRU、板卡和软件版本。
  • 告警与传感器:查看告警记录、活动状态、传感器读值和门限信息。
  • 运行状态:查看性能、功率、进风温度、调速策略和 PID 配置。
  • 硬件关联:查看线缆检测、同步属性、CSR 和丝印信息。
  • 日志与诊断:查看操作日志、应用日志、框架日志、维护日志、驱动日志、串口日志、journalctl、一键日志原始文件和故障诊断文件。
  • 智能检测:使用 AI Agent 和 openUBMC RAG 进行日志体检。

不同页面按需解析日志文件,不会在导入时将所有文件一次性加载到内存。日志视图支持筛选、大小写匹配、全字匹配、正则表达式、匹配项跳转和保存搜索,具体可用项以当前视图为准。

使用 Agent 进行日志体检

日志体检会将本地日志证据与 openUBMC RAG 检索结果关联,并按照严重程度、紧急度和置信度排列问题。故障案例库是可信度最高的知识来源,但不是唯一可用来源。

说明

流程图中的问题数量和内容仅用于说明操作过程。实际问题数量、严重程度和诊断结论以导入日志中的证据及 RAG 检索结果为准。

复制分析 Prompt

  1. 打开日志页面顶部的“智能检测”。

  2. 单击“复制 Prompt 模板”。

  3. 将 Prompt 粘贴到能够访问 openUBMC Studio MCP 工具的 AI Agent 中。

  4. 发送 Prompt,等待 AI Agent 完成 RAG 状态检查并开始分析。

Prompt 已包含以下约束,无需手动填写日志路径:

  • 包含当前日志包的显示名称、分析任务标识和回调地址。
  • 只允许读取当前分析任务绑定的日志包。
  • 必须先检查 RAG 连接和社区登录状态。
  • 必须保留 RAG 引用的真实来源,其中故障案例库来源具有最高可信度。
  • 每个问题必须同时提供 RAG 匹配内容和本地日志证据。
  • 分析完成后,按照用户配置的 TopN 返回结果。

查看实时问题

AI Agent 分析期间,每个已确认的问题会实时显示在“Agent 日志问题”区域。问题卡片包含以下内容:

  • 严重程度:CRITICALHIGHMEDIUMLOW
  • 紧急度:综合故障影响、恶化可能、冗余能力和修复窗口计算的 0~100 分。
  • 置信度:本地多源证据与 RAG 知识的一致程度。
  • 可能原因和处理建议。
  • RAG 匹配内容、来源及可信度。
  • 日志片段、日志包内相对路径和定位信息。

说明

截图中的故障名称和日志内容仅用于演示界面结构,不代表产品预置的诊断结论。

同一根因产生的重复现象应合并为一个问题。分析完成后,插件会依次按照严重程度、紧急度和置信度排序,并展示最紧急的 TopN 问题。

配置 TopN

TopN 默认值为 10,可以设置为 1~50:

  1. 单击“一键日志解析”侧边栏标题栏中的齿轮图标。
  2. 在设置页面中修改 bmcstudio.logReviewer.analysisTopN
  3. 创建新的分析会话,使新设置生效。

TopN 只限制分析完成后页面和 PDF 报告中展示的问题数量。AI Agent 可以在分析过程中回写更多候选问题,插件会在完成时统一排序和截取。已经打开的分析会话继续使用创建会话时的 TopN 值;如需让同一日志使用新的 TopN,请先从“最近打开”中删除该日志,再重新导入并发起分析。

导出 PDF 报告

“导出为 PDF 报告”仅在分析状态变为“已完成”后可用:

  1. 确认页面显示“Agent 智能分析:已完成”。
  2. 单击“导出为 PDF 报告”。
  3. 选择保存路径和文件名。
  4. 使用 PDF 阅读器打开报告,核对摘要、问题排序、RAG 内容、日志证据和处理建议。

报告在当前 openUBMC Studio 扩展宿主运行期间可以持续导出。完全关闭或重启 openUBMC Studio 后,内存中的分析会话不会保留,需要重新发起分析。

处理会话异常

场景预期行为
分析期间关闭日志页面AI Agent 回调可以继续写入后台会话,重新打开同一日志后恢复状态
页面关闭较长时间后重新打开运行中的会话按照空闲策略管理,重新打开并操作后刷新活跃状态
从“最近打开”中删除日志对应页面关闭,关联分析会话被清理
清空“最近打开”所有日志页面关闭,关联分析会话被清理
RAG 不可用分析停止并显示登录、网络或配置建议,不生成主观问题
日志中没有诊断内容日志包格式有效时,分析完成并显示 0 个问题,PDF 报告可以导出
缺少 AppDump导入失败,并提示文件可能不是 openUBMC 一键日志包
缺少 AppDump/fault_diagnosis结构化诊断失败,AI Agent 将分析任务标记为失败

使用 AI Agent 定向诊断日志

在 AI Agent 对话中提供日志路径和分析目标,例如:

text
请打开并诊断 /path/to/bmc-log.tar.gz,先给出设备健康概览、关键异常和对应证据位置。

openUBMC Studio 会打开同一份日志的可视化面板,同时将机型、健康状态、硬件清单、告警、传感器、性能、调速、线缆和 CSR 等结构化数据提供给 AI Agent。后续可以继续要求 AI Agent 聚焦某个领域,例如:

text
继续分析当前日志中的散热异常,关联传感器、调速策略、功率和相关运行日志。

分析告警链条

分析单条告警时,建议提供以下任一组定位信息:

  • 事件码和发生时间。事件码格式为 0x 后接 8 位十六进制数字,时间格式为 YYYY-MM-DD HH:mm:ss
  • sel.txt 中的事件记录 ID。openUBMC Studio 可以据此解析事件码和发生时间。
  • 需要区分多个告警实例时,再补充组件或实例名称。

示例:

text
基于当前打开的一键日志,分析事件码 0x12345678、时间 2026-08-28 14:23:16 的完整告警触发链。
请说明当前告警状态、已观察到和缺失的阶段、恢复与复发情况,并在每个节点标注证据文件及行号或数据库记录位置。

AI Agent 会根据日志中的实际证据按需给出以下内容:

  • 唯一告警锚点及其匹配方式,避免混淆相同事件码的不同告警实例。
  • 告警当前状态,包括 activeinactiveconflictedunknown,并分别列出状态依据。
  • 已观察到的触发流程,例如采样、数值转换、门限或事件规则求值、事件存储和北向上报;未采集到的阶段会标记为缺失。
  • 运行期事件与 dump 内 .sr 文件中 CSR Event/PowerEvent 定义、属性和直接引用关系的关联结果。
  • Assert/Deassert 恢复配对、复发次数下界、历史覆盖范围和可能的时钟跳变。
  • 每个关键事实对应的 dump 相对路径、行号、列号、JSON Pointer 或数据库定位信息。

注意

告警链条分析仅关联 dump 中可观察到的事实,不会自动将时间相邻的事件视为因果,也不会使用静态 CSR 定义证明规则在告警时刻一定执行。日志缺失或状态冲突时,结论会保留为“证据不足”或“存在冲突”,需要结合现场信息和业务知识继续判断。

了解数据范围和安全边界

  • AI Agent 日志工具只能访问分析任务绑定的日志包,不会自动选择其他历史日志。
  • 日志证据使用日志包内相对路径,不会向页面回写宿主绝对路径。
  • 日志体检唯一允许访问的外部知识是 openUBMC RAG 状态和知识检索结果。
  • tar 系列导入会拒绝路径逃逸、绝对路径和解压炸弹,并忽略符号链接、硬链接及设备文件。
  • PDF 报告只包含当前分析会话中的摘要、TopN 问题、RAG 依据和日志证据。

八、BMC 环境管理

本章介绍 openUBMC Studio 的 BMC环境管理 插件(扩展 ID:openubmc.bmcstudio-bmc-remote)的功能与使用方法。该插件用于在 IDE 内集中管理多台 BMC 环境、批量下发命令、上传文件、一键升级固件、实时监控日志、自动调试组件以及远程 GDB 调试。

BMC环境管理插件在活动栏注册一个「BMC环境管理」容器,下设两个视图:

  • BMC Environments:BMC 环境连接树,按分组组织,管理连接的元数据与凭据。
  • Command Macros:命令宏树,维护可批量下发的命令序列。

插件的核心能力包括:

  • 连接管理:以分组方式管理多台 BMC,单条连接可任选 SSH、Telnet 或 WebView 方式接入。
  • 连通性管理:手动或周期性探测 BMC 可达性,并在状态变化时播报。
  • 命令宏:预定义命令序列与变量,按「全部可达 / 分组 / 手动多选」批量下发,回收结构化结果。
  • SFTP 上传:从资源管理器右键将本地文件或目录上传到 BMC。
  • HPM 一键升级:右键 .hpm 固件包,并发升级多台 BMC,全程进度可视。
  • 实时日志监控:实时 tail 远端 /var/log 日志,支持日志轮转衔接、时间回绕校准与原始文件下载。
  • 组件自动调试:根据 Git 变更自动部署 Lua、C/C++ 和北向接口调试内容,详见 C/C++、Lua 与北向接口快速调试
  • 远程 GDB 调试:附加板端服务或部署独立程序进行源码级调试,详见 BMC 远程 GDB 调试
  • MCP 工具:对外暴露 27 个 MCP 工具,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。

使用前准备

环境要求

  • 运行平台:推荐 Linux(Ubuntu)。连接管理以 Linux 为目标平台;HPM 升级与日志监控仅依赖 Node 内置模块,三平台行为一致。
  • 系统依赖:建议预装以下工具:
    • openssh-client:SSH 接入与 SFTP 上传。
    • telnet:Telnet 接入与实时日志监控。
    • tar(支持 -z):目录上传与日志下载解压。
    • libsecret-1-0 / gnome-keyring:Linux 下用于安全存储密码。

安装插件

  1. 在 openUBMC Studio 中打开插件市场(活动栏的「扩展」图标,或按 Ctrl+Shift+X),搜索「BMC环境管理」,点击「安装」。
  2. 安装完成后重启 IDE 生效。活动栏出现「BMC环境管理」图标即表示安装成功。

说明:

若已安装 openUBMC Studio 主插件,BMC环境管理作为配套扩展随其一同提供,具体获取方式请参考 openUBMC Studio 安装指南

BMC 环境管理

新增分组

连接以「分组」为单位组织,系统默认创建一个分组。

  1. BMC Environments 视图标题栏单击「Add Group」按钮。
  2. 输入分组名称并确认。

分组的右键菜单支持「Add」「Rename Group」「Delete Group」。分组非空时拒绝删除(保护数据),需先清空或迁移其下连接。

新增连接

  1. 单击 BMC Environments 视图标题栏「Add BMC Environment」按钮,或在某个分组上右键选择「Add」。
  2. 在弹出的表单中填写连接信息并保存。

连接字段说明:

字段说明备注
名称 name连接显示名称必填
IP 地址 hostBMC 的 IPv4 地址必填,仅接受 IPv4,非法地址会被拒绝
用户名 username登录用户名必填
密码 password登录密码必填(新增时);密码存于操作系统级安全存储,不落配置文件、不进日志
分组 group所属分组不选则落入首个分组
标签 tags标签数组可选,用于归类
描述 description连接描述可选

接入 BMC

在连接上右键,选择接入方式:

  • Connect via SSH:使用进程内 SSH 客户端登录(兼容老款 BMC 的弱算法与 keyboard-interactive 交互),以伪终端呈现。默认在编辑器区(接近全屏)打开,由配置项 bmc.autoMaximizeTerminal 控制,关闭后回到底部面板。
  • Connect via Telnet:调用系统 telnet 命令接入,需本机已安装 telnet。Telnet 不会自动发送密码,需手动输入。
  • Open in WebView:使用系统浏览器打开 BMC Web UI(https://{host})。

SSH 握手超时由 bmc.connectionTimeout(默认 30 秒)控制。

编辑与删除

  • Edit Configuration / Change Password:修改连接信息。编辑密码时留空表示保留原密码。
  • Disconnect:发送 exit、关闭终端并注销会话。
  • Delete:删除前会弹出模态确认;删除会先关闭相关终端并清理该连接的凭据。

说明:

删除连接会连带删除其凭据;删除分组前需先清空连接或迁移。

连通性管理

插件通过 TCP 探测 SSH 22 端口判断 BMC 可达性,连接树图标实时反映状态(不可达时变红),分组徽章显示「X/Y 可达」。

  • 手动探测单个:右键连接 → 「Check Connection Health」,提示可达 / 不可达。
  • 全量刷新:单击视图标题栏「Refresh」,先把全部连接置为检测中再统一探测。
  • 周期检测:右键连接 → 「开启自动检测连通状态」/「关闭自动检测连通状态」。开启后每 10 秒 探测一轮,仅对开启该项的连接生效。
  • 状态播报:右键连接 → 「开启连通性变更播报」/「关闭连通性变更播报」。上线提示「{分组}/{名称} 已上电」,掉线提示「{名称} 已下电」。

探测超时由 bmc.pingTimeout(默认 3000 毫秒)控制。可达性 = 「TCP 22 端口通 + 已配置凭据」;运行宏、上传、升级前均以此作为就绪判据。

命令宏

命令宏用于预定义「一组有序 shell 命令 + 变量 + 失败策略」,运行时按目标范围批量下发到 BMC,每台环境复用一条 SSH 连接执行完整命令集,并回收结构化的「环境 × 命令」结果矩阵。

新建宏

  1. 单击 Command Macros 视图标题栏「Add Command Macro」按钮。
  2. 在表单中填写宏内容并保存。

宏字段说明:

字段说明默认值 / 范围
名称 name宏名称必填
描述 description宏描述可选
命令 commands有序命令列表至少 1 条;每条可单独设置 descriptiontimeoutMsabortOnFailure(遇错:默认 / 中断 / 继续)
变量 variables自定义变量(键名不含 )与内置变量合并;同名时内置优先
失败策略 onError宏级策略continue(继续)/ abort(中断该环境后续命令);默认 continue
命令超时 timeoutMs单条命令超时(毫秒)默认 30000;单条命令可覆盖
并发度 concurrency环境间并发度1–8,默认 1
标签 tags标签(表单中逗号分隔)可选

变量替换

命令模板支持变量占位:

  • 语法:$VAR${VAR}$ 转义为字面 `---

一、简介

openUBMC Studio 是一款基于 Code - OSS 的 openUBMC 集成开发环境,面向 openUBMC 开发、调试和构建场景。

最近版本新增功能

下表按发布时间倒序汇总 openUBMC Studio 最近三个版本的新增功能,单击功能名称可跳转到对应章节。当前收录 2026 年 8 月和 9 月发布的版本;后续发布新版本时,仅保留最近三个版本。

版本新增功能
2.1.1(2026 年 9 月 1 日)AI 引导环境初始化:通过预置 Prompt 引导 AI Agent 完成 GitCode 登录、开发环境部署和规则集配置。
CSR 拓扑插件 0.3.7:提供本地、日志和远程三种整机拓扑模式,支持总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
事件管理:可视化管理事件字典、描述模板和 CSR 事件绑定,并导出事件字典及机型支持清单。
日志诊断、Agent 日志体检与告警链条分析:导入 BMC 一键日志压缩包或 dump 目录,结合本地证据和 openUBMC RAG 生成问题清单、导出 PDF 报告,并分析指定告警的触发链条。
C/C++、Lua 与北向接口快速调试:根据组件 Git 变更生成调试计划,直接部署 Lua 和运行时配置,按需构建 C/C++ 与生成型北向配置,并完成服务重启、结果校验和环境恢复。
BMC 远程 GDB 调试:支持附加板端 systemd 服务,或部署并启动独立程序进行源码级调试。
出包签名配置:可视化管理 HPM 和 EEPROM 签名档案,生成本地自签名证书并吊销签名者证书。
2026 年 8 月 1 日版本BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级、日志监控和 MCP 工具。
白牌包定制:可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
Manifest 配置与一键出包:可视化编辑 manifest.yml 出包配置,并按机型和包型构建固件包。
组件与固件联合构建:从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。

主要特性

openUBMC Studio 的主要特性包括:

  • 智能代码辅助:提供代码跳转、定义预览和引用查找等功能。
  • 实时错误检查:基于规则集检测代码错误和潜在问题。
  • 表达式计算器:支持 CSR 表达式的编写、调试和批量测试。
  • SMC 命令字配置:提供可视化的 SMC 命令字解析和配置工具。
  • 模型配置:支持产品和规则集的选择与配置。
  • CSR 拓扑可视化与调试:支持本地、日志和远程三种整机拓扑模式,提供总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
  • 事件管理:支持查看和编辑事件字典、描述模板及 CSR 事件绑定。
  • 能效调速配置:支持通过 Excel 导入热设计表格并生成 CSR 调速曲线代码。
  • Manifest 可视化配置:支持配置构建变体、组件依赖、默认特性和组件特性,并提供配置诊断。
  • 组件与固件联合构建:支持从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。
  • 一键出包:支持选择机型和包型,完成出包预检、固件构建、日志查看和产物下载。
  • 签名配置:支持管理 HPM 和 EEPROM 签名档案,并生成或吊销本地自签名证书。
  • AI 引导环境初始化:支持通过 AI Agent 完成社区开发环境初始化。
  • 日志诊断与告警链条分析:支持导入 BMC 一键日志进行可视化诊断、Agent 日志体检和告警链条分析。
  • C/C++、Lua 与北向接口快速调试:支持按照 Git 变更规划直接部署或隔离构建,将最小替换集部署到 BMC 并验证结果。
  • BMC 远程 GDB 调试:支持附加板端服务,或部署独立程序进行源码级调试。
  • BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级和日志监控。
  • 白牌包定制:支持可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
  • 社区集成:对接 openUBMC 社区资源和服务。

二、AI 引导环境初始化

openUBMC Studio 提供 AI 引导环境初始化能力。将预置 Prompt 发送给 AI Agent(例如 opencode、Claude Code 或 Cursor)后,AI Agent 会检测当前状态、诊断问题,并按顺序引导用户完成社区开发环境初始化。

使用前准备

  • 已安装并能正常使用 AI Agent,例如 opencode、Claude Code 或 Cursor。

打开配置引导

  1. 在欢迎页面中单击“配置引导”入口。

  2. 在打开的配置引导窗口中找到“AI 引导初始化”卡片。

复制引导指令

  1. 单击“复制指令”卡片,打开 Prompt 对话框。

  2. 单击“复制到 AI Agent”,将 Prompt 复制到剪贴板。

  3. 切换到 AI Agent,粘贴并发送 Prompt。

了解 AI 引导流程

AI Agent 接收到 Prompt 后,会按以下流程引导用户完成环境初始化:

  1. GitCode 登录认证:AI Agent 打开 OAuth 登录窗口,并在用户授权后检测登录状态。
  2. 环境检测与部署:AI Agent 检测操作系统。Windows 用户可以选择 Docker(约 5 分钟)或 WSL(约 30 分钟)部署方式,Linux 用户直接进入环境配置。
  3. 规则集配置:AI Agent 引导用户在 openUBMC Studio 界面中选择机型和规则集,并通过 localview_get_data_source 验证配置是否生效。
  4. 状态写回:每个步骤完成后,AI Agent 会回写向导状态;全部步骤完成后,向导状态变为“已完成”。

说明

AI Agent 在每个步骤开始前会查询当前配置进度,并自动跳过已完成的步骤。初始化中断后,可以重新发送 Prompt 继续执行。

验证初始化结果

  1. 确认配置引导窗口显示初始化已完成。

  2. 返回欢迎页面,确认状态栏中的登录状态、机型和规则集信息已更新。

常见问题

  • Docker SSH 连接失败:检查容器内 sshd 是否启动、10022 端口是否开放,以及密钥认证是否配置正确。
  • Conan 鉴权失败:检查 GitCode 登录状态是否有效,重新登录后重试。
  • 规则集未生效:在 openUBMC Studio 状态栏中确认是否已选择机型和规则集,必要时重新配置。

三、登录到社区

openUBMC Studio提供了便捷的社区登录功能,通过社区登录可以获取更多资源和服务支持。

登录步骤

  1. 点击IDE右下角状态栏中的登录图标

  2. 在弹出的登录页面中输入您的openUBMC社区账号和密码

  3. 点击“登录”按钮完成登录

登录状态保持

登录成功后,IDE会自动保持和刷新登录状态:

  • 自动刷新:IDE会定期刷新登录状态,确保持续有效
  • 状态保持:退出IDE后,登录状态会继续保持一段时间
  • 自动重连:重新打开IDE时,会自动尝试使用上一次的登录状态重新登录

Conan中心仓集成

登录社区后,IDE会自动同步登录到Conan中心仓:

  • 登录状态自动保持并刷新
  • 只要IDE处于登录状态,Conan就处于登录状态
  • 在执行出包等操作时不会因为认证问题而超时

说明:

建议在开始开发工作前先完成社区登录,以确保能够正常访问所有资源和服务。

四、CSR 编码辅助

openUBMC Studio提供了强大的CSR编码辅助功能,包括引用跳转、规则检查、表达式计算器和SMC计算器等,帮助开发者快速定位代码、发现问题并提高开发效率。

模型配置

使用CSR编码辅助功能前,需要先完成模型配置。登录IDE后,点击Web版Studio状态栏中的"未选择机型"按钮,按以下步骤操作:

  1. 在模型配置页面中,选择对应的产品和规则集。

  2. 确认产品信息后,选择需要配置的模型文件。

  3. 配置模型文件对应的代码仓和分支信息。

  4. 完成配置后,点击"确定"保存配置。模型配置完成后,规则检查、拓扑配置等功能即可正常使用。

说明:

模型配置完成后即可使用以下CSR编码辅助功能。后续如需切换产品或规则集,可重新进行模型配置。

引用跳转功能

引用跳转功能可以帮助开发者快速定位代码定义和引用位置,支持多种跳转方式,大幅提高代码阅读和导航效率。

转到定义

  1. 在代码编辑器中,将光标定位到需要查看定义的符号上。

  2. 使用以下任一方式跳转到定义:

    • 右键点击符号,选择“转到定义”
    • 按住 Ctrl 键,点击符号

  3. 编辑器将自动跳转到符号的定义位置。

转到引用

  1. 在代码编辑器中,将光标定位到需要查看引用的符号上。

  2. 使用以下任一方式查看引用:

    • 按下 Shift + F12
    • 右键点击符号,选择“转到引用”

  3. 在侧边栏将显示所有引用该符号的位置列表。

  4. 点击列表中的项可跳转到对应的引用位置。

鼠标悬停预览定义

  1. 在代码编辑器中,将鼠标悬停在符号上。

  2. 等待片刻,将显示符号的定义预览窗口。

基本规则错误检查功能

openUBMC Studio内置了CSR规则检查功能,模型配置完成后即可支持CSR语法与配置约束的实时检查。该功能支持错误位置高亮和规则自动更新,帮助开发者在编码阶段就发现潜在问题。

实时检查

模型配置后,在openUBMC Studio中打开任意CSR文件,检查自动生效:

页面中的类型错误和格式错误都会被实时拦截:

表达式中的语法错误也可以被实时拦截:

查看检查结果

  1. 错误和警告会以波浪线形式标注在代码中:

    • 红色波浪线:表示错误(Error)
    • 黄色波浪线:表示警告(Warning)

  2. 查看"问题"面板:

    • 点击底部"问题"标签页
    • 查看所有错误和警告列表
    • 点击列表项可快速定位到对应代码位置

复杂规则校验

openUBMC Studio已建立复杂规则校验能力,可以在社区代码仓 openubmc_dsl_rulepack 中开发业务相关的检查规则,自定义规则同样支持实时检查功能。

表达式计算器功能

表达式计算器是openUBMC Studio提供的强大工具,用于编写、调试和测试CSR表达式,帮助开发者快速验证表达式的正确性。

打开表达式计算器

  1. 打开CSR文件,在表达式上方将显示“计算表达式”按钮

  2. 点击“计算表达式”按钮,表达式计算器窗口将在右侧打开

表达式计算器界面

表达式计算器界面包含以下部分:

  • 表达式编辑区:显示和编辑当前选中的表达式
  • 模式切换按钮:可以在“调试模式”和“用例模式”之间切换
  • 变量面板:显示当前表达式中可用的变量及其值
  • 结果面板:显示表达式计算结果和各级管道的计算过程

修改表达式

  1. 在表达式编辑区查看或修改表达式

  2. 修改完成后,点击“保存到文件”按钮保存修改

  3. 保存后,表达式计算器会自动重新加载表达式

  4. 源文件中的表达式修改并保存后,表达式编辑页面也会自动重新加载

调试表达式

  1. 在表达式编辑区查看表达式内容

  2. 在变量面板中输入或修改变量值

  3. 完成输入后,系统将自动计算:

    • 各级管道的中间结果
    • 最终表达式结果

说明:

调试功能可以帮助您逐步查看表达式的计算过程,快速定位问题。

表达式批量用例测试

  1. 在表达式计算器中, 点击“用例模式”按钮切换到批量测试模式

  2. 创建测试用例:

    • 按照要求输入测试用例名称和参数值以及结果值
  3. 执行批量测试:

    • 点击“加载用例”加载所有测试用例
    • 点击“Execute all”执行所有测试用例
    • 查看验证报告,显示每个用例的执行结果

说明:

测试用例可以导出为文件,方便团队共享和版本管理。
建议为复杂表达式编写多个测试用例,确保表达式在各种情况下都能正确工作。

SMC计算器功能

SMC计算器用于解析和配置SMC命令字,帮助开发者快速理解和生成SMC命令,简化SMC相关的开发工作。

打开SMC计算器

  1. 打开CSR文件,定位到Scanner或Accessor的offset字段

  2. 点击offset字段上方显示的"计算偏移量"按钮

  3. SMC计算器窗口将在右侧打开

SMC命令字解析

SMC计算器提供了强大的命令字解析功能:

  1. 自动解析:当前偏移量会被自动解析,显示各字段的含义
  2. 实时计算:修改下方输入框的数据内容将自动更新和计算偏移量
  3. 应用到文件:点击“应用”按钮可以将计算结果写入到CSR文件
  4. 字段提示:鼠标悬停在字段上方可以显示具体的字段含义和说明

SMC命令字可视化辅助

openUBMC Studio提供了直观的SMC命令字可视化功能:

  1. 水印显示:SMC命令字将在CSR中以水印形式显示字段内容,方便查看

  2. 悬停详情:鼠标悬停在offset字段上将显示偏移量的详细信息,包括:

    • 各字段的值
    • 字段的含义
    • 完整的偏移量计算结果

说明:

可视化辅助功能可以帮助您快速理解复杂的SMC命令字结构,减少配置错误。

五、拓扑与 CSR 可视化配置

CSR 拓扑插件提供整机和单板卡两个维度的总线及器件拓扑可视化。0.3.7 版本新增本地、日志和远程三种整机拓扑模式,并支持总线异常检测、日志包离线还原、真机在位调试以及单板卡可视化配置。

创建拓扑配置

  1. 单击 openUBMC Studio 左侧的拓扑十字形侧边栏图标。

  2. 单击“创建配置”。

  3. 单击“添加仓库”,选择 CSR 文件夹,即可在该机型配置中使用来自该文件夹的 CSR。可以添加多个 CSR 代码仓,单击右下角的“确定”即可创建项目。

  4. 创建完成后,拓扑起点为 root.sr

CSR 整机拓扑

CSR 整机拓扑图提供整机维度与单 CSR 维度的总线及器件拓扑可视化:以板卡为节点展示整机的层级结构、Connector 连接关系与总线连线,支持双击板卡下钻到单板视图、从器件库拖拽器件完成配置。根据数据来源不同,拓扑图分为三种使用模式:本地模式日志模式远程模式

三种模式对比与选择

对比项本地模式日志模式远程模式
数据来源模型配置的本地 CSR 代码仓日志压缩包(connectors.txt + .sr真机运行时(mdbctl + framework.log
依赖模型配置
在位状态静态配置,可切换(在位/不在位/天池加载/动态加载)收集时刻快照,只读运行时实际值,可切换开关模拟拔插
典型场景日常开发、搭建整机拓扑、板卡适配现场日志离线分析、问题回溯真机调试、在位异常定位

根据手头资源选择:

  • 有整机 CSR 代码仓,需要搭建或修改拓扑配置 → 本地模式(见下文「本地模式」)。
  • 只有现场日志压缩包,需要还原收集时刻的整机拓扑 → 日志模式(完整指南见导入 BMC 日志压缩包查看 CSR 拓扑)。
  • 有可达真机 BMC,需要查看实时在位或调试板卡加载 → 远程模式(完整指南见远程模式连接 BMC 环境)。

模式切换:日志模式与远程模式均为临时查看模式,重新从侧边栏加载本地拓扑(如切换机型或点击侧边栏文件节点)即恢复本地模式,导入日志产生的临时解压目录会自动清理。

界面说明

拓扑图中的主要元素如下:

  • 板卡节点:每个节点代表一块板卡,显示板卡类型、SR 文件名与对应的板型示意图;根节点为 root.sr(BMC 主板)。
  • 在位状态:节点左上角显示在位标签或开关,含义与可操作性随模式不同,详见各模式说明。
  • 板卡选择器:本地模式下,尚未确定 SR 的节点提供候选板卡列表与数量选择器,用于配置下游板卡。
  • 总线连线与连接桩:连线表示上游 Connector 传入的总线,由上游板卡的连接桩连向下游板卡;总线配置不一致时会出现红色连线或异常标志。
  • 单板下钻:双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面,查看该板卡 SR 的板内拓扑与详情。
  • 工具栏:配置选择框与「导出配置」按钮用于整机拓扑的多配置管理,仅本地模式可用。

本地模式

本地模式是默认模式,数据来自模型配置的本地 CSR 代码仓,用于日常开发中搭建与修改整机拓扑。

查看整机拓扑

点击侧边栏拓扑插件图标,进入整机拓扑图页面,显示如下:

  1. 总线连线:板卡之间的连线为上游 Connector 传入的总线,将鼠标悬停在总线上可显示总线名称。

  2. 总线异常检测:自动检测上游 Connector 传入总线与下游板卡 Anchor 中定义总线的一致性。

    1. 总线类型不匹配

      当上游 Connector 的 Buses 和下游板卡 Anchor 的 Buses 同一索引位置的总线类型不一致时,总线显示为红色,将鼠标悬停在图标上可查看具体信息。

      总线类型判断逻辑:取总线名称前缀,若前缀相同,则认为类型匹配。

    2. 上游多传入总线

      当上游 Connector 的 Buses 数量大于下游板卡 Anchor 的 Buses 数量时,Connector 的 Buses 数组中多出的总线会被识别为上游多传入总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。

    3. 下游板卡多出总线

      当上游 Connector 的 Buses 数量小于下游板卡 Anchor 的 Buses 数量时,下游板卡 Anchor 的 Buses 数组中多出的总线会被识别为下游多定义总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。

  3. 板卡合并:SR 文件中的不同 Connector 加载同一个文件时,拓扑图会将其合并为一张板卡。

配置整机拓扑

  1. 可通过板卡上方选项在整机拓扑中选择对应板卡,各板卡可选下游板卡数量和类型由该板卡的 Connector 配置决定;尚未确定 SR 的节点通过板卡选择器从候选列表中指定 SR 文件。所有配置信息会自动在本地持久化。

  2. 双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。

  3. 通过工具栏的配置选择框可在多套整机配置之间切换,点击「导出配置」可导出当前配置。

在位状态

本地模式根据 SR 文件中上游 Connector 的 IdentifyModePresence 值显示在位状态,单击开关可切换:

显示含义
天池加载IdentifyMode 为 3,由天池配置加载
在位 / 不在位IdentifyMode 为 2,Presence 为固定值 1 / 0
动态加载IdentifyMode 为 2,Presence 为表达式,按表达式动态计算
  1. 板卡在位状态

  2. 切换在位状态:单击开关可同步修改上游 Connector 中 Presence 的值。

CSR 单板卡配置

双击整机拓扑页面的任意板卡,或单击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。单板卡视图支持新增、删除总线或器件,以及修改 Mux 总线的 ChannelId。也可以按 Ctrl + Z 撤销、按 Ctrl + Y 恢复。

定位器件

单击器件,右侧 SR 文件会自动定位到该器件对象所在的位置。

修改 ChannelId

单击器件上方的 ChannelId 数字方块,可修改其值。

新增总线

单击 + 图标,选择总线类型并填写总线后缀,然后单击“确定”新增总线。

删除器件、总线

将鼠标悬停在器件或总线上,单击鼠标右键并选择“删除”。

拖拽器件

打开器件库,将器件拖拽到总线上即可将器件挂载到总线,同时自动修改对应 CSR 文件内容。也可以拖拽器件到可下连的器件卡片上进行挂载。

导入 BMC 日志压缩包查看 CSR 拓扑

openUBMC Studio 支持导入 BMC 一键收集的日志压缩包,在离线环境下还原当前整机加载的 CSR 及其拓扑关系。适用于现场问题定位与离线日志分析:拿到日志包即可查看板卡层级结构、连接关系与在位情况,无需连接真机。

使用前准备

  • 已安装 openUBMC Studio 并启用 CSR 拓扑插件(随主插件提供)。
  • 准备 BMC 一键收集的日志压缩包,支持 ziptartgzgz(含 .tar.gz)格式。
  • 本机需可执行 tar 命令(日志包解压依赖系统 tar)。

说明:

导入日志模式不依赖模型配置,也无需预先创建拓扑项目,可直接使用。

导入日志压缩包

  1. 在 openUBMC Studio 左侧 CSR 拓扑侧边栏视图标题栏,点击「导入日志包」按钮。

  2. 在弹出的文件选择框中,选择 BMC 日志压缩包并点击「选择日志压缩包」确认。

  3. 工具自动解压并解析日志包中的 connectors.txt,随后在主编辑区渲染整机 CSR 拓扑图。导入成功后右下角提示「成功导入: 文件路径」。

查看导入的拓扑

  • 板卡层级与连接关系:拓扑图展示整机各板卡的层级结构与总线连接,查看能力与本地整机拓扑页面一致,但不支持切换板卡配置(配置选择框与导出配置按钮为禁用状态)。

  • 在位状态:每块板卡以只读标签显示在位状态(在位/不在位),状态取自日志包记录。

实现原理

数据来源

导入模式的拓扑数据全部来自日志压缩包内部,不访问真机,各数据项来源如下:

数据项来源用途
板卡层级结构connectors.txt 的树形拓扑部分构建整机拓扑树(板卡父子关系)
Connector 详情(BusesTypePresenceIdentifyMode 等)connectors.txt 的 Connector 详情段总线连线、连接器类型、在位状态
板卡类型与名称(Unit.Type / Unit.Name日志包内的 .sr 文件拓扑节点显示的板卡类型与名称
下游总线(ManagementTopology.Anchor.Buses日志包内的 .sr 文件总线一致性检测的下游锚点
板卡 SR 详情日志包内的 .sr 文件双击板卡下钻查看的自描述内容

connectors.txt 通常位于日志包的 dump_info/AppDump/hwdiscovery/ 目录下;工具同时支持在解压根目录及任意子目录中递归查找。.sr 文件从 connectors.txt 所在目录及其子目录中递归收集。

connectors.txt 格式示例

connectors.txt 由 BMC 硬件自发现流程生成,前半部分是板卡树形结构,后半部分是每个 Connector 的属性详情:

text
root
├─Connector_BMC
│├─Connector_PCPU_1
│└─Connector_PCPU_2
└─Connector_PSU_1

Connector_BMC:
.Buses: ["I2c_1","I2c_2"]
.Type: BMC
.Presence: 1
.IdentifyMode: 2

Connector_PSU_1:
.Buses: ["I2c_3"]
.Type: PSU
.Presence: 0
.IdentifyMode: 2
  • 树形部分:通过行首的 ├─└─ 符号表达层级,每个节点即一块板卡的 Connector,对应 SR 文件名为 节点名.sr(如 Connector_PCPU_1.sr)。

  • 详情部分Connector_XXX: 开启一个 Connector 段,其下以 .属性: 值 逐行列出属性。其中 Presence 决定在位标签(1=在位,0=不在位),Buses 决定上游总线连线。

处理流程

  1. 解压:调用系统 tar(zip 在 Linux 下用 unzip)将日志包解压到固定临时目录。
  2. 查找 connectors.txt:按「解压根目录 → dump_info/AppDump/hwdiscovery/ → 递归子目录」的顺序查找。
  3. 解析:拆分树形结构与 Connector 详情段,得到拓扑树骨架与各 Connector 属性。
  4. 收集 SR 文件:递归收集同目录下全部 .sr 文件并解析缓存到内存。
  5. 构建拓扑:将 Connector 属性与 SR 文件按名称(去除末尾 _序号 后缀)匹配,生成前端拓扑树并渲染。

说明:

在位状态反映的是收集日志时刻的整机状态,非实时数据。

功能验证

导入完成后,可按以下检查项验证功能是否正常:

验证项操作步骤预期结果
导入解析选择 BMC 一键收集日志压缩包导入右下角提示「成功导入: 文件路径」,主编辑区渲染整机拓扑
板卡层级对比拓扑树与日志包 connectors.txt 的树形结构板卡父子层级一致,无遗漏板卡
在位状态查看板卡节点标签,与 connectors.txt 中对应 Connector 的 Presence 值比对标签显示与记录一致(1=在位,0=不在位)
板卡详情下钻双击拓扑中的板卡节点编辑器第二列打开该板卡 SR 文件内容

常见问题

现象处理建议
提示「未找到 connectors.txt 文件」请确认导入的是 BMC 一键收集日志压缩包(内含 connectors.txt
导入会占用/残留磁盘空间吗日志包解压到固定临时目录(系统临时目录/bmc-log-import),每次导入前自动清理旧数据,无需手动维护
能否修改在位状态或板卡配置导入模式为只读查看,不支持修改在位状态与 CSR 配置;配置选择与导出按钮为禁用状态

远程模式连接 BMC 环境

远程模式支持连接真机 BMC 环境,自动从运行时数据(mdbctl 调试命令 + 框架日志)构建整机 CSR 拓扑,实时展示板卡实际在位情况。无需从 BMC 手动导出数据再导入,选择环境即可出图,适用于真机调试、板卡适配验证与在位异常定位。

使用前准备

  • 已安装并启用 BMC环境管理 插件(openubmc.bmcstudio-bmc-remote),并添加至少一条 BMC 连接。连接的添加方法参见 BMC环境管理插件 章节。
  • 目标 BMC 运行 openUBMC 固件,开放 Telnet 调试通道(23 端口免认证调试 shell),且板上具备 mdbctl 调试命令。
  • 开发机无需安装 telnet 客户端,扩展使用内置连接直连。

说明:

远程模式不依赖模型配置,选中环境后自动跳过机型配置流程,直接加载拓扑。

连接 BMC 环境

  1. 在 CSR 拓扑侧边栏视图标题栏,点击「远程调试」按钮。

  2. 在顶部弹出的环境选择框中,选择目标 BMC 环境。列表展示全部已配置连接,并实时探测在线状态(在线/离线图标 + 账号信息)。

  3. 选择后显示「正在加载 xx 环境的 CSR 拓扑」进度通知,工具自动读取真机运行时的 Connector 对象与 SR 加载记录并构建拓扑。

  4. 加载完成后,拓扑图工具栏显示当前连接的环境名称与 IP,主编辑区渲染整机实时拓扑。

查看实时拓扑

  • 真实在位状态:拓扑以真机运行时数据为准(而非静态 root.sr 配置),每块板卡显示实际在位/不在位状态。
  • EEPROM 板卡:CSR 烧录在 EEPROM(而非 .sr 文件)的板卡会被自动解码,与文件板卡同等展示,双击同样可查看内容。
  • 板卡 SR 下钻:双击板卡即可进入单板视图查看该板卡的 SR 内容。
  • 在位调试:板卡节点上的在位开关可点击切换,模拟板卡拔插,详见下文「在位调试」。

在位调试

远程模式下,点击板卡节点上的在位开关即可模拟板卡拔插,验证下级板卡的加载逻辑,无需物理操作真机。

说明:

切换在位状态不是卸载板卡:该板卡已加载的 SR 不受影响,只影响下级板卡的加载判断——下级板卡检测到上游 Connector 的 Presence 为 0 时不会加载。

普通在位属性

Presence 为固定值(1/0)的板卡,节点上显示单个在位开关。点击开关后:

  1. 工具通过 mdbctl setprop 向真机下发修改,更新该 Connector 的 Presence 值;
  2. 重新读取运行时在位状态并重建拓扑(不重新读取 SR 文件);
  3. 下级板卡的加载状态随 Presence 变化体现在拓扑上。

同步属性(多开关)

Presence 为表达式(引用其他对象属性,如多个物理在位开关共用一个 Connector)时,节点上会按同步源渲染多个开关,每个开关对应一个同步源对象的属性。点击单个开关只修改对应同步源对象的属性值,适用于逐个验证各物理开关对板卡加载的影响。

注意:

在位调试通过 setprop 真实修改真机运行时属性,直接影响下级板卡的加载判断。请确认影响范围后再操作,调试完成后建议将开关切回原状态。

实现原理

数据来源

远程模式的拓扑数据来自真机运行时,全部通过 Telnet 调试通道(23 端口)自动采集,各数据项来源如下:

数据项来源用途
Connector 对象清单真机运行时(mdbctl lsobj connector拓扑节点唯一来源,以实际加载为准(非静态 root.sr)
Connector 实际在位值真机运行时(mdbctl lsprop 读取 Presence板卡在位/不在位状态
SR 文件加载记录真机 /var/log/framework.log 中框架打印的加载日志确定每个 Connector 实际加载的 SR 文件路径(含根节点)
SR 文件内容真机 /opt/bmc/sr/*.sr板卡类型/名称(Unit 字段)、下游总线、双击下钻内容
EEPROM 板卡 CSR板上 EEPROM(CDR 容器格式)CSR 烧录在 EEPROM(无 .sr 文件)板卡的解码展示
拓扑层级关系Connector 的 GroupPosition 属性按 GroupPosition 建树(去末两位即父节点)

通过日志查看 Connector 加载的文件

每个 Connector 实际加载的 SR 文件记录在 BMC 的框架日志 /var/log/framework.log 中,由硬件自发现流程打印,共两类记录:

记录一(init.lua,板卡加载主源)——每个 Connector 加载 SR 时打印,position 即该 Connector 的 GroupPosition

text
2026-08-20 10:15:32 hwdiscovery NOTICE: init.lua(152): position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr, ...

记录二(dump.lua,根节点主源)——根板卡的加载只出现在此类记录中:

text
2026-08-20 10:15:30 hwdiscovery NOTICE: dump.lua(88): start to dump connector: root loading file: /opt/bmc/sr/root.sr

工具解析后的对应关系示例:

日志记录解析结果
position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.srGroupPosition 为 0101011A 的 Connector 加载了 14100513_pcie_card.sr
start to dump connector: root loading file: /opt/bmc/sr/root.sr根节点加载 root.sr(拓扑根板卡)
start to dump connector: Connector_EXU_1 loading file: Eeprom/...loading file 为 EEPROM 对象路径)该板卡 CSR 烧录在 EEPROM,工具改走 EEPROM 解码

也可以在 BMC 上手动执行以下命令核对(与工具解析使用同一数据源):

bash
grep -E "get csr data from|start to dump connector" /var/log/framework.log

说明:

同一 Connector 多次加载时取最新一条记录(日志按最新文件优先解析);加载失败的记录(如占位文件)会被过滤,不会体现在拓扑中。

处理流程

  1. 连通性自检:通过 Telnet 23 端口连接目标 BMC,探测调试 shell 可用性。
  2. 发现 Connector:执行 mdbctl lsobj connector 获取运行时全量 Connector 对象,再批量 mdbctl lsprop 读取每个 Connector 的 Presence 实际值。
  3. 解析加载记录:读取 /var/log/framework.log(含历史 .gz 轮转文件),解析「position → SR 文件」与「运行时名 → 文件」两组映射。
  4. 建树:按 Connector 的 GroupPosition 属性构建整机层级(去掉末两位十六进制即父节点位置)。
  5. 读取 SR 内容:按映射从 /opt/bmc/sr/ 读取 .sr 文件;EEPROM 板卡读取 EEPROM 二进制(CDR 容器)并本地解码出 CSR。
  6. 渲染:组装拓扑树、在位状态与 SR 数据,发送到拓扑图视图渲染。

说明:

在位状态以真机运行时数据为准(mdbctl 实时读取),而非 CSR 静态配置中的 Presence 表达式,可避免静态配置与实际加载不一致造成的误判。
所有数据仅在加载拓扑和切换在位开关时读取,不在本地持久化。

功能验证

连接环境并加载拓扑后,可按以下检查项验证功能是否正常:

验证项操作步骤预期结果
环境列表点击「远程调试」按钮列出全部已配置 BMC 连接,并标注在线/离线状态与账号信息
拓扑加载选择一个在线环境显示「正在加载 xx 环境的 CSR 拓扑」进度,完成后工具栏显示环境名与 IP,渲染整机拓扑
在位一致性将拓扑中板卡在位状态与真机实际在位比对(可对照 BMC Web 页面或板上 mdbctl 查询结果)与真机实际加载一致(以运行时数据为准)
加载文件一致性在 BMC 上执行上文 grep 命令,比对拓扑中板卡对应的 SR 文件双击下钻打开的 SR 文件与日志记录的 get csr data from 路径一致
板卡详情下钻双击拓扑中的板卡节点打开单板视图,可查看该板卡 SR 内容
EEPROM 板卡查看拓扑中无 .sr 文件的板卡EEPROM 板卡正常解码展示,双击同样可查看 CSR 内容
在位开关切换点击某板卡节点的在位开关切换后拓扑自动刷新,下级板卡加载状态随之变化
同步属性切换点击同步属性板卡上的单个开关仅对应同步源对象的属性变化,其余开关状态不变,拓扑刷新

常见问题

现象处理建议
提示「未配置 BMC 环境,请先添加连接」先在 BMC环境管理插件中添加连接,参见 BMC环境管理插件 章节
提示「远程拓扑加载失败」检查环境是否在线、BMC 23 端口是否开放、板上 mdbctl 是否可用;详细原因可查看输出通道中 RemoteTopologyLoader 的日志
环境列表显示「探测中」连接健康探测最长 3 秒,离线环境会标注离线状态,不影响选择其他环境

说明:

远程模式下配置选择与导出配置不可用(禁用),与导入日志模式一致。
此外,远程拓扑支持通过 MCP 工具 csr_topo_get_remote_topology 供 AI Agent 查询整机 Connector 在位清单与 SR 来源。

能效调速配置

能效调速配置功能提供能效调速对象的配置入口,支持通过Excel导入热设计表格解析调速曲线配置,支持对象自动关联及配置检查、CSR片段自动生成。

打开配置页面

点击CSR拓扑侧边栏中的温度计图标即可开启能效调速配置页面。

配置能效调速对象

  1. 通过该页面配置能效调速对象,以及配置对象间的关联关系。

  2. 点击右上角的"导入Excel"即可导入热设计表格,当前仅支持xlsx格式,若为其他格式请通过Excel另存为xlsx格式文件。完成导入后,温度点与调速曲线等配置可以自动解析。

  3. 点击右上角"生成CSR"即可根据当前配置产生CSR代码片段,可以自行填入CSR文件中。生成CSR过程支持配置语法检查,禁止出现ID冲突等问题。

六、事件管理

本章节介绍 openUBMC Studio 的事件管理功能。用户可以在 IDE 中查看和编辑 event_def.json 中的事件信息与描述模板,也可以查看、新增和保存事件与 CSR Event_ 对象的绑定关系。

说明

事件管理依赖模型配置生成的事件字典基线。如尚未配置模型,请先完成模型配置中的产品和规则集选择。

功能说明

BMC 事件字典定义了整机事件的事件标识、严重级别、事件编码和描述模板等标准信息。事件管理提供以下能力:

  • 事件字典管理:查看、筛选和搜索全部事件,编辑基础字段与中英文描述模板,新建自定义事件模板,以及还原或导出差量。
  • CSR 绑定管理:查看事件在 SR 文件中绑定的 Event_ 对象,可视化新增、编辑和删除绑定,并批量保存到 SR 文件。

根据打开入口,事件管理提供以下两种视图:

视图入口CSR 绑定聚合范围
单板卡视图单 SR 拓扑视图中的“事件管理”当前 SR 文件及其拆分文件中的 Event_ 对象
整机视图总拓扑页面工具栏中的“事件管理”总拓扑下所有 SR 文件中的 Event_ 对象

两种视图共用同一套事件字典与编辑能力,仅 CSR 绑定的聚合范围不同。

使用前准备

  • 模型配置:已完成产品和规则集选择,事件字典基线来自 Conan 规则包中的 event_def.json
  • 拓扑项目:已通过拓扑侧边栏创建配置并添加 CSR 仓库,当前工作区存在可用的 SR 上下文。

说明

字段修改、描述模板修改和自定义事件模板会以差量形式保存在本地缓存中。编辑停止约 1 秒后,差量会自动写入缓存;关闭事件管理面板时,差量会自动落盘。原始字典文件不会被直接修改。

打开事件管理

  • 打开整机视图:进入总拓扑页面,单击工具栏中的“事件管理”。

  • 打开单板卡视图:进入单 SR 拓扑视图,单击“事件管理”。此时 CSR 绑定范围限定为当前 SR 文件。

事件管理会在独立面板中打开,不影响原拓扑页面。

查看事件管理界面

事件管理界面由工具栏、事件列表、编辑横幅、分页栏和详情面板组成。

  • 工具栏:提供新建事件模板、重新拉取、导出、清除全部筛选和搜索功能。
  • 事件列表:展示全部事件,支持列头筛选和分页。
  • 编辑横幅:存在未导出的编辑时,以黄色或绿色横幅提示导出。
  • 详情面板:单击事件行后显示在界面右侧。拖动面板左边缘可以在约 280~700px 范围内调整宽度,单击“×”可以关闭面板。

筛选和搜索事件

查看列表字段

说明
事件(EventKeyId/EventName事件唯一标识与名称,内容过长时自动省略,悬停后显示全文
级别严重程度:提示(蓝灰)、一般(蓝)、重要(橙)或紧急(红)
CSR 绑定当前视图范围内绑定的 Event_ 对象数量
分类根据事件标识推导的业务分类
机型支持当前机型是否支持该事件
EventCode事件的十六进制唯一编码
恢复上报是否上报恢复事件
EventType事件类型
LifeCycleId生命周期标识

设置筛选条件

  1. 单击“级别”“CSR 绑定”“分类”“机型支持”或“恢复上报”列头中的筛选按钮。
  2. 勾选需要保留的选项。每个选项会显示对应的事件数量。
  3. 如需清空当前列的条件,再次打开筛选菜单并单击“清空筛选”。

右上角搜索框支持按 EventKeyId、事件名称或事件编码进行模糊搜索。存在筛选或搜索条件时,工具栏会显示“清除全部筛选(N)”,单击后可以恢复完整列表。

设置分页

底部分页栏支持将每页数量设置为 20、40、80 或 100 条,也支持按页码跳转。没有事件数据时,可以通过空状态入口新建事件模板;存在数据但被过滤时,可以通过空状态入口清除筛选。

新建和编辑事件

新建事件模板

  1. 单击工具栏中的“新建事件模板”。
  2. 在右侧详情面板中编辑新模板。

新建的自定义事件会置于列表顶部并自动选中。详情面板底部提供“删除该自定义事件模板”按钮。

编辑基础字段

  1. 在事件列表中单击目标事件。

  2. 在右侧详情面板中打开“基础信息”页签。

基础字段说明如下:

字段说明
事件名称 EventName事件短名称,通常与 EventKeyId 的最后一段一致
SeverityId严重级别:0 表示提示、1 表示一般、2 表示重要、3 表示紧急
机型支持标记当前机型是否支持该事件,是导出 eventDefList.txt 的依据
恢复上报 DeassertFlag是否上报恢复事件,与 LifeCycleId 共同决定事件是否可恢复
事件编码 EventCode十六进制唯一编码,例如 0x0200001F
旧版事件编码 OldEventCode跨版本兼容映射,没有对应关系时留空
上报通道 ReportChannel目标通道位掩码,65535 表示向全部通道上报
事件类型 EventTypeBMC 固件定义的编号,当前字典中的常见取值为 01
生命周期标识 LifeCycleIdBMC 固件定义的编号,当前字典中的常见取值为 01
动作标识 ActionIdBMC 固件定义的编号,当前字典中的常见取值为 01

编辑描述模板

“描述模板”区域提供以下四类内容的中英文编辑,单击右上角的“中”或“EN”可以切换语言:

  • Description:描述。
  • Cause:可能原因。
  • Influence:影响。
  • Suggestion:处理建议。

说明

  • 描述支持 %Component%DescArg1%DescArg5 占位符,依次引用 CSR 事件绑定中的 ComponentDescArg 字段。输入占位符后,界面会显示提示。
  • 可能原因与处理建议支持多条内容,多条内容之间使用 @#AB; 分隔。

还原事件数据

  • 还原单个事件:单击详情面板标题行中的“还原”,丢弃该事件的全部本地编辑并恢复为字典基线值。

  • 重新拉取全部事件:单击工具栏中的“重新拉取”,在确认窗口中继续操作。完成后,事件管理会丢弃全部编辑,从 Conan 包重新读取事件字典,并将筛选、搜索和分页恢复为初始状态。

注意

“重新拉取”会丢弃当前所有本地编辑。首次打开事件管理时,系统优先读取本地缓存;仅在需要放弃全部差量或重新获取 Conan 包中的最新数据时执行此操作。

查看并导出修改

存在未同步的编辑时,列表上方会显示编辑横幅。

横幅含义导出文件
黄色事件字段、描述模板或自定义模板发生变化event_def.json
绿色机型支持字段发生变化eventDefList.txt
  • 查看修改:打开变化清单后,可以单击事件标识定位到对应事件,也可以单独还原某个事件。
  • 导出事件字典:导出的 event_def.json 包含全部事件定义与描述模板,文件版本号末段自动加一,例如从 1.0.0 更新为 1.0.1。导出后,请将文件提交到 VPD 仓库进行同步。
  • 导出机型事件清单:导出的 eventDefList.txt 仅包含“机型支持”为“是”的事件标识。

说明

两类横幅会根据修改内容独立显示和导出。两类内容均发生变化时,需要分别导出对应文件。

管理 CSR 绑定

CSR 绑定描述事件与 SR 文件中 Event_ 对象的对应关系。在详情面板中打开“CSR 绑定”页签,可以查看和编辑绑定。

查看 CSR 绑定

页签顶部显示当前视图类型和事件的绑定总数。绑定以卡片形式展示,每张卡片会标注所属 SR 文件,悬停后可以查看完整路径。

新增 CSR 绑定

  1. 单击详情面板底部的“CSR 绑定”。

  2. 在新增卡片中填写绑定字段。

  3. 如果当前处于整机视图,选择“目标 SR 文件”。整机根文件 root.sr 不在候选范围内;单板卡视图会自动使用当前 SR 文件。

  4. 单击“确定”,批量保存本次绑定修改。

查看绑定字段

字段说明
事件对象名必须以 Event_ 开头且不能只有前缀;同一拆分文件组内不得重名,不同组之间允许同名
目标 SR 文件仅在整机视图新增绑定时显示,用于指定绑定写入的 SR 文件
Condition绑定条件;清空后删除该键,纯数字内容会自动转换为数值
Component事件关联的器件组件,候选项按照目标 SR 文件分为“推荐”和“其他”两组
OperatorId操作符编号,可以留空
Enabled是否启用绑定,可以留空以删除该键

验证保存结果

  • “确定”仅在存在修改且表单校验通过时可用;单击“取消”会放弃本次全部修改。
  • 对象名为空、未以 Event_ 开头或在组内重名时,对应输入框会显示错误。
  • 保存成功后,绑定列表和绑定数量会自动刷新,事件列表会定位到当前事件。
  • 在编辑器中直接保存 SR 文件后,绑定列表和绑定数量也会自动刷新。

常见问题

  • 事件字段是否需要手动保存? 不需要。字段与描述模板编辑会在停止输入约 1 秒后写入本地缓存,并在关闭面板时落盘;CSR 绑定修改需要单击“确定”保存到 SR 文件。
  • 重新拉取后编辑全部消失:此行为符合预期。“重新拉取”会丢弃全部本地差量并恢复到字典基线。
  • CSR 绑定提示对象名必须以 Event_ 开头:事件对象名必须带有固定前缀,并且不能只有 Event_ 前缀。
  • 整机视图与单板卡视图的绑定数量不一致:两种视图的聚合范围分别为全部 SR 文件和当前 SR 文件,因此数量可能不同。
  • 还原事件后列表中的绑定数量未变化:“还原”仅丢弃事件字典的本地差量,不修改 CSR 绑定。
  • 导出的文件应提交到哪里? event_def.jsoneventDefList.txt 均用于提交到 VPD 仓库,具体流程遵循团队的字典变更管理规范。
  • 新建的模板在筛选结果中不可见:新建模板时会自动清空筛选。如模板仍不可见,请检查搜索词和列头筛选条件。

七、日志诊断与告警链条分析

一键日志解析插件(扩展 ID:openubmc.bmcstudio-log-reviewer)用于导入 BMC 一键日志包或 dump 目录,并通过可视化页面和 AI Agent 分析设备状态。用户可以浏览硬件、告警、传感器、性能及原始日志,也可以结合 openUBMC RAG 进行日志体检,或通过告警证据工具分析指定事件的触发链条。

功能说明

日志诊断提供以下使用方式:

使用方式主要能力适用场景
一键日志解析页面自动解压日志包,通过概览、硬件、告警、传感器、性能、调速、线缆和日志等视图展示 dump 日志人工浏览现场、筛选日志和快速确认异常范围
Agent 日志体检结合本地日志证据和 openUBMC RAG 生成问题清单,实时回写结果并导出 PDF 报告对日志进行批量体检和问题优先级排序
定向诊断与告警链条分析关联事件记录、运行日志、数据库及 CSR Event 定义,输出告警状态、触发链、恢复或复发情况和证据位置聚焦指定问题、还原告警链条和形成可复核结论

说明

可视化页面中的“智能检测”用于 Agent 日志体检。指定问题的深入诊断和告警链条分析可以在已配置 openUBMC Studio MCP 服务的 AI Agent 对话中发起。

使用前准备

如果活动栏中没有“一键日志解析”图标,请先执行以下操作:

  1. 在 openUBMC Studio 中打开插件市场,搜索“一键日志解析”。
  2. 安装插件,并按照提示重新加载窗口。
  3. 确认活动栏中出现“一键日志解析”图标。

使用 Agent 日志体检前,还需要满足以下条件:

  • 已登录 openUBMC 社区。
  • openubmc-rag 扩展已启用。
  • 当前网络可以访问配置的 LightRAG 服务。
  • AI Agent 可以访问 openUBMC Studio MCP 工具。

AI Agent 会在读取日志前检查 RAG 状态。未登录、RAG 工具未启用、网络异常或状态响应无法解析时,日志体检会停止并显示处理建议。

说明

如果所有 MCP 工具均提示网络错误,请将 localhost127.0.0.0/8::1 加入代理直连列表或 NO_PROXY,然后完全重启 openUBMC Studio 和 AI Agent。

打开一键日志

一键日志解析支持 Windows、Linux、WSL、SSH 远程工作区和容器工作区。

支持导入以下内容:

  • .tar.gz.tgz.tar.zip 格式的 BMC 一键日志压缩包。
  • 已解压且包含 AppDump 子目录的 dump 文件夹。

操作步骤如下:

  1. 单击活动栏中的“一键日志解析”图标。

  2. 根据日志形态,选择“打开 BMC 一键日志压缩包”或“打开 dump 目录”。

  3. 选择日志压缩包或 dump 根目录。选择目录时,应选中包含 AppDump 子目录的 dump 根目录。

  4. 等待解压和解析完成,确认日志页面已在编辑器区域打开。

也可以通过以下入口打开日志:

  • 在资源管理器中右键单击日志压缩包或 dump 文件夹,选择对应的一键日志解析命令。
  • 单击“最近打开”中的历史记录,重新打开对应日志。

“最近打开”最多保存 30 条记录。同一日志已经打开时,再次打开只会定位到原页面。删除一条最近记录时,对应的日志页面也会关闭。

查看日志包要求

日志包中必须存在名称完全匹配的 AppDump 目录,典型结构如下:

text
dump_info/
├── AppDump/
├── LogDump/
├── RTOSDump/
└── OSDump/

插件最多向下查找 6 层目录。AppDump 是导入日志时的必需目录;缺少 LogDumpRTOSDumpOSDump 时,日志包仍可能打开,但对应页面会显示无数据或目录缺失。

项目限制
单次选择1 个日志包,可以重复导入不同日志包
支持格式.tar.gz.tgz.tar.zip
tar 系列解压后总内容不超过 8GiB
tar 系列归档条目不超过 200000 项
ZIP 解压依赖系统中的 tarunzip,单次命令最长执行 300 秒
AppDump 查找深度最多递归 6 层

注意

插件不单独限制压缩文件本身的大小。处理大型日志包时,需要为远程暂存文件、中间 .tar 文件和解压目录预留足够空间,建议可用空间至少为解压后内容大小的两倍。

查看诊断信息

日志面板按照不同领域组织现场信息,常用视图包括:

  • 现场概览:查看机型、健康状态、FRU、板卡和软件版本。
  • 告警与传感器:查看告警记录、活动状态、传感器读值和门限信息。
  • 运行状态:查看性能、功率、进风温度、调速策略和 PID 配置。
  • 硬件关联:查看线缆检测、同步属性、CSR 和丝印信息。
  • 日志与诊断:查看操作日志、应用日志、框架日志、维护日志、驱动日志、串口日志、journalctl、一键日志原始文件和故障诊断文件。
  • 智能检测:使用 AI Agent 和 openUBMC RAG 进行日志体检。

不同页面按需解析日志文件,不会在导入时将所有文件一次性加载到内存。日志视图支持筛选、大小写匹配、全字匹配、正则表达式、匹配项跳转和保存搜索,具体可用项以当前视图为准。

使用 Agent 进行日志体检

日志体检会将本地日志证据与 openUBMC RAG 检索结果关联,并按照严重程度、紧急度和置信度排列问题。故障案例库是可信度最高的知识来源,但不是唯一可用来源。

说明

流程图中的问题数量和内容仅用于说明操作过程。实际问题数量、严重程度和诊断结论以导入日志中的证据及 RAG 检索结果为准。

复制分析 Prompt

  1. 打开日志页面顶部的“智能检测”。

  2. 单击“复制 Prompt 模板”。

  3. 将 Prompt 粘贴到能够访问 openUBMC Studio MCP 工具的 AI Agent 中。

  4. 发送 Prompt,等待 AI Agent 完成 RAG 状态检查并开始分析。

Prompt 已包含以下约束,无需手动填写日志路径:

  • 包含当前日志包的显示名称、分析任务标识和回调地址。
  • 只允许读取当前分析任务绑定的日志包。
  • 必须先检查 RAG 连接和社区登录状态。
  • 必须保留 RAG 引用的真实来源,其中故障案例库来源具有最高可信度。
  • 每个问题必须同时提供 RAG 匹配内容和本地日志证据。
  • 分析完成后,按照用户配置的 TopN 返回结果。

查看实时问题

AI Agent 分析期间,每个已确认的问题会实时显示在“Agent 日志问题”区域。问题卡片包含以下内容:

  • 严重程度:CRITICALHIGHMEDIUMLOW
  • 紧急度:综合故障影响、恶化可能、冗余能力和修复窗口计算的 0~100 分。
  • 置信度:本地多源证据与 RAG 知识的一致程度。
  • 可能原因和处理建议。
  • RAG 匹配内容、来源及可信度。
  • 日志片段、日志包内相对路径和定位信息。

说明

截图中的故障名称和日志内容仅用于演示界面结构,不代表产品预置的诊断结论。

同一根因产生的重复现象应合并为一个问题。分析完成后,插件会依次按照严重程度、紧急度和置信度排序,并展示最紧急的 TopN 问题。

配置 TopN

TopN 默认值为 10,可以设置为 1~50:

  1. 单击“一键日志解析”侧边栏标题栏中的齿轮图标。
  2. 在设置页面中修改 bmcstudio.logReviewer.analysisTopN
  3. 创建新的分析会话,使新设置生效。

TopN 只限制分析完成后页面和 PDF 报告中展示的问题数量。AI Agent 可以在分析过程中回写更多候选问题,插件会在完成时统一排序和截取。已经打开的分析会话继续使用创建会话时的 TopN 值;如需让同一日志使用新的 TopN,请先从“最近打开”中删除该日志,再重新导入并发起分析。

导出 PDF 报告

“导出为 PDF 报告”仅在分析状态变为“已完成”后可用:

  1. 确认页面显示“Agent 智能分析:已完成”。
  2. 单击“导出为 PDF 报告”。
  3. 选择保存路径和文件名。
  4. 使用 PDF 阅读器打开报告,核对摘要、问题排序、RAG 内容、日志证据和处理建议。

报告在当前 openUBMC Studio 扩展宿主运行期间可以持续导出。完全关闭或重启 openUBMC Studio 后,内存中的分析会话不会保留,需要重新发起分析。

处理会话异常

场景预期行为
分析期间关闭日志页面AI Agent 回调可以继续写入后台会话,重新打开同一日志后恢复状态
页面关闭较长时间后重新打开运行中的会话按照空闲策略管理,重新打开并操作后刷新活跃状态
从“最近打开”中删除日志对应页面关闭,关联分析会话被清理
清空“最近打开”所有日志页面关闭,关联分析会话被清理
RAG 不可用分析停止并显示登录、网络或配置建议,不生成主观问题
日志中没有诊断内容日志包格式有效时,分析完成并显示 0 个问题,PDF 报告可以导出
缺少 AppDump导入失败,并提示文件可能不是 openUBMC 一键日志包
缺少 AppDump/fault_diagnosis结构化诊断失败,AI Agent 将分析任务标记为失败

使用 AI Agent 定向诊断日志

在 AI Agent 对话中提供日志路径和分析目标,例如:

text
请打开并诊断 /path/to/bmc-log.tar.gz,先给出设备健康概览、关键异常和对应证据位置。

openUBMC Studio 会打开同一份日志的可视化面板,同时将机型、健康状态、硬件清单、告警、传感器、性能、调速、线缆和 CSR 等结构化数据提供给 AI Agent。后续可以继续要求 AI Agent 聚焦某个领域,例如:

text
继续分析当前日志中的散热异常,关联传感器、调速策略、功率和相关运行日志。

分析告警链条

分析单条告警时,建议提供以下任一组定位信息:

  • 事件码和发生时间。事件码格式为 0x 后接 8 位十六进制数字,时间格式为 YYYY-MM-DD HH:mm:ss
  • sel.txt 中的事件记录 ID。openUBMC Studio 可以据此解析事件码和发生时间。
  • 需要区分多个告警实例时,再补充组件或实例名称。

示例:

text
基于当前打开的一键日志,分析事件码 0x12345678、时间 2026-08-28 14:23:16 的完整告警触发链。
请说明当前告警状态、已观察到和缺失的阶段、恢复与复发情况,并在每个节点标注证据文件及行号或数据库记录位置。

AI Agent 会根据日志中的实际证据按需给出以下内容:

  • 唯一告警锚点及其匹配方式,避免混淆相同事件码的不同告警实例。
  • 告警当前状态,包括 activeinactiveconflictedunknown,并分别列出状态依据。
  • 已观察到的触发流程,例如采样、数值转换、门限或事件规则求值、事件存储和北向上报;未采集到的阶段会标记为缺失。
  • 运行期事件与 dump 内 .sr 文件中 CSR Event/PowerEvent 定义、属性和直接引用关系的关联结果。
  • Assert/Deassert 恢复配对、复发次数下界、历史覆盖范围和可能的时钟跳变。
  • 每个关键事实对应的 dump 相对路径、行号、列号、JSON Pointer 或数据库定位信息。

注意

告警链条分析仅关联 dump 中可观察到的事实,不会自动将时间相邻的事件视为因果,也不会使用静态 CSR 定义证明规则在告警时刻一定执行。日志缺失或状态冲突时,结论会保留为“证据不足”或“存在冲突”,需要结合现场信息和业务知识继续判断。

了解数据范围和安全边界

  • AI Agent 日志工具只能访问分析任务绑定的日志包,不会自动选择其他历史日志。
  • 日志证据使用日志包内相对路径,不会向页面回写宿主绝对路径。
  • 日志体检唯一允许访问的外部知识是 openUBMC RAG 状态和知识检索结果。
  • tar 系列导入会拒绝路径逃逸、绝对路径和解压炸弹,并忽略符号链接、硬链接及设备文件。
  • PDF 报告只包含当前分析会话中的摘要、TopN 问题、RAG 依据和日志证据。

八、BMC 环境管理

本章介绍 openUBMC Studio 的 BMC环境管理 插件(扩展 ID:openubmc.bmcstudio-bmc-remote)的功能与使用方法。该插件用于在 IDE 内集中管理多台 BMC 环境、批量下发命令、上传文件、一键升级固件、实时监控日志、自动调试组件以及远程 GDB 调试。

BMC环境管理插件在活动栏注册一个「BMC环境管理」容器,下设两个视图:

  • BMC Environments:BMC 环境连接树,按分组组织,管理连接的元数据与凭据。
  • Command Macros:命令宏树,维护可批量下发的命令序列。

插件的核心能力包括:

  • 连接管理:以分组方式管理多台 BMC,单条连接可任选 SSH、Telnet 或 WebView 方式接入。
  • 连通性管理:手动或周期性探测 BMC 可达性,并在状态变化时播报。
  • 命令宏:预定义命令序列与变量,按「全部可达 / 分组 / 手动多选」批量下发,回收结构化结果。
  • SFTP 上传:从资源管理器右键将本地文件或目录上传到 BMC。
  • HPM 一键升级:右键 .hpm 固件包,并发升级多台 BMC,全程进度可视。
  • 实时日志监控:实时 tail 远端 /var/log 日志,支持日志轮转衔接、时间回绕校准与原始文件下载。
  • 组件自动调试:根据 Git 变更自动部署 Lua、C/C++ 和北向接口调试内容,详见 C/C++、Lua 与北向接口快速调试
  • 远程 GDB 调试:附加板端服务或部署独立程序进行源码级调试,详见 BMC 远程 GDB 调试
  • MCP 工具:对外暴露 27 个 MCP 工具,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。

使用前准备

环境要求

  • 运行平台:推荐 Linux(Ubuntu)。连接管理以 Linux 为目标平台;HPM 升级与日志监控仅依赖 Node 内置模块,三平台行为一致。
  • 系统依赖:建议预装以下工具:
    • openssh-client:SSH 接入与 SFTP 上传。
    • telnet:Telnet 接入与实时日志监控。
    • tar(支持 -z):目录上传与日志下载解压。
    • libsecret-1-0 / gnome-keyring:Linux 下用于安全存储密码。

安装插件

  1. 在 openUBMC Studio 中打开插件市场(活动栏的「扩展」图标,或按 Ctrl+Shift+X),搜索「BMC环境管理」,点击「安装」。
  2. 安装完成后重启 IDE 生效。活动栏出现「BMC环境管理」图标即表示安装成功。

说明:

若已安装 openUBMC Studio 主插件,BMC环境管理作为配套扩展随其一同提供,具体获取方式请参考 openUBMC Studio 安装指南

BMC 环境管理

新增分组

连接以「分组」为单位组织,系统默认创建一个分组。

  1. BMC Environments 视图标题栏单击「Add Group」按钮。
  2. 输入分组名称并确认。

分组的右键菜单支持「Add」「Rename Group」「Delete Group」。分组非空时拒绝删除(保护数据),需先清空或迁移其下连接。

新增连接

  1. 单击 BMC Environments 视图标题栏「Add BMC Environment」按钮,或在某个分组上右键选择「Add」。
  2. 在弹出的表单中填写连接信息并保存。

连接字段说明:

字段说明备注
名称 name连接显示名称必填
IP 地址 hostBMC 的 IPv4 地址必填,仅接受 IPv4,非法地址会被拒绝
用户名 username登录用户名必填
密码 password登录密码必填(新增时);密码存于操作系统级安全存储,不落配置文件、不进日志
分组 group所属分组不选则落入首个分组
标签 tags标签数组可选,用于归类
描述 description连接描述可选

接入 BMC

在连接上右键,选择接入方式:

  • Connect via SSH:使用进程内 SSH 客户端登录(兼容老款 BMC 的弱算法与 keyboard-interactive 交互),以伪终端呈现。默认在编辑器区(接近全屏)打开,由配置项 bmc.autoMaximizeTerminal 控制,关闭后回到底部面板。
  • Connect via Telnet:调用系统 telnet 命令接入,需本机已安装 telnet。Telnet 不会自动发送密码,需手动输入。
  • Open in WebView:使用系统浏览器打开 BMC Web UI(https://{host})。

SSH 握手超时由 bmc.connectionTimeout(默认 30 秒)控制。

编辑与删除

  • Edit Configuration / Change Password:修改连接信息。编辑密码时留空表示保留原密码。
  • Disconnect:发送 exit、关闭终端并注销会话。
  • Delete:删除前会弹出模态确认;删除会先关闭相关终端并清理该连接的凭据。

说明:

删除连接会连带删除其凭据;删除分组前需先清空连接或迁移。

连通性管理

插件通过 TCP 探测 SSH 22 端口判断 BMC 可达性,连接树图标实时反映状态(不可达时变红),分组徽章显示「X/Y 可达」。

  • 手动探测单个:右键连接 → 「Check Connection Health」,提示可达 / 不可达。
  • 全量刷新:单击视图标题栏「Refresh」,先把全部连接置为检测中再统一探测。
  • 周期检测:右键连接 → 「开启自动检测连通状态」/「关闭自动检测连通状态」。开启后每 10 秒 探测一轮,仅对开启该项的连接生效。
  • 状态播报:右键连接 → 「开启连通性变更播报」/「关闭连通性变更播报」。上线提示「{分组}/{名称} 已上电」,掉线提示「{名称} 已下电」。

探测超时由 bmc.pingTimeout(默认 3000 毫秒)控制。可达性 = 「TCP 22 端口通 + 已配置凭据」;运行宏、上传、升级前均以此作为就绪判据。

命令宏

命令宏用于预定义「一组有序 shell 命令 + 变量 + 失败策略」,运行时按目标范围批量下发到 BMC,每台环境复用一条 SSH 连接执行完整命令集,并回收结构化的「环境 × 命令」结果矩阵。

新建宏

  1. 单击 Command Macros 视图标题栏「Add Command Macro」按钮。
  2. 在表单中填写宏内容并保存。

宏字段说明:

字段说明默认值 / 范围
名称 name宏名称必填
描述 description宏描述可选
命令 commands有序命令列表至少 1 条;每条可单独设置 descriptiontimeoutMsabortOnFailure(遇错:默认 / 中断 / 继续)
变量 variables自定义变量(键名不含 `---

一、简介

openUBMC Studio 是一款基于 Code - OSS 的 openUBMC 集成开发环境,面向 openUBMC 开发、调试和构建场景。

最近版本新增功能

下表按发布时间倒序汇总 openUBMC Studio 最近三个版本的新增功能,单击功能名称可跳转到对应章节。当前收录 2026 年 8 月和 9 月发布的版本;后续发布新版本时,仅保留最近三个版本。

版本新增功能
2.1.1(2026 年 9 月 1 日)AI 引导环境初始化:通过预置 Prompt 引导 AI Agent 完成 GitCode 登录、开发环境部署和规则集配置。
CSR 拓扑插件 0.3.7:提供本地、日志和远程三种整机拓扑模式,支持总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
事件管理:可视化管理事件字典、描述模板和 CSR 事件绑定,并导出事件字典及机型支持清单。
日志诊断、Agent 日志体检与告警链条分析:导入 BMC 一键日志压缩包或 dump 目录,结合本地证据和 openUBMC RAG 生成问题清单、导出 PDF 报告,并分析指定告警的触发链条。
C/C++、Lua 与北向接口快速调试:根据组件 Git 变更生成调试计划,直接部署 Lua 和运行时配置,按需构建 C/C++ 与生成型北向配置,并完成服务重启、结果校验和环境恢复。
BMC 远程 GDB 调试:支持附加板端 systemd 服务,或部署并启动独立程序进行源码级调试。
出包签名配置:可视化管理 HPM 和 EEPROM 签名档案,生成本地自签名证书并吊销签名者证书。
2026 年 8 月 1 日版本BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级、日志监控和 MCP 工具。
白牌包定制:可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
Manifest 配置与一键出包:可视化编辑 manifest.yml 出包配置,并按机型和包型构建固件包。
组件与固件联合构建:从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。

主要特性

openUBMC Studio 的主要特性包括:

  • 智能代码辅助:提供代码跳转、定义预览和引用查找等功能。
  • 实时错误检查:基于规则集检测代码错误和潜在问题。
  • 表达式计算器:支持 CSR 表达式的编写、调试和批量测试。
  • SMC 命令字配置:提供可视化的 SMC 命令字解析和配置工具。
  • 模型配置:支持产品和规则集的选择与配置。
  • CSR 拓扑可视化与调试:支持本地、日志和远程三种整机拓扑模式,提供总线异常检测、单板卡配置、日志包离线还原和真机在位调试。
  • 事件管理:支持查看和编辑事件字典、描述模板及 CSR 事件绑定。
  • 能效调速配置:支持通过 Excel 导入热设计表格并生成 CSR 调速曲线代码。
  • Manifest 可视化配置:支持配置构建变体、组件依赖、默认特性和组件特性,并提供配置诊断。
  • 组件与固件联合构建:支持从业务组件仓构建本地组件包,在隔离 Manifest 中验证选包并转入固件出包。
  • 一键出包:支持选择机型和包型,完成出包预检、固件构建、日志查看和产物下载。
  • 签名配置:支持管理 HPM 和 EEPROM 签名档案,并生成或吊销本地自签名证书。
  • AI 引导环境初始化:支持通过 AI Agent 完成社区开发环境初始化。
  • 日志诊断与告警链条分析:支持导入 BMC 一键日志进行可视化诊断、Agent 日志体检和告警链条分析。
  • C/C++、Lua 与北向接口快速调试:支持按照 Git 变更规划直接部署或隔离构建,将最小替换集部署到 BMC 并验证结果。
  • BMC 远程 GDB 调试:支持附加板端服务,或部署独立程序进行源码级调试。
  • BMC 环境管理插件:集中管理多台 BMC,支持连接与分组、命令宏、SFTP/HPM 升级和日志监控。
  • 白牌包定制:支持可视化定制 Web 风格、Logo、图片和产品信息,并构建白牌包或清白牌包。
  • 社区集成:对接 openUBMC 社区资源和服务。

二、AI 引导环境初始化

openUBMC Studio 提供 AI 引导环境初始化能力。将预置 Prompt 发送给 AI Agent(例如 opencode、Claude Code 或 Cursor)后,AI Agent 会检测当前状态、诊断问题,并按顺序引导用户完成社区开发环境初始化。

使用前准备

  • 已安装并能正常使用 AI Agent,例如 opencode、Claude Code 或 Cursor。

打开配置引导

  1. 在欢迎页面中单击“配置引导”入口。

  2. 在打开的配置引导窗口中找到“AI 引导初始化”卡片。

复制引导指令

  1. 单击“复制指令”卡片,打开 Prompt 对话框。

  2. 单击“复制到 AI Agent”,将 Prompt 复制到剪贴板。

  3. 切换到 AI Agent,粘贴并发送 Prompt。

了解 AI 引导流程

AI Agent 接收到 Prompt 后,会按以下流程引导用户完成环境初始化:

  1. GitCode 登录认证:AI Agent 打开 OAuth 登录窗口,并在用户授权后检测登录状态。
  2. 环境检测与部署:AI Agent 检测操作系统。Windows 用户可以选择 Docker(约 5 分钟)或 WSL(约 30 分钟)部署方式,Linux 用户直接进入环境配置。
  3. 规则集配置:AI Agent 引导用户在 openUBMC Studio 界面中选择机型和规则集,并通过 localview_get_data_source 验证配置是否生效。
  4. 状态写回:每个步骤完成后,AI Agent 会回写向导状态;全部步骤完成后,向导状态变为“已完成”。

说明

AI Agent 在每个步骤开始前会查询当前配置进度,并自动跳过已完成的步骤。初始化中断后,可以重新发送 Prompt 继续执行。

验证初始化结果

  1. 确认配置引导窗口显示初始化已完成。

  2. 返回欢迎页面,确认状态栏中的登录状态、机型和规则集信息已更新。

常见问题

  • Docker SSH 连接失败:检查容器内 sshd 是否启动、10022 端口是否开放,以及密钥认证是否配置正确。
  • Conan 鉴权失败:检查 GitCode 登录状态是否有效,重新登录后重试。
  • 规则集未生效:在 openUBMC Studio 状态栏中确认是否已选择机型和规则集,必要时重新配置。

三、登录到社区

openUBMC Studio提供了便捷的社区登录功能,通过社区登录可以获取更多资源和服务支持。

登录步骤

  1. 点击IDE右下角状态栏中的登录图标

  2. 在弹出的登录页面中输入您的openUBMC社区账号和密码

  3. 点击“登录”按钮完成登录

登录状态保持

登录成功后,IDE会自动保持和刷新登录状态:

  • 自动刷新:IDE会定期刷新登录状态,确保持续有效
  • 状态保持:退出IDE后,登录状态会继续保持一段时间
  • 自动重连:重新打开IDE时,会自动尝试使用上一次的登录状态重新登录

Conan中心仓集成

登录社区后,IDE会自动同步登录到Conan中心仓:

  • 登录状态自动保持并刷新
  • 只要IDE处于登录状态,Conan就处于登录状态
  • 在执行出包等操作时不会因为认证问题而超时

说明:

建议在开始开发工作前先完成社区登录,以确保能够正常访问所有资源和服务。

四、CSR 编码辅助

openUBMC Studio提供了强大的CSR编码辅助功能,包括引用跳转、规则检查、表达式计算器和SMC计算器等,帮助开发者快速定位代码、发现问题并提高开发效率。

模型配置

使用CSR编码辅助功能前,需要先完成模型配置。登录IDE后,点击Web版Studio状态栏中的"未选择机型"按钮,按以下步骤操作:

  1. 在模型配置页面中,选择对应的产品和规则集。

  2. 确认产品信息后,选择需要配置的模型文件。

  3. 配置模型文件对应的代码仓和分支信息。

  4. 完成配置后,点击"确定"保存配置。模型配置完成后,规则检查、拓扑配置等功能即可正常使用。

说明:

模型配置完成后即可使用以下CSR编码辅助功能。后续如需切换产品或规则集,可重新进行模型配置。

引用跳转功能

引用跳转功能可以帮助开发者快速定位代码定义和引用位置,支持多种跳转方式,大幅提高代码阅读和导航效率。

转到定义

  1. 在代码编辑器中,将光标定位到需要查看定义的符号上。

  2. 使用以下任一方式跳转到定义:

    • 右键点击符号,选择“转到定义”
    • 按住 Ctrl 键,点击符号

  3. 编辑器将自动跳转到符号的定义位置。

转到引用

  1. 在代码编辑器中,将光标定位到需要查看引用的符号上。

  2. 使用以下任一方式查看引用:

    • 按下 Shift + F12
    • 右键点击符号,选择“转到引用”

  3. 在侧边栏将显示所有引用该符号的位置列表。

  4. 点击列表中的项可跳转到对应的引用位置。

鼠标悬停预览定义

  1. 在代码编辑器中,将鼠标悬停在符号上。

  2. 等待片刻,将显示符号的定义预览窗口。

基本规则错误检查功能

openUBMC Studio内置了CSR规则检查功能,模型配置完成后即可支持CSR语法与配置约束的实时检查。该功能支持错误位置高亮和规则自动更新,帮助开发者在编码阶段就发现潜在问题。

实时检查

模型配置后,在openUBMC Studio中打开任意CSR文件,检查自动生效:

页面中的类型错误和格式错误都会被实时拦截:

表达式中的语法错误也可以被实时拦截:

查看检查结果

  1. 错误和警告会以波浪线形式标注在代码中:

    • 红色波浪线:表示错误(Error)
    • 黄色波浪线:表示警告(Warning)

  2. 查看"问题"面板:

    • 点击底部"问题"标签页
    • 查看所有错误和警告列表
    • 点击列表项可快速定位到对应代码位置

复杂规则校验

openUBMC Studio已建立复杂规则校验能力,可以在社区代码仓 openubmc_dsl_rulepack 中开发业务相关的检查规则,自定义规则同样支持实时检查功能。

表达式计算器功能

表达式计算器是openUBMC Studio提供的强大工具,用于编写、调试和测试CSR表达式,帮助开发者快速验证表达式的正确性。

打开表达式计算器

  1. 打开CSR文件,在表达式上方将显示“计算表达式”按钮

  2. 点击“计算表达式”按钮,表达式计算器窗口将在右侧打开

表达式计算器界面

表达式计算器界面包含以下部分:

  • 表达式编辑区:显示和编辑当前选中的表达式
  • 模式切换按钮:可以在“调试模式”和“用例模式”之间切换
  • 变量面板:显示当前表达式中可用的变量及其值
  • 结果面板:显示表达式计算结果和各级管道的计算过程

修改表达式

  1. 在表达式编辑区查看或修改表达式

  2. 修改完成后,点击“保存到文件”按钮保存修改

  3. 保存后,表达式计算器会自动重新加载表达式

  4. 源文件中的表达式修改并保存后,表达式编辑页面也会自动重新加载

调试表达式

  1. 在表达式编辑区查看表达式内容

  2. 在变量面板中输入或修改变量值

  3. 完成输入后,系统将自动计算:

    • 各级管道的中间结果
    • 最终表达式结果

说明:

调试功能可以帮助您逐步查看表达式的计算过程,快速定位问题。

表达式批量用例测试

  1. 在表达式计算器中, 点击“用例模式”按钮切换到批量测试模式

  2. 创建测试用例:

    • 按照要求输入测试用例名称和参数值以及结果值
  3. 执行批量测试:

    • 点击“加载用例”加载所有测试用例
    • 点击“Execute all”执行所有测试用例
    • 查看验证报告,显示每个用例的执行结果

说明:

测试用例可以导出为文件,方便团队共享和版本管理。
建议为复杂表达式编写多个测试用例,确保表达式在各种情况下都能正确工作。

SMC计算器功能

SMC计算器用于解析和配置SMC命令字,帮助开发者快速理解和生成SMC命令,简化SMC相关的开发工作。

打开SMC计算器

  1. 打开CSR文件,定位到Scanner或Accessor的offset字段

  2. 点击offset字段上方显示的"计算偏移量"按钮

  3. SMC计算器窗口将在右侧打开

SMC命令字解析

SMC计算器提供了强大的命令字解析功能:

  1. 自动解析:当前偏移量会被自动解析,显示各字段的含义
  2. 实时计算:修改下方输入框的数据内容将自动更新和计算偏移量
  3. 应用到文件:点击“应用”按钮可以将计算结果写入到CSR文件
  4. 字段提示:鼠标悬停在字段上方可以显示具体的字段含义和说明

SMC命令字可视化辅助

openUBMC Studio提供了直观的SMC命令字可视化功能:

  1. 水印显示:SMC命令字将在CSR中以水印形式显示字段内容,方便查看

  2. 悬停详情:鼠标悬停在offset字段上将显示偏移量的详细信息,包括:

    • 各字段的值
    • 字段的含义
    • 完整的偏移量计算结果

说明:

可视化辅助功能可以帮助您快速理解复杂的SMC命令字结构,减少配置错误。

五、拓扑与 CSR 可视化配置

CSR 拓扑插件提供整机和单板卡两个维度的总线及器件拓扑可视化。0.3.7 版本新增本地、日志和远程三种整机拓扑模式,并支持总线异常检测、日志包离线还原、真机在位调试以及单板卡可视化配置。

创建拓扑配置

  1. 单击 openUBMC Studio 左侧的拓扑十字形侧边栏图标。

  2. 单击“创建配置”。

  3. 单击“添加仓库”,选择 CSR 文件夹,即可在该机型配置中使用来自该文件夹的 CSR。可以添加多个 CSR 代码仓,单击右下角的“确定”即可创建项目。

  4. 创建完成后,拓扑起点为 root.sr

CSR 整机拓扑

CSR 整机拓扑图提供整机维度与单 CSR 维度的总线及器件拓扑可视化:以板卡为节点展示整机的层级结构、Connector 连接关系与总线连线,支持双击板卡下钻到单板视图、从器件库拖拽器件完成配置。根据数据来源不同,拓扑图分为三种使用模式:本地模式日志模式远程模式

三种模式对比与选择

对比项本地模式日志模式远程模式
数据来源模型配置的本地 CSR 代码仓日志压缩包(connectors.txt + .sr真机运行时(mdbctl + framework.log
依赖模型配置
在位状态静态配置,可切换(在位/不在位/天池加载/动态加载)收集时刻快照,只读运行时实际值,可切换开关模拟拔插
典型场景日常开发、搭建整机拓扑、板卡适配现场日志离线分析、问题回溯真机调试、在位异常定位

根据手头资源选择:

  • 有整机 CSR 代码仓,需要搭建或修改拓扑配置 → 本地模式(见下文「本地模式」)。
  • 只有现场日志压缩包,需要还原收集时刻的整机拓扑 → 日志模式(完整指南见导入 BMC 日志压缩包查看 CSR 拓扑)。
  • 有可达真机 BMC,需要查看实时在位或调试板卡加载 → 远程模式(完整指南见远程模式连接 BMC 环境)。

模式切换:日志模式与远程模式均为临时查看模式,重新从侧边栏加载本地拓扑(如切换机型或点击侧边栏文件节点)即恢复本地模式,导入日志产生的临时解压目录会自动清理。

界面说明

拓扑图中的主要元素如下:

  • 板卡节点:每个节点代表一块板卡,显示板卡类型、SR 文件名与对应的板型示意图;根节点为 root.sr(BMC 主板)。
  • 在位状态:节点左上角显示在位标签或开关,含义与可操作性随模式不同,详见各模式说明。
  • 板卡选择器:本地模式下,尚未确定 SR 的节点提供候选板卡列表与数量选择器,用于配置下游板卡。
  • 总线连线与连接桩:连线表示上游 Connector 传入的总线,由上游板卡的连接桩连向下游板卡;总线配置不一致时会出现红色连线或异常标志。
  • 单板下钻:双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面,查看该板卡 SR 的板内拓扑与详情。
  • 工具栏:配置选择框与「导出配置」按钮用于整机拓扑的多配置管理,仅本地模式可用。

本地模式

本地模式是默认模式,数据来自模型配置的本地 CSR 代码仓,用于日常开发中搭建与修改整机拓扑。

查看整机拓扑

点击侧边栏拓扑插件图标,进入整机拓扑图页面,显示如下:

  1. 总线连线:板卡之间的连线为上游 Connector 传入的总线,将鼠标悬停在总线上可显示总线名称。

  2. 总线异常检测:自动检测上游 Connector 传入总线与下游板卡 Anchor 中定义总线的一致性。

    1. 总线类型不匹配

      当上游 Connector 的 Buses 和下游板卡 Anchor 的 Buses 同一索引位置的总线类型不一致时,总线显示为红色,将鼠标悬停在图标上可查看具体信息。

      总线类型判断逻辑:取总线名称前缀,若前缀相同,则认为类型匹配。

    2. 上游多传入总线

      当上游 Connector 的 Buses 数量大于下游板卡 Anchor 的 Buses 数量时,Connector 的 Buses 数组中多出的总线会被识别为上游多传入总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。

    3. 下游板卡多出总线

      当上游 Connector 的 Buses 数量小于下游板卡 Anchor 的 Buses 数量时,下游板卡 Anchor 的 Buses 数组中多出的总线会被识别为下游多定义总线。板卡左下角会显示红色异常标志,将鼠标悬停在标志上可查看具体信息。

  3. 板卡合并:SR 文件中的不同 Connector 加载同一个文件时,拓扑图会将其合并为一张板卡。

配置整机拓扑

  1. 可通过板卡上方选项在整机拓扑中选择对应板卡,各板卡可选下游板卡数量和类型由该板卡的 Connector 配置决定;尚未确定 SR 的节点通过板卡选择器从候选列表中指定 SR 文件。所有配置信息会自动在本地持久化。

  2. 双击整机拓扑页面的任意板卡,或点击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。

  3. 通过工具栏的配置选择框可在多套整机配置之间切换,点击「导出配置」可导出当前配置。

在位状态

本地模式根据 SR 文件中上游 Connector 的 IdentifyModePresence 值显示在位状态,单击开关可切换:

显示含义
天池加载IdentifyMode 为 3,由天池配置加载
在位 / 不在位IdentifyMode 为 2,Presence 为固定值 1 / 0
动态加载IdentifyMode 为 2,Presence 为表达式,按表达式动态计算
  1. 板卡在位状态

  2. 切换在位状态:单击开关可同步修改上游 Connector 中 Presence 的值。

CSR 单板卡配置

双击整机拓扑页面的任意板卡,或单击左侧 CSR 列表中的文件,即可打开单 CSR 配置页面。单板卡视图支持新增、删除总线或器件,以及修改 Mux 总线的 ChannelId。也可以按 Ctrl + Z 撤销、按 Ctrl + Y 恢复。

定位器件

单击器件,右侧 SR 文件会自动定位到该器件对象所在的位置。

修改 ChannelId

单击器件上方的 ChannelId 数字方块,可修改其值。

新增总线

单击 + 图标,选择总线类型并填写总线后缀,然后单击“确定”新增总线。

删除器件、总线

将鼠标悬停在器件或总线上,单击鼠标右键并选择“删除”。

拖拽器件

打开器件库,将器件拖拽到总线上即可将器件挂载到总线,同时自动修改对应 CSR 文件内容。也可以拖拽器件到可下连的器件卡片上进行挂载。

导入 BMC 日志压缩包查看 CSR 拓扑

openUBMC Studio 支持导入 BMC 一键收集的日志压缩包,在离线环境下还原当前整机加载的 CSR 及其拓扑关系。适用于现场问题定位与离线日志分析:拿到日志包即可查看板卡层级结构、连接关系与在位情况,无需连接真机。

使用前准备

  • 已安装 openUBMC Studio 并启用 CSR 拓扑插件(随主插件提供)。
  • 准备 BMC 一键收集的日志压缩包,支持 ziptartgzgz(含 .tar.gz)格式。
  • 本机需可执行 tar 命令(日志包解压依赖系统 tar)。

说明:

导入日志模式不依赖模型配置,也无需预先创建拓扑项目,可直接使用。

导入日志压缩包

  1. 在 openUBMC Studio 左侧 CSR 拓扑侧边栏视图标题栏,点击「导入日志包」按钮。

  2. 在弹出的文件选择框中,选择 BMC 日志压缩包并点击「选择日志压缩包」确认。

  3. 工具自动解压并解析日志包中的 connectors.txt,随后在主编辑区渲染整机 CSR 拓扑图。导入成功后右下角提示「成功导入: 文件路径」。

查看导入的拓扑

  • 板卡层级与连接关系:拓扑图展示整机各板卡的层级结构与总线连接,查看能力与本地整机拓扑页面一致,但不支持切换板卡配置(配置选择框与导出配置按钮为禁用状态)。

  • 在位状态:每块板卡以只读标签显示在位状态(在位/不在位),状态取自日志包记录。

实现原理

数据来源

导入模式的拓扑数据全部来自日志压缩包内部,不访问真机,各数据项来源如下:

数据项来源用途
板卡层级结构connectors.txt 的树形拓扑部分构建整机拓扑树(板卡父子关系)
Connector 详情(BusesTypePresenceIdentifyMode 等)connectors.txt 的 Connector 详情段总线连线、连接器类型、在位状态
板卡类型与名称(Unit.Type / Unit.Name日志包内的 .sr 文件拓扑节点显示的板卡类型与名称
下游总线(ManagementTopology.Anchor.Buses日志包内的 .sr 文件总线一致性检测的下游锚点
板卡 SR 详情日志包内的 .sr 文件双击板卡下钻查看的自描述内容

connectors.txt 通常位于日志包的 dump_info/AppDump/hwdiscovery/ 目录下;工具同时支持在解压根目录及任意子目录中递归查找。.sr 文件从 connectors.txt 所在目录及其子目录中递归收集。

connectors.txt 格式示例

connectors.txt 由 BMC 硬件自发现流程生成,前半部分是板卡树形结构,后半部分是每个 Connector 的属性详情:

text
root
├─Connector_BMC
│├─Connector_PCPU_1
│└─Connector_PCPU_2
└─Connector_PSU_1

Connector_BMC:
.Buses: ["I2c_1","I2c_2"]
.Type: BMC
.Presence: 1
.IdentifyMode: 2

Connector_PSU_1:
.Buses: ["I2c_3"]
.Type: PSU
.Presence: 0
.IdentifyMode: 2
  • 树形部分:通过行首的 ├─└─ 符号表达层级,每个节点即一块板卡的 Connector,对应 SR 文件名为 节点名.sr(如 Connector_PCPU_1.sr)。

  • 详情部分Connector_XXX: 开启一个 Connector 段,其下以 .属性: 值 逐行列出属性。其中 Presence 决定在位标签(1=在位,0=不在位),Buses 决定上游总线连线。

处理流程

  1. 解压:调用系统 tar(zip 在 Linux 下用 unzip)将日志包解压到固定临时目录。
  2. 查找 connectors.txt:按「解压根目录 → dump_info/AppDump/hwdiscovery/ → 递归子目录」的顺序查找。
  3. 解析:拆分树形结构与 Connector 详情段,得到拓扑树骨架与各 Connector 属性。
  4. 收集 SR 文件:递归收集同目录下全部 .sr 文件并解析缓存到内存。
  5. 构建拓扑:将 Connector 属性与 SR 文件按名称(去除末尾 _序号 后缀)匹配,生成前端拓扑树并渲染。

说明:

在位状态反映的是收集日志时刻的整机状态,非实时数据。

功能验证

导入完成后,可按以下检查项验证功能是否正常:

验证项操作步骤预期结果
导入解析选择 BMC 一键收集日志压缩包导入右下角提示「成功导入: 文件路径」,主编辑区渲染整机拓扑
板卡层级对比拓扑树与日志包 connectors.txt 的树形结构板卡父子层级一致,无遗漏板卡
在位状态查看板卡节点标签,与 connectors.txt 中对应 Connector 的 Presence 值比对标签显示与记录一致(1=在位,0=不在位)
板卡详情下钻双击拓扑中的板卡节点编辑器第二列打开该板卡 SR 文件内容

常见问题

现象处理建议
提示「未找到 connectors.txt 文件」请确认导入的是 BMC 一键收集日志压缩包(内含 connectors.txt
导入会占用/残留磁盘空间吗日志包解压到固定临时目录(系统临时目录/bmc-log-import),每次导入前自动清理旧数据,无需手动维护
能否修改在位状态或板卡配置导入模式为只读查看,不支持修改在位状态与 CSR 配置;配置选择与导出按钮为禁用状态

远程模式连接 BMC 环境

远程模式支持连接真机 BMC 环境,自动从运行时数据(mdbctl 调试命令 + 框架日志)构建整机 CSR 拓扑,实时展示板卡实际在位情况。无需从 BMC 手动导出数据再导入,选择环境即可出图,适用于真机调试、板卡适配验证与在位异常定位。

使用前准备

  • 已安装并启用 BMC环境管理 插件(openubmc.bmcstudio-bmc-remote),并添加至少一条 BMC 连接。连接的添加方法参见 BMC环境管理插件 章节。
  • 目标 BMC 运行 openUBMC 固件,开放 Telnet 调试通道(23 端口免认证调试 shell),且板上具备 mdbctl 调试命令。
  • 开发机无需安装 telnet 客户端,扩展使用内置连接直连。

说明:

远程模式不依赖模型配置,选中环境后自动跳过机型配置流程,直接加载拓扑。

连接 BMC 环境

  1. 在 CSR 拓扑侧边栏视图标题栏,点击「远程调试」按钮。

  2. 在顶部弹出的环境选择框中,选择目标 BMC 环境。列表展示全部已配置连接,并实时探测在线状态(在线/离线图标 + 账号信息)。

  3. 选择后显示「正在加载 xx 环境的 CSR 拓扑」进度通知,工具自动读取真机运行时的 Connector 对象与 SR 加载记录并构建拓扑。

  4. 加载完成后,拓扑图工具栏显示当前连接的环境名称与 IP,主编辑区渲染整机实时拓扑。

查看实时拓扑

  • 真实在位状态:拓扑以真机运行时数据为准(而非静态 root.sr 配置),每块板卡显示实际在位/不在位状态。
  • EEPROM 板卡:CSR 烧录在 EEPROM(而非 .sr 文件)的板卡会被自动解码,与文件板卡同等展示,双击同样可查看内容。
  • 板卡 SR 下钻:双击板卡即可进入单板视图查看该板卡的 SR 内容。
  • 在位调试:板卡节点上的在位开关可点击切换,模拟板卡拔插,详见下文「在位调试」。

在位调试

远程模式下,点击板卡节点上的在位开关即可模拟板卡拔插,验证下级板卡的加载逻辑,无需物理操作真机。

说明:

切换在位状态不是卸载板卡:该板卡已加载的 SR 不受影响,只影响下级板卡的加载判断——下级板卡检测到上游 Connector 的 Presence 为 0 时不会加载。

普通在位属性

Presence 为固定值(1/0)的板卡,节点上显示单个在位开关。点击开关后:

  1. 工具通过 mdbctl setprop 向真机下发修改,更新该 Connector 的 Presence 值;
  2. 重新读取运行时在位状态并重建拓扑(不重新读取 SR 文件);
  3. 下级板卡的加载状态随 Presence 变化体现在拓扑上。

同步属性(多开关)

Presence 为表达式(引用其他对象属性,如多个物理在位开关共用一个 Connector)时,节点上会按同步源渲染多个开关,每个开关对应一个同步源对象的属性。点击单个开关只修改对应同步源对象的属性值,适用于逐个验证各物理开关对板卡加载的影响。

注意:

在位调试通过 setprop 真实修改真机运行时属性,直接影响下级板卡的加载判断。请确认影响范围后再操作,调试完成后建议将开关切回原状态。

实现原理

数据来源

远程模式的拓扑数据来自真机运行时,全部通过 Telnet 调试通道(23 端口)自动采集,各数据项来源如下:

数据项来源用途
Connector 对象清单真机运行时(mdbctl lsobj connector拓扑节点唯一来源,以实际加载为准(非静态 root.sr)
Connector 实际在位值真机运行时(mdbctl lsprop 读取 Presence板卡在位/不在位状态
SR 文件加载记录真机 /var/log/framework.log 中框架打印的加载日志确定每个 Connector 实际加载的 SR 文件路径(含根节点)
SR 文件内容真机 /opt/bmc/sr/*.sr板卡类型/名称(Unit 字段)、下游总线、双击下钻内容
EEPROM 板卡 CSR板上 EEPROM(CDR 容器格式)CSR 烧录在 EEPROM(无 .sr 文件)板卡的解码展示
拓扑层级关系Connector 的 GroupPosition 属性按 GroupPosition 建树(去末两位即父节点)

通过日志查看 Connector 加载的文件

每个 Connector 实际加载的 SR 文件记录在 BMC 的框架日志 /var/log/framework.log 中,由硬件自发现流程打印,共两类记录:

记录一(init.lua,板卡加载主源)——每个 Connector 加载 SR 时打印,position 即该 Connector 的 GroupPosition

text
2026-08-20 10:15:32 hwdiscovery NOTICE: init.lua(152): position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.sr, ...

记录二(dump.lua,根节点主源)——根板卡的加载只出现在此类记录中:

text
2026-08-20 10:15:30 hwdiscovery NOTICE: dump.lua(88): start to dump connector: root loading file: /opt/bmc/sr/root.sr

工具解析后的对应关系示例:

日志记录解析结果
position: 0101011A, get csr data from /opt/bmc/sr/14100513_pcie_card.srGroupPosition 为 0101011A 的 Connector 加载了 14100513_pcie_card.sr
start to dump connector: root loading file: /opt/bmc/sr/root.sr根节点加载 root.sr(拓扑根板卡)
start to dump connector: Connector_EXU_1 loading file: Eeprom/...loading file 为 EEPROM 对象路径)该板卡 CSR 烧录在 EEPROM,工具改走 EEPROM 解码

也可以在 BMC 上手动执行以下命令核对(与工具解析使用同一数据源):

bash
grep -E "get csr data from|start to dump connector" /var/log/framework.log

说明:

同一 Connector 多次加载时取最新一条记录(日志按最新文件优先解析);加载失败的记录(如占位文件)会被过滤,不会体现在拓扑中。

处理流程

  1. 连通性自检:通过 Telnet 23 端口连接目标 BMC,探测调试 shell 可用性。
  2. 发现 Connector:执行 mdbctl lsobj connector 获取运行时全量 Connector 对象,再批量 mdbctl lsprop 读取每个 Connector 的 Presence 实际值。
  3. 解析加载记录:读取 /var/log/framework.log(含历史 .gz 轮转文件),解析「position → SR 文件」与「运行时名 → 文件」两组映射。
  4. 建树:按 Connector 的 GroupPosition 属性构建整机层级(去掉末两位十六进制即父节点位置)。
  5. 读取 SR 内容:按映射从 /opt/bmc/sr/ 读取 .sr 文件;EEPROM 板卡读取 EEPROM 二进制(CDR 容器)并本地解码出 CSR。
  6. 渲染:组装拓扑树、在位状态与 SR 数据,发送到拓扑图视图渲染。

说明:

在位状态以真机运行时数据为准(mdbctl 实时读取),而非 CSR 静态配置中的 Presence 表达式,可避免静态配置与实际加载不一致造成的误判。
所有数据仅在加载拓扑和切换在位开关时读取,不在本地持久化。

功能验证

连接环境并加载拓扑后,可按以下检查项验证功能是否正常:

验证项操作步骤预期结果
环境列表点击「远程调试」按钮列出全部已配置 BMC 连接,并标注在线/离线状态与账号信息
拓扑加载选择一个在线环境显示「正在加载 xx 环境的 CSR 拓扑」进度,完成后工具栏显示环境名与 IP,渲染整机拓扑
在位一致性将拓扑中板卡在位状态与真机实际在位比对(可对照 BMC Web 页面或板上 mdbctl 查询结果)与真机实际加载一致(以运行时数据为准)
加载文件一致性在 BMC 上执行上文 grep 命令,比对拓扑中板卡对应的 SR 文件双击下钻打开的 SR 文件与日志记录的 get csr data from 路径一致
板卡详情下钻双击拓扑中的板卡节点打开单板视图,可查看该板卡 SR 内容
EEPROM 板卡查看拓扑中无 .sr 文件的板卡EEPROM 板卡正常解码展示,双击同样可查看 CSR 内容
在位开关切换点击某板卡节点的在位开关切换后拓扑自动刷新,下级板卡加载状态随之变化
同步属性切换点击同步属性板卡上的单个开关仅对应同步源对象的属性变化,其余开关状态不变,拓扑刷新

常见问题

现象处理建议
提示「未配置 BMC 环境,请先添加连接」先在 BMC环境管理插件中添加连接,参见 BMC环境管理插件 章节
提示「远程拓扑加载失败」检查环境是否在线、BMC 23 端口是否开放、板上 mdbctl 是否可用;详细原因可查看输出通道中 RemoteTopologyLoader 的日志
环境列表显示「探测中」连接健康探测最长 3 秒,离线环境会标注离线状态,不影响选择其他环境

说明:

远程模式下配置选择与导出配置不可用(禁用),与导入日志模式一致。
此外,远程拓扑支持通过 MCP 工具 csr_topo_get_remote_topology 供 AI Agent 查询整机 Connector 在位清单与 SR 来源。

能效调速配置

能效调速配置功能提供能效调速对象的配置入口,支持通过Excel导入热设计表格解析调速曲线配置,支持对象自动关联及配置检查、CSR片段自动生成。

打开配置页面

点击CSR拓扑侧边栏中的温度计图标即可开启能效调速配置页面。

配置能效调速对象

  1. 通过该页面配置能效调速对象,以及配置对象间的关联关系。

  2. 点击右上角的"导入Excel"即可导入热设计表格,当前仅支持xlsx格式,若为其他格式请通过Excel另存为xlsx格式文件。完成导入后,温度点与调速曲线等配置可以自动解析。

  3. 点击右上角"生成CSR"即可根据当前配置产生CSR代码片段,可以自行填入CSR文件中。生成CSR过程支持配置语法检查,禁止出现ID冲突等问题。

六、事件管理

本章节介绍 openUBMC Studio 的事件管理功能。用户可以在 IDE 中查看和编辑 event_def.json 中的事件信息与描述模板,也可以查看、新增和保存事件与 CSR Event_ 对象的绑定关系。

说明

事件管理依赖模型配置生成的事件字典基线。如尚未配置模型,请先完成模型配置中的产品和规则集选择。

功能说明

BMC 事件字典定义了整机事件的事件标识、严重级别、事件编码和描述模板等标准信息。事件管理提供以下能力:

  • 事件字典管理:查看、筛选和搜索全部事件,编辑基础字段与中英文描述模板,新建自定义事件模板,以及还原或导出差量。
  • CSR 绑定管理:查看事件在 SR 文件中绑定的 Event_ 对象,可视化新增、编辑和删除绑定,并批量保存到 SR 文件。

根据打开入口,事件管理提供以下两种视图:

视图入口CSR 绑定聚合范围
单板卡视图单 SR 拓扑视图中的“事件管理”当前 SR 文件及其拆分文件中的 Event_ 对象
整机视图总拓扑页面工具栏中的“事件管理”总拓扑下所有 SR 文件中的 Event_ 对象

两种视图共用同一套事件字典与编辑能力,仅 CSR 绑定的聚合范围不同。

使用前准备

  • 模型配置:已完成产品和规则集选择,事件字典基线来自 Conan 规则包中的 event_def.json
  • 拓扑项目:已通过拓扑侧边栏创建配置并添加 CSR 仓库,当前工作区存在可用的 SR 上下文。

说明

字段修改、描述模板修改和自定义事件模板会以差量形式保存在本地缓存中。编辑停止约 1 秒后,差量会自动写入缓存;关闭事件管理面板时,差量会自动落盘。原始字典文件不会被直接修改。

打开事件管理

  • 打开整机视图:进入总拓扑页面,单击工具栏中的“事件管理”。

  • 打开单板卡视图:进入单 SR 拓扑视图,单击“事件管理”。此时 CSR 绑定范围限定为当前 SR 文件。

事件管理会在独立面板中打开,不影响原拓扑页面。

查看事件管理界面

事件管理界面由工具栏、事件列表、编辑横幅、分页栏和详情面板组成。

  • 工具栏:提供新建事件模板、重新拉取、导出、清除全部筛选和搜索功能。
  • 事件列表:展示全部事件,支持列头筛选和分页。
  • 编辑横幅:存在未导出的编辑时,以黄色或绿色横幅提示导出。
  • 详情面板:单击事件行后显示在界面右侧。拖动面板左边缘可以在约 280~700px 范围内调整宽度,单击“×”可以关闭面板。

筛选和搜索事件

查看列表字段

说明
事件(EventKeyId/EventName事件唯一标识与名称,内容过长时自动省略,悬停后显示全文
级别严重程度:提示(蓝灰)、一般(蓝)、重要(橙)或紧急(红)
CSR 绑定当前视图范围内绑定的 Event_ 对象数量
分类根据事件标识推导的业务分类
机型支持当前机型是否支持该事件
EventCode事件的十六进制唯一编码
恢复上报是否上报恢复事件
EventType事件类型
LifeCycleId生命周期标识

设置筛选条件

  1. 单击“级别”“CSR 绑定”“分类”“机型支持”或“恢复上报”列头中的筛选按钮。
  2. 勾选需要保留的选项。每个选项会显示对应的事件数量。
  3. 如需清空当前列的条件,再次打开筛选菜单并单击“清空筛选”。

右上角搜索框支持按 EventKeyId、事件名称或事件编码进行模糊搜索。存在筛选或搜索条件时,工具栏会显示“清除全部筛选(N)”,单击后可以恢复完整列表。

设置分页

底部分页栏支持将每页数量设置为 20、40、80 或 100 条,也支持按页码跳转。没有事件数据时,可以通过空状态入口新建事件模板;存在数据但被过滤时,可以通过空状态入口清除筛选。

新建和编辑事件

新建事件模板

  1. 单击工具栏中的“新建事件模板”。
  2. 在右侧详情面板中编辑新模板。

新建的自定义事件会置于列表顶部并自动选中。详情面板底部提供“删除该自定义事件模板”按钮。

编辑基础字段

  1. 在事件列表中单击目标事件。

  2. 在右侧详情面板中打开“基础信息”页签。

基础字段说明如下:

字段说明
事件名称 EventName事件短名称,通常与 EventKeyId 的最后一段一致
SeverityId严重级别:0 表示提示、1 表示一般、2 表示重要、3 表示紧急
机型支持标记当前机型是否支持该事件,是导出 eventDefList.txt 的依据
恢复上报 DeassertFlag是否上报恢复事件,与 LifeCycleId 共同决定事件是否可恢复
事件编码 EventCode十六进制唯一编码,例如 0x0200001F
旧版事件编码 OldEventCode跨版本兼容映射,没有对应关系时留空
上报通道 ReportChannel目标通道位掩码,65535 表示向全部通道上报
事件类型 EventTypeBMC 固件定义的编号,当前字典中的常见取值为 01
生命周期标识 LifeCycleIdBMC 固件定义的编号,当前字典中的常见取值为 01
动作标识 ActionIdBMC 固件定义的编号,当前字典中的常见取值为 01

编辑描述模板

“描述模板”区域提供以下四类内容的中英文编辑,单击右上角的“中”或“EN”可以切换语言:

  • Description:描述。
  • Cause:可能原因。
  • Influence:影响。
  • Suggestion:处理建议。

说明

  • 描述支持 %Component%DescArg1%DescArg5 占位符,依次引用 CSR 事件绑定中的 ComponentDescArg 字段。输入占位符后,界面会显示提示。
  • 可能原因与处理建议支持多条内容,多条内容之间使用 @#AB; 分隔。

还原事件数据

  • 还原单个事件:单击详情面板标题行中的“还原”,丢弃该事件的全部本地编辑并恢复为字典基线值。

  • 重新拉取全部事件:单击工具栏中的“重新拉取”,在确认窗口中继续操作。完成后,事件管理会丢弃全部编辑,从 Conan 包重新读取事件字典,并将筛选、搜索和分页恢复为初始状态。

注意

“重新拉取”会丢弃当前所有本地编辑。首次打开事件管理时,系统优先读取本地缓存;仅在需要放弃全部差量或重新获取 Conan 包中的最新数据时执行此操作。

查看并导出修改

存在未同步的编辑时,列表上方会显示编辑横幅。

横幅含义导出文件
黄色事件字段、描述模板或自定义模板发生变化event_def.json
绿色机型支持字段发生变化eventDefList.txt
  • 查看修改:打开变化清单后,可以单击事件标识定位到对应事件,也可以单独还原某个事件。
  • 导出事件字典:导出的 event_def.json 包含全部事件定义与描述模板,文件版本号末段自动加一,例如从 1.0.0 更新为 1.0.1。导出后,请将文件提交到 VPD 仓库进行同步。
  • 导出机型事件清单:导出的 eventDefList.txt 仅包含“机型支持”为“是”的事件标识。

说明

两类横幅会根据修改内容独立显示和导出。两类内容均发生变化时,需要分别导出对应文件。

管理 CSR 绑定

CSR 绑定描述事件与 SR 文件中 Event_ 对象的对应关系。在详情面板中打开“CSR 绑定”页签,可以查看和编辑绑定。

查看 CSR 绑定

页签顶部显示当前视图类型和事件的绑定总数。绑定以卡片形式展示,每张卡片会标注所属 SR 文件,悬停后可以查看完整路径。

新增 CSR 绑定

  1. 单击详情面板底部的“CSR 绑定”。

  2. 在新增卡片中填写绑定字段。

  3. 如果当前处于整机视图,选择“目标 SR 文件”。整机根文件 root.sr 不在候选范围内;单板卡视图会自动使用当前 SR 文件。

  4. 单击“确定”,批量保存本次绑定修改。

查看绑定字段

字段说明
事件对象名必须以 Event_ 开头且不能只有前缀;同一拆分文件组内不得重名,不同组之间允许同名
目标 SR 文件仅在整机视图新增绑定时显示,用于指定绑定写入的 SR 文件
Condition绑定条件;清空后删除该键,纯数字内容会自动转换为数值
Component事件关联的器件组件,候选项按照目标 SR 文件分为“推荐”和“其他”两组
OperatorId操作符编号,可以留空
Enabled是否启用绑定,可以留空以删除该键

验证保存结果

  • “确定”仅在存在修改且表单校验通过时可用;单击“取消”会放弃本次全部修改。
  • 对象名为空、未以 Event_ 开头或在组内重名时,对应输入框会显示错误。
  • 保存成功后,绑定列表和绑定数量会自动刷新,事件列表会定位到当前事件。
  • 在编辑器中直接保存 SR 文件后,绑定列表和绑定数量也会自动刷新。

常见问题

  • 事件字段是否需要手动保存? 不需要。字段与描述模板编辑会在停止输入约 1 秒后写入本地缓存,并在关闭面板时落盘;CSR 绑定修改需要单击“确定”保存到 SR 文件。
  • 重新拉取后编辑全部消失:此行为符合预期。“重新拉取”会丢弃全部本地差量并恢复到字典基线。
  • CSR 绑定提示对象名必须以 Event_ 开头:事件对象名必须带有固定前缀,并且不能只有 Event_ 前缀。
  • 整机视图与单板卡视图的绑定数量不一致:两种视图的聚合范围分别为全部 SR 文件和当前 SR 文件,因此数量可能不同。
  • 还原事件后列表中的绑定数量未变化:“还原”仅丢弃事件字典的本地差量,不修改 CSR 绑定。
  • 导出的文件应提交到哪里? event_def.jsoneventDefList.txt 均用于提交到 VPD 仓库,具体流程遵循团队的字典变更管理规范。
  • 新建的模板在筛选结果中不可见:新建模板时会自动清空筛选。如模板仍不可见,请检查搜索词和列头筛选条件。

七、日志诊断与告警链条分析

一键日志解析插件(扩展 ID:openubmc.bmcstudio-log-reviewer)用于导入 BMC 一键日志包或 dump 目录,并通过可视化页面和 AI Agent 分析设备状态。用户可以浏览硬件、告警、传感器、性能及原始日志,也可以结合 openUBMC RAG 进行日志体检,或通过告警证据工具分析指定事件的触发链条。

功能说明

日志诊断提供以下使用方式:

使用方式主要能力适用场景
一键日志解析页面自动解压日志包,通过概览、硬件、告警、传感器、性能、调速、线缆和日志等视图展示 dump 日志人工浏览现场、筛选日志和快速确认异常范围
Agent 日志体检结合本地日志证据和 openUBMC RAG 生成问题清单,实时回写结果并导出 PDF 报告对日志进行批量体检和问题优先级排序
定向诊断与告警链条分析关联事件记录、运行日志、数据库及 CSR Event 定义,输出告警状态、触发链、恢复或复发情况和证据位置聚焦指定问题、还原告警链条和形成可复核结论

说明

可视化页面中的“智能检测”用于 Agent 日志体检。指定问题的深入诊断和告警链条分析可以在已配置 openUBMC Studio MCP 服务的 AI Agent 对话中发起。

使用前准备

如果活动栏中没有“一键日志解析”图标,请先执行以下操作:

  1. 在 openUBMC Studio 中打开插件市场,搜索“一键日志解析”。
  2. 安装插件,并按照提示重新加载窗口。
  3. 确认活动栏中出现“一键日志解析”图标。

使用 Agent 日志体检前,还需要满足以下条件:

  • 已登录 openUBMC 社区。
  • openubmc-rag 扩展已启用。
  • 当前网络可以访问配置的 LightRAG 服务。
  • AI Agent 可以访问 openUBMC Studio MCP 工具。

AI Agent 会在读取日志前检查 RAG 状态。未登录、RAG 工具未启用、网络异常或状态响应无法解析时,日志体检会停止并显示处理建议。

说明

如果所有 MCP 工具均提示网络错误,请将 localhost127.0.0.0/8::1 加入代理直连列表或 NO_PROXY,然后完全重启 openUBMC Studio 和 AI Agent。

打开一键日志

一键日志解析支持 Windows、Linux、WSL、SSH 远程工作区和容器工作区。

支持导入以下内容:

  • .tar.gz.tgz.tar.zip 格式的 BMC 一键日志压缩包。
  • 已解压且包含 AppDump 子目录的 dump 文件夹。

操作步骤如下:

  1. 单击活动栏中的“一键日志解析”图标。

  2. 根据日志形态,选择“打开 BMC 一键日志压缩包”或“打开 dump 目录”。

  3. 选择日志压缩包或 dump 根目录。选择目录时,应选中包含 AppDump 子目录的 dump 根目录。

  4. 等待解压和解析完成,确认日志页面已在编辑器区域打开。

也可以通过以下入口打开日志:

  • 在资源管理器中右键单击日志压缩包或 dump 文件夹,选择对应的一键日志解析命令。
  • 单击“最近打开”中的历史记录,重新打开对应日志。

“最近打开”最多保存 30 条记录。同一日志已经打开时,再次打开只会定位到原页面。删除一条最近记录时,对应的日志页面也会关闭。

查看日志包要求

日志包中必须存在名称完全匹配的 AppDump 目录,典型结构如下:

text
dump_info/
├── AppDump/
├── LogDump/
├── RTOSDump/
└── OSDump/

插件最多向下查找 6 层目录。AppDump 是导入日志时的必需目录;缺少 LogDumpRTOSDumpOSDump 时,日志包仍可能打开,但对应页面会显示无数据或目录缺失。

项目限制
单次选择1 个日志包,可以重复导入不同日志包
支持格式.tar.gz.tgz.tar.zip
tar 系列解压后总内容不超过 8GiB
tar 系列归档条目不超过 200000 项
ZIP 解压依赖系统中的 tarunzip,单次命令最长执行 300 秒
AppDump 查找深度最多递归 6 层

注意

插件不单独限制压缩文件本身的大小。处理大型日志包时,需要为远程暂存文件、中间 .tar 文件和解压目录预留足够空间,建议可用空间至少为解压后内容大小的两倍。

查看诊断信息

日志面板按照不同领域组织现场信息,常用视图包括:

  • 现场概览:查看机型、健康状态、FRU、板卡和软件版本。
  • 告警与传感器:查看告警记录、活动状态、传感器读值和门限信息。
  • 运行状态:查看性能、功率、进风温度、调速策略和 PID 配置。
  • 硬件关联:查看线缆检测、同步属性、CSR 和丝印信息。
  • 日志与诊断:查看操作日志、应用日志、框架日志、维护日志、驱动日志、串口日志、journalctl、一键日志原始文件和故障诊断文件。
  • 智能检测:使用 AI Agent 和 openUBMC RAG 进行日志体检。

不同页面按需解析日志文件,不会在导入时将所有文件一次性加载到内存。日志视图支持筛选、大小写匹配、全字匹配、正则表达式、匹配项跳转和保存搜索,具体可用项以当前视图为准。

使用 Agent 进行日志体检

日志体检会将本地日志证据与 openUBMC RAG 检索结果关联,并按照严重程度、紧急度和置信度排列问题。故障案例库是可信度最高的知识来源,但不是唯一可用来源。

说明

流程图中的问题数量和内容仅用于说明操作过程。实际问题数量、严重程度和诊断结论以导入日志中的证据及 RAG 检索结果为准。

复制分析 Prompt

  1. 打开日志页面顶部的“智能检测”。

  2. 单击“复制 Prompt 模板”。

  3. 将 Prompt 粘贴到能够访问 openUBMC Studio MCP 工具的 AI Agent 中。

  4. 发送 Prompt,等待 AI Agent 完成 RAG 状态检查并开始分析。

Prompt 已包含以下约束,无需手动填写日志路径:

  • 包含当前日志包的显示名称、分析任务标识和回调地址。
  • 只允许读取当前分析任务绑定的日志包。
  • 必须先检查 RAG 连接和社区登录状态。
  • 必须保留 RAG 引用的真实来源,其中故障案例库来源具有最高可信度。
  • 每个问题必须同时提供 RAG 匹配内容和本地日志证据。
  • 分析完成后,按照用户配置的 TopN 返回结果。

查看实时问题

AI Agent 分析期间,每个已确认的问题会实时显示在“Agent 日志问题”区域。问题卡片包含以下内容:

  • 严重程度:CRITICALHIGHMEDIUMLOW
  • 紧急度:综合故障影响、恶化可能、冗余能力和修复窗口计算的 0~100 分。
  • 置信度:本地多源证据与 RAG 知识的一致程度。
  • 可能原因和处理建议。
  • RAG 匹配内容、来源及可信度。
  • 日志片段、日志包内相对路径和定位信息。

说明

截图中的故障名称和日志内容仅用于演示界面结构,不代表产品预置的诊断结论。

同一根因产生的重复现象应合并为一个问题。分析完成后,插件会依次按照严重程度、紧急度和置信度排序,并展示最紧急的 TopN 问题。

配置 TopN

TopN 默认值为 10,可以设置为 1~50:

  1. 单击“一键日志解析”侧边栏标题栏中的齿轮图标。
  2. 在设置页面中修改 bmcstudio.logReviewer.analysisTopN
  3. 创建新的分析会话,使新设置生效。

TopN 只限制分析完成后页面和 PDF 报告中展示的问题数量。AI Agent 可以在分析过程中回写更多候选问题,插件会在完成时统一排序和截取。已经打开的分析会话继续使用创建会话时的 TopN 值;如需让同一日志使用新的 TopN,请先从“最近打开”中删除该日志,再重新导入并发起分析。

导出 PDF 报告

“导出为 PDF 报告”仅在分析状态变为“已完成”后可用:

  1. 确认页面显示“Agent 智能分析:已完成”。
  2. 单击“导出为 PDF 报告”。
  3. 选择保存路径和文件名。
  4. 使用 PDF 阅读器打开报告,核对摘要、问题排序、RAG 内容、日志证据和处理建议。

报告在当前 openUBMC Studio 扩展宿主运行期间可以持续导出。完全关闭或重启 openUBMC Studio 后,内存中的分析会话不会保留,需要重新发起分析。

处理会话异常

场景预期行为
分析期间关闭日志页面AI Agent 回调可以继续写入后台会话,重新打开同一日志后恢复状态
页面关闭较长时间后重新打开运行中的会话按照空闲策略管理,重新打开并操作后刷新活跃状态
从“最近打开”中删除日志对应页面关闭,关联分析会话被清理
清空“最近打开”所有日志页面关闭,关联分析会话被清理
RAG 不可用分析停止并显示登录、网络或配置建议,不生成主观问题
日志中没有诊断内容日志包格式有效时,分析完成并显示 0 个问题,PDF 报告可以导出
缺少 AppDump导入失败,并提示文件可能不是 openUBMC 一键日志包
缺少 AppDump/fault_diagnosis结构化诊断失败,AI Agent 将分析任务标记为失败

使用 AI Agent 定向诊断日志

在 AI Agent 对话中提供日志路径和分析目标,例如:

text
请打开并诊断 /path/to/bmc-log.tar.gz,先给出设备健康概览、关键异常和对应证据位置。

openUBMC Studio 会打开同一份日志的可视化面板,同时将机型、健康状态、硬件清单、告警、传感器、性能、调速、线缆和 CSR 等结构化数据提供给 AI Agent。后续可以继续要求 AI Agent 聚焦某个领域,例如:

text
继续分析当前日志中的散热异常,关联传感器、调速策略、功率和相关运行日志。

分析告警链条

分析单条告警时,建议提供以下任一组定位信息:

  • 事件码和发生时间。事件码格式为 0x 后接 8 位十六进制数字,时间格式为 YYYY-MM-DD HH:mm:ss
  • sel.txt 中的事件记录 ID。openUBMC Studio 可以据此解析事件码和发生时间。
  • 需要区分多个告警实例时,再补充组件或实例名称。

示例:

text
基于当前打开的一键日志,分析事件码 0x12345678、时间 2026-08-28 14:23:16 的完整告警触发链。
请说明当前告警状态、已观察到和缺失的阶段、恢复与复发情况,并在每个节点标注证据文件及行号或数据库记录位置。

AI Agent 会根据日志中的实际证据按需给出以下内容:

  • 唯一告警锚点及其匹配方式,避免混淆相同事件码的不同告警实例。
  • 告警当前状态,包括 activeinactiveconflictedunknown,并分别列出状态依据。
  • 已观察到的触发流程,例如采样、数值转换、门限或事件规则求值、事件存储和北向上报;未采集到的阶段会标记为缺失。
  • 运行期事件与 dump 内 .sr 文件中 CSR Event/PowerEvent 定义、属性和直接引用关系的关联结果。
  • Assert/Deassert 恢复配对、复发次数下界、历史覆盖范围和可能的时钟跳变。
  • 每个关键事实对应的 dump 相对路径、行号、列号、JSON Pointer 或数据库定位信息。

注意

告警链条分析仅关联 dump 中可观察到的事实,不会自动将时间相邻的事件视为因果,也不会使用静态 CSR 定义证明规则在告警时刻一定执行。日志缺失或状态冲突时,结论会保留为“证据不足”或“存在冲突”,需要结合现场信息和业务知识继续判断。

了解数据范围和安全边界

  • AI Agent 日志工具只能访问分析任务绑定的日志包,不会自动选择其他历史日志。
  • 日志证据使用日志包内相对路径,不会向页面回写宿主绝对路径。
  • 日志体检唯一允许访问的外部知识是 openUBMC RAG 状态和知识检索结果。
  • tar 系列导入会拒绝路径逃逸、绝对路径和解压炸弹,并忽略符号链接、硬链接及设备文件。
  • PDF 报告只包含当前分析会话中的摘要、TopN 问题、RAG 依据和日志证据。

八、BMC 环境管理

本章介绍 openUBMC Studio 的 BMC环境管理 插件(扩展 ID:openubmc.bmcstudio-bmc-remote)的功能与使用方法。该插件用于在 IDE 内集中管理多台 BMC 环境、批量下发命令、上传文件、一键升级固件、实时监控日志、自动调试组件以及远程 GDB 调试。

BMC环境管理插件在活动栏注册一个「BMC环境管理」容器,下设两个视图:

  • BMC Environments:BMC 环境连接树,按分组组织,管理连接的元数据与凭据。
  • Command Macros:命令宏树,维护可批量下发的命令序列。

插件的核心能力包括:

  • 连接管理:以分组方式管理多台 BMC,单条连接可任选 SSH、Telnet 或 WebView 方式接入。
  • 连通性管理:手动或周期性探测 BMC 可达性,并在状态变化时播报。
  • 命令宏:预定义命令序列与变量,按「全部可达 / 分组 / 手动多选」批量下发,回收结构化结果。
  • SFTP 上传:从资源管理器右键将本地文件或目录上传到 BMC。
  • HPM 一键升级:右键 .hpm 固件包,并发升级多台 BMC,全程进度可视。
  • 实时日志监控:实时 tail 远端 /var/log 日志,支持日志轮转衔接、时间回绕校准与原始文件下载。
  • 组件自动调试:根据 Git 变更自动部署 Lua、C/C++ 和北向接口调试内容,详见 C/C++、Lua 与北向接口快速调试
  • 远程 GDB 调试:附加板端服务或部署独立程序进行源码级调试,详见 BMC 远程 GDB 调试
  • MCP 工具:对外暴露 27 个 MCP 工具,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。

使用前准备

环境要求

  • 运行平台:推荐 Linux(Ubuntu)。连接管理以 Linux 为目标平台;HPM 升级与日志监控仅依赖 Node 内置模块,三平台行为一致。
  • 系统依赖:建议预装以下工具:
    • openssh-client:SSH 接入与 SFTP 上传。
    • telnet:Telnet 接入与实时日志监控。
    • tar(支持 -z):目录上传与日志下载解压。
    • libsecret-1-0 / gnome-keyring:Linux 下用于安全存储密码。

安装插件

  1. 在 openUBMC Studio 中打开插件市场(活动栏的「扩展」图标,或按 Ctrl+Shift+X),搜索「BMC环境管理」,点击「安装」。
  2. 安装完成后重启 IDE 生效。活动栏出现「BMC环境管理」图标即表示安装成功。

说明:

若已安装 openUBMC Studio 主插件,BMC环境管理作为配套扩展随其一同提供,具体获取方式请参考 openUBMC Studio 安装指南

BMC 环境管理

新增分组

连接以「分组」为单位组织,系统默认创建一个分组。

  1. BMC Environments 视图标题栏单击「Add Group」按钮。
  2. 输入分组名称并确认。

分组的右键菜单支持「Add」「Rename Group」「Delete Group」。分组非空时拒绝删除(保护数据),需先清空或迁移其下连接。

新增连接

  1. 单击 BMC Environments 视图标题栏「Add BMC Environment」按钮,或在某个分组上右键选择「Add」。
  2. 在弹出的表单中填写连接信息并保存。

连接字段说明:

字段说明备注
名称 name连接显示名称必填
IP 地址 hostBMC 的 IPv4 地址必填,仅接受 IPv4,非法地址会被拒绝
用户名 username登录用户名必填
密码 password登录密码必填(新增时);密码存于操作系统级安全存储,不落配置文件、不进日志
分组 group所属分组不选则落入首个分组
标签 tags标签数组可选,用于归类
描述 description连接描述可选

接入 BMC

在连接上右键,选择接入方式:

  • Connect via SSH:使用进程内 SSH 客户端登录(兼容老款 BMC 的弱算法与 keyboard-interactive 交互),以伪终端呈现。默认在编辑器区(接近全屏)打开,由配置项 bmc.autoMaximizeTerminal 控制,关闭后回到底部面板。
  • Connect via Telnet:调用系统 telnet 命令接入,需本机已安装 telnet。Telnet 不会自动发送密码,需手动输入。
  • Open in WebView:使用系统浏览器打开 BMC Web UI(https://{host})。

SSH 握手超时由 bmc.connectionTimeout(默认 30 秒)控制。

编辑与删除

  • Edit Configuration / Change Password:修改连接信息。编辑密码时留空表示保留原密码。
  • Disconnect:发送 exit、关闭终端并注销会话。
  • Delete:删除前会弹出模态确认;删除会先关闭相关终端并清理该连接的凭据。

说明:

删除连接会连带删除其凭据;删除分组前需先清空连接或迁移。

连通性管理

插件通过 TCP 探测 SSH 22 端口判断 BMC 可达性,连接树图标实时反映状态(不可达时变红),分组徽章显示「X/Y 可达」。

  • 手动探测单个:右键连接 → 「Check Connection Health」,提示可达 / 不可达。
  • 全量刷新:单击视图标题栏「Refresh」,先把全部连接置为检测中再统一探测。
  • 周期检测:右键连接 → 「开启自动检测连通状态」/「关闭自动检测连通状态」。开启后每 10 秒 探测一轮,仅对开启该项的连接生效。
  • 状态播报:右键连接 → 「开启连通性变更播报」/「关闭连通性变更播报」。上线提示「{分组}/{名称} 已上电」,掉线提示「{名称} 已下电」。

探测超时由 bmc.pingTimeout(默认 3000 毫秒)控制。可达性 = 「TCP 22 端口通 + 已配置凭据」;运行宏、上传、升级前均以此作为就绪判据。

命令宏

命令宏用于预定义「一组有序 shell 命令 + 变量 + 失败策略」,运行时按目标范围批量下发到 BMC,每台环境复用一条 SSH 连接执行完整命令集,并回收结构化的「环境 × 命令」结果矩阵。

新建宏

  1. 单击 Command Macros 视图标题栏「Add Command Macro」按钮。
  2. 在表单中填写宏内容并保存。

宏字段说明:

字段说明默认值 / 范围
名称 name宏名称必填
描述 description宏描述可选
命令 commands有序命令列表至少 1 条;每条可单独设置 descriptiontimeoutMsabortOnFailure(遇错:默认 / 中断 / 继续)
变量 variables自定义变量(键名不含 )与内置变量合并;同名时内置优先
失败策略 onError宏级策略continue(继续)/ abort(中断该环境后续命令);默认 continue
命令超时 timeoutMs单条命令超时(毫秒)默认 30000;单条命令可覆盖
并发度 concurrency环境间并发度1–8,默认 1
标签 tags标签(表单中逗号分隔)可选

变量替换

命令模板支持变量占位:

  • 语法:$VAR${VAR}$ 转义为字面 。

  • 内置变量(按每台环境各自替换,优先级高于自定义):

    变量含义
    $HOSTBMC IP 地址
    $USER登录用户名
    $NAME连接名称
    $CONN_ID连接 ID
    $GROUP分组名称

说明:

未定义的变量保留原样(不会被置空),以避免因拼写错误导致类似 rm -rf /tmp/$UNDEF/* 的危险展开。

运行宏

  • Run Macro...:右键宏 → 选择目标范围(「所有可达且有凭据的环境」/「按分组」/「手动多选」)→ 模态确认后执行。
  • Run on Group... / Run on All Reachable:右键宏快速按分组或全部可达执行;后者也可用视图标题栏的火箭图标。

运行前会弹出确认:「命令可能对 BMC 造成不可逆影响,是否继续?」。

每台环境内的命令严格串行(后一条常依赖前一条结果);环境间并发受 concurrency 限制(上限 8)。不可达或无凭据的环境自动跳过并标注,不阻断其他环境。每台环境的结果状态包括:

状态含义
ok全部命令成功
partial部分命令失败
aborted该环境被中断(如命令超时)
unreachable不可达
error无凭据或连接失败

注入终端

除批量执行外,宏还支持把命令注入到已打开的终端:

  • Run Macro in Terminal...:右键某连接 → 选择宏 → 命令注入该连接已打开的 SSH/Telnet 终端,复用连接与终端上下文,输出保留在终端中。
  • 双击宏:注入当前活动终端(任意终端;若该终端属于某 BMC 连接,则解析其内置变量)。

注入模式无法读回退出码,因此失败判断交由远端 shell:全部「继续」时按换行拼接逐条执行;存在「中断」时用 && 串联,并把「继续」型命令包成不阻断链路的形式。

筛选与结果

  • Filter by Tag:视图标题栏按标签筛选宏(含「无 tag」选项)。
  • 结果写入 BMC Remote 输出通道(OutputChannel),包含每条命令的退出码、stdout、stderr 与汇总。

SFTP 上传

  1. 在资源管理器中右键本地文件或目录 → 「上传到 BMC 环境」。
  2. QuickPick 列出全部连接并实时探测连通性,仅可达环境可选
  3. 选择目标 BMC 后,进度通知显示上传过程,完成后默认上传到远端 /tmp

单文件使用 SFTP 直传;目录上传采用「本地 tar.gz 打包 → 传输 → 远端 tar -xzf 解压」流程。

说明:

目录上传需本机与远端均安装 tar(支持 -z),缺失会提示安装方式。无凭据或不可达的环境不可选。

HPM 一键升级

  1. 在资源管理器中右键 .hpm 固件包 → 「一键升级到 BMC 环境」(仅 .hpm 文件出现该菜单项)。
  2. 多选目标 BMC(实时探测连通性,不可达项自动忽略),仅保留可达且有凭据的环境。
  3. 模态危险确认:「将对 N 个环境升级固件 xxx.hpm,升级期间 BMC 可能重启且不可中断,是否继续?」。
  4. 进度通知显示整体进度,完成后给出成功 / 失败汇总;失败环境的右下角通知可一键打开输出查看原因。

升级按 BMC HTTPS REST 协议执行「登录 → 上传 → 触发 → 轮询 → 登出」,使用 443 端口,自签名证书自动放行。

相关配置项:

配置项默认值说明
bmc.upgradeConcurrency3(1–8)多 BMC 并发度,重操作建议保守
bmc.upgradePollDeadlineMs600000单台轮询整体硬超时(默认 10 分钟)
bmc.upgradePollErrorTolerance5轮询连续失败容错次数,兼容升级中途 BMC 重启
bmc.upgradeUploadTimeoutMs300000REST 上传 HTTP 超时(超时自动转 SFTP 兜底)

BMC 重启期间,进度条数值暂停在最后已知值,提示信息切换为「设备异常不通,正在尝试重新查询升级状态」,避免被误判为卡死或误报成功。常见失败原因:登录失败(检查账号密码与 443 端口)、触发失败、状态异常、轮询连续失败、上传失败、网络错误。

注意:

升级为破坏性、不可逆操作,一旦开始不可取消。请确认固件版本与目标环境正确后再执行。

实时日志监控

  1. 在连接树右键某连接 → 「实时日志监控」。
  2. 插件通过 Telnet 列出 /var/log,归并出日志基名,QuickPick 选择目标日志。
  3. 打开日志监控 Webview(标题「{连接名} 日志监控」),实时追加日志。
  4. 顶部按钮:「日志信息下载」(可选「下载当前窗口内容」/「下载远程原始文件」)、「清空」、「停止」;滚动离开底部时出现「回到底部」。

核心能力:

  • 日志轮转无缝衔接:跟随文件名 tail,在日志压缩切换瞬间自动重开新文件,流不中断。
  • 时间回绕校准:当系统时间回绕(年份小于 rewindMinYear,典型如 1970)时,自动估算并标注 [估算],时间恢复后线性插值回填 [校准]
  • 断线自动重连:默认开启,退避重连且不重置状态机。
  • 下载双通道:优先 SFTP 取回原始文件(含 .gz);SSH/SFTP 不可用时自动回退 Telnet 八进制传输。
  • 下载后自动拼接:解压所有 .gz 并按时间顺序拼接为完整日志。

相关配置项:

配置项默认值说明
bmc.logMonitor.maxBufferedLines5000后端缓冲日志行数上限(超出丢最旧)
bmc.logMonitor.tailInitialLines200启动时初始输出行数
bmc.logMonitor.rewindMinYear2000年份小于该值视为回绕
bmc.logMonitor.autoReconnecttrue断线是否自动重连
bmc.logMonitor.reconnectAttempts3自动重连尝试次数
bmc.logMonitor.downloadGziptrue下载原始文件是否包含 .gz

说明:

仅开放 SSH(23 端口不通)的 BMC 无法使用日志监控。下载原始文件时密码可选(仅 SFTP 下载需要,缺失时自动回退 Telnet 传输)。

配置项总览

除上述章节提到的配置外,所有配置集中在 bmc.* 命名空间。可通过侧栏视图标题栏的齿轮按钮(「Open Settings」)直接打开本扩展配置页。

配置项类型默认值用途
bmc.connectionTimeoutnumber30000SSH 连接超时(毫秒)
bmc.pingTimeoutnumber3000可达性 TCP 探测超时(毫秒)
bmc.autoMaximizeTerminalbooleantrueBMC 终端在编辑器区(而非底部面板)打开
bmc.upgradeConcurrencynumber3HPM 升级并发度(1–8)
bmc.upgradePollDeadlineMsnumber600000单台升级轮询整体硬超时
bmc.upgradePollErrorTolerancenumber5轮询连续失败容错次数
bmc.upgradeUploadTimeoutMsnumber300000HPM 上传 HTTP 超时
bmc.logMonitor.*日志监控相关参数,见「实时日志监控」章节

与 AI 协作:MCP 工具

插件对外暴露 27 个 MCP 工具,可由 openUBMC Studio 的 MCP 宿主以鸭子类型发现,供 AI Agent 调用,实现自然语言驱动的批量运维与告警证据分析。凭据由安全存储服务端读取,绝不进入工具的输入参数或返回结果;连接、分组、宏均可用 ID 或名称(大小写不敏感)引用。

主要工具分类:

  • 查询与探测:列出连接 / 分组、健康探测。
  • SSH 执行 / SFTP 上传:单命令执行、单文件 / 目录上传。
  • 连接与分组管理:增删改、自动检测与播报开关。
  • 命令宏:列出(可按标签过滤)、运行、新增、删除。
  • HPM 升级:指定固件与目标范围,返回逐环境结果与汇总。
  • 告警证据分析:按事件码/时间或记录 ID 编译告警证据、定点读取报告,并生成有界的告警链条分析流程。

连接、宏、上传和升级等运维类 UI 命令与对应 MCP 工具共用同一套执行核心;告警证据分析只读 dump,不会修改日志或目标 BMC。

常见问题与注意事项

  • 密码安全:所有密码存于操作系统级安全存储,不落配置文件、不进日志、不在 MCP 输入输出中回显。
  • 平台支持:连接管理以 Linux 为目标平台;Windows / macOS 未纳入连接管理的测试范围。
  • 可达性判据:宏、上传、升级在执行前均以「TCP 22 通 + 有凭据」作为就绪判据,不可达环境自动跳过。
  • HPM 升级不可逆:一旦开始不可取消,BMC 可能中途重启,请确认无误后再执行。
  • Telnet 依赖:Telnet 接入与日志监控依赖系统 telnet 命令;目录上传与日志下载依赖 tar

九、快速调试 C/C++、Lua 与北向接口

快速调试功能由“BMC 环境管理”插件提供。它根据组件中已保存到磁盘的 Git 变更自动生成调试计划,将必要文件部署到目标 BMC,重启受影响的服务并验证是否生效,适用于开发和自测阶段的快速迭代。

说明

界面中的功能名称为“自动调试当前组件”。该功能用于快速部署和运行验证,不启动 GDB。如需使用断点、单步和变量查看,请执行“GDB 调试: 选择 BMC 连接并启动”,并参考使用 openUBMC Studio 远程调试 BMC

支持的变更类型

变更类型处理方式是否构建
普通组件或北向接口中的运行时 Lua使用已保存源码直接部署到运行时目标
可证明为直接运行时文件的 JSON完成 JSON 语法和目标映射检查后直接部署
北向接口映射 JSON 等生成型输入隔离构建当前组件,仅部署该输入影响的运行时生成结果是,一轮最多一次
C/C++ 源文件、头文件和 DMC 等编译型输入隔离构建当前组件,部署本次构建产生的 ELF 或 Lua C 模块是,一轮最多一次
Lua、北向配置和 C/C++ 混合变更合并为同一调试计划,直接部署项与构建产物一并生效按需构建一次

README、设计文档和测试文件等无运行时影响的变更会被忽略;文件新增、删除、重命名、冲突或无法可靠映射的变更会被阻断,并在连接 BMC 前给出原因。

使用前准备

  1. 使用 openUBMC Studio 打开组件仓或 rackmount 仓。仓库中应包含 mds/service.json

  2. 将工作区标记为受信任,并确保组件代码由 Git 管理。自动调试可以采集已暂存、未暂存和未跟踪的修改。

  3. 单击活动栏中的“BMC 环境管理”图标。

  4. 在“BMC 环境管理”中添加目标 BMC,并确认连接地址和凭据可用。

  5. 仅包含可直接部署的 Lua/JSON 修改时,不依赖本地构建环境;C/C++ 和生成型北向配置的修改需要在支持 Bingo/Conan 的构建环境中调试。

  6. 仅在已授权、可通过 Telnet 连接到具有 root 权限的 Shell 环境的开发板或调试环境中使用此功能。自动调试会临时替换运行时文件并重启受影响的 systemd 服务,不应直接用于生产设备。

执行自动调试

  1. 保存本次需要验证的修改。若组件内仍有未保存文件,openUBMC Studio 会要求保存后再继续。

  2. 通过以下任一入口执行“自动调试当前组件”:

    • 在业务仓列表中选择组件仓的快捷操作“自动调试当前组件”或“按 Git 提交基线自动调试”。

    • 在“BMC 环境管理”的连接上右键单击,选择“自动调试当前组件”。

    • Ctrl + Shift + P 打开命令面板,执行“BMC 调试: 自动调试当前组件”。

  3. 根据入口选择或确认目标 BMC。openUBMC Studio 会采集当前组件的 Git 变更并生成初步计划。

  4. 检查修改文件数、处理策略、预估替换文件数和是否需要构建。若需要构建,单击“开始构建”;直接部署场景单击“继续”。

  5. 构建和最终映射完成后,再次检查替换文件数及影响的逻辑应用,单击“确认自动调试”。

  6. 等待 openUBMC Studio 完成文件上传、完整性校验、服务归并、运行时激活、服务重启和结果验证。

说明

需要验证一段连续提交中的最终差异时,可以使用“按 Git 提交基线自动调试”,选择一个提交、标签或分支作为基线。普通“自动调试当前组件”只处理当前 Git 工作树修改。

验证调试结果

自动调试完成后,按以下步骤验证结果:

  1. 确认 openUBMC Studio 显示调试成功,并核对替换文件数和受影响服务数。
  2. 打开“BMC GDB”输出通道,检查详细计划、构建输出、运行时目标、服务名称和校验结果。
  3. 执行本次修改对应的业务操作,确认功能行为符合预期。

切换默认调试目标

如需切换默认调试目标,执行以下操作:

  1. 单击状态栏中的“BMC:当前环境名称”。
  2. 在环境列表中选择目标 BMC。

状态栏显示所选环境名称时,表示默认调试目标已切换。

调试生效与连续迭代

自动调试不会覆盖 BMC 的只读系统分区,而是在 /data/bmc-debug 下准备会话私有的最小替换集,通过临时挂载或服务配置让目标进程使用调试版本。openUBMC Studio 会进行以下校验:

  • Lua、JSON 和可执行文件的运行时目标必须来自本轮调试目录,且内容摘要一致。
  • 共享库必须在服务重启后由目标进程从本轮调试目录加载。
  • 多个逻辑应用属于同一个 systemd 服务时,会合并替换内容,该服务只重启和验证一次。
  • 任一服务组激活失败时,后续服务停止执行,已经生效的服务组按逆序恢复。

修改代码并再次执行自动调试时,新版本会直接接管同一服务的上一轮 openUBMC Studio 调试会话,不需要每轮都先恢复环境,也不会叠加多层调试挂载。

说明

自动调试仅支持替换目标环境中已存在的组件和文件。涉及文件新增或删除时,请构建并升级固件包进行验证。

恢复调试环境

完成验证后,通过以下任一入口恢复目标 BMC:

  • 在“BMC 环境管理”的目标连接上右键单击,选择“恢复调试环境”。
  • 在业务仓快捷操作中选择“恢复调试环境”。
  • 打开命令面板,执行“BMC 调试: 恢复调试环境”。

openUBMC Studio 会根据板侧会话清单和实际挂载、临时服务配置及进程状态,仅清理能够证明属于 openUBMC Studio 的调试资源,并将服务恢复到首轮调试前的状态。若提示恢复不完整,请保留“BMC GDB”输出中的会话和路径信息,修复连接后再次执行恢复,不要直接批量删除 /data/bmc-debug

配置项

配置项默认值说明
bmc.quickRestart.enabledtrue是否在组件工作区启用自动调试
bmc.quickRestart.buildToolPathbingo构建型修改使用的构建工具
bmc.quickRestart.buildArgs["build", "-bt", "debug"]隔离构建参数
bmc.quickRestart.buildTimeoutMs1800000单次构建超时,默认 30 分钟
bmc.quickRestart.maxChangedFiles2000单次自动调试允许采集的最大修改文件数

注意

自动调试用于临时验证,不能替代正式组件包、固件构建和升级流程。最终交付前仍需执行项目规定的构建、测试和发布检查。

十、远程调试 BMC

openUBMC Studio 通过 BMC 环境管理扩展(openubmc.bmcstudio-bmc-remote)提供远程 GDB 调试能力,用于对板端 C/C++ 组件进行源码级调试。扩展可以完成板端部署、gdbserver 启动、符号与源码路径解析和会话清理。

注意

仅在已授权的隔离调试板上使用远程调试,不要对生产环境中的 BMC 执行调试操作。

选择调试方式

场景调试方式是否进入 GDB
调试板上正在运行的 systemd 业务服务Attach(附加)调试
调试独立测试程序、工具或 carrierStandalone(独立程序)调试
仅验证新产物能否运行或查看日志Deploy & Restart(快速部署并重启)
组件仅输出 .so编写 carrier 后使用 Standalone 调试

在“运行和调试(Run and Debug)”下拉列表中选择 launch.json 配置。requestattach 的配置使用 Attach 调试,requestlaunch 的配置使用 Standalone 调试。

使用前准备

  • 调试版产物:执行 bingo build -bt debug,构建包含 DWARF 调试信息的产物。推荐使用 -g -O0 编译选项。
  • 本机交叉 GDB:安装 gdb-multiarchaarch64-linux-gnu-gdb
  • BMC 连接:在“BMC 环境管理”中配置管理 IP 地址、SSH 端口和 Administrator 账号凭据。
  • 板端 gdbserver:通常无需手动安装,扩展会探测板端 gdbserver 或使用内置版本。

说明

首次调试时,openUBMC Studio 会自动安装 Eclipse CDT GDB Adapter 扩展。离线环境需要提前安装该扩展。生产网络或非隔离网络建议将 bmc.gdb.rspTransport 设置为 tunnel,使 RSP 流量通过 SSH 隧道传输。

使用 Attach 调试板上服务

Attach 调试会根据构建产物的二进制名称发现板端服务。以下 launch.json 配置将 artifact 指向构建产物目录或 ELF 文件:

jsonc
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "bmc-gdb",
      "request": "attach",
      "name": "BMC 调试:附加板上服务",
      "bmcConnection": "lab-bmc-03",
      "artifact": "/home/dev/.conan2/p/b/xxxx/p", // 构建产物目录或 ELF 文件
      "stopAtEntry": true,
      "buildIdCheck": "warn"
    }
  ]
}

操作步骤如下:

  1. 执行 bingo build -bt debug,确认构建产物包含调试信息。
  2. 确认板端目标服务处于 active 状态。
  3. 在“运行和调试”下拉列表中选择 Attach 配置。
  4. F5 启动调试。
  5. 在“BMC 调试会话”视图中确认各准备阶段均已通过。

扩展会根据 Build ID 比对结果选择执行策略:

  • Build ID 匹配:不部署、不替换且不重启服务,仅使用 gdbserver --attach 附加到当前进程。
  • Build ID 不匹配:选择“准备调试版本并附加”可以部署调试产物、临时替换并重启服务,会话结束后自动恢复;也可以选择“继续仅汇编调试”或“选择其他 Artifact”。替换和重启前,openUBMC Studio 会显示影响确认窗口。

使用 Standalone 调试独立程序

Standalone 调试适用于独立工具、测试程序、尚未安装的新服务,以及为纯库组件编写的 carrier。以下配置将 artifact 指向构建输出目录:

jsonc
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "bmc-gdb",
      "request": "launch",
      "name": "BMC 调试:部署并启动程序",
      "bmcConnection": "lab-bmc-03",
      "artifact": "/home/dev/build/output", // 推荐使用目录,也可以直接指定 ELF 文件
      "stopAtEntry": true,
      "buildIdCheck": "warn"
    }
  ]
}

使用 Standalone 调试时,请注意以下事项:

  • artifact 指向目录时,扩展会扫描其中的 AArch64 可执行 ELF。只有一个候选文件时自动选用,存在多个候选文件时需要手动选择。
  • 产物包含共享库时,通过 artifactRoots 指定本次构建对应的 Conan package 目录,避免混用不同版本的同名库。
  • 启动程序前,扩展会执行 ABI 预检,并报告缺少共享库或符号未定义等问题。
  • 调试纯 .so 库时,需要编写调用目标库函数的最小 carrier,并在库函数中设置断点。

配置完成后,在“运行和调试”下拉列表中选择 Standalone 配置,按 F5 启动调试,并在“BMC 调试会话”视图中确认部署和启动阶段均已通过。

快速部署并重启组件

Deploy & Restart 不进入 GDB。该功能会将产物部署到板端影子目录、重启服务,并通过 /proc/<pid>/maps 验证目标进程是否加载新产物,适用于修改静态库后快速确认服务能否启动。

  1. Ctrl + Shift + P 打开命令面板。
  2. 执行“BMC调试: 快速重拉组件(部署+重启,不调试)”。
  3. 在“BMC GDB”输出通道中确认部署、服务重启和加载路径校验均已完成。

执行日常调试操作

断点、条件断点、日志断点、单步、变量监视和调用栈等操作均使用 openUBMC Studio 原生调试界面。常用 GDB 控制台命令如下:

命令作用
btbt full查看当前线程的调用栈,或包含局部变量的调用栈
thread apply all bt查看所有线程的调用栈,用于排查卡死或死锁
info sharedlibrary查看共享库加载和符号读取情况
print <变量>ptype <类型>打印变量或查看类型定义
info breakpoints查看断点是否已验证或处于 pending 状态

注意

Attach 会话中的进程由 systemd 和扩展管理,不要在 GDB 控制台中执行 run,请使用 continuenextstep。服务在断点处暂停过久可能触发上游超时或 watchdog,请控制暂停时间。

排查常见问题

现象原因与处理方法
提示“无 DWARF 调试信息”当前文件可能是 strip 后的 package 文件;使用 bingo build -bt debug 重新构建,并选择 build 目录中未 strip 的副本
断点显示为灰色或未命中检查源码映射和 Build ID,并使用 info sharedlibrary 确认目标库已加载
GDB 连接立即断开检查“BMC GDB”输出中最早出现的错误,确认 gdbserver 能够启动且运行依赖完整
libX.so => not found将本次构建对应的精确 package 目录加入 artifactRoots
变量显示 <optimized out>使用 -O0 -g 重新构建调试产物
服务重启后立即退出查看 ABI 预检报告和 journalctl -u <unit>,排查缺少共享库或 ABI 不兼容问题
调试结束后服务仍使用调试版本执行“GDB调试: 清理板侧调试残留”

结束调试并清理环境

  • 正常结束:单击调试工具栏中的“停止”。扩展会停止 gdbserver、撤销板端替换、恢复服务并删除调试产物。
  • 异常退出后恢复:重新启动扩展,等待扩展自动对账和恢复。如果仍有残留,在命令面板中执行“GDB调试: 清理板侧调试残留(崩溃会话对账)”。

完成远程调试时,请遵循以下原则:

  1. 符号文件、运行文件和依赖库应来自同一次构建。
  2. 排查故障时,优先查看“BMC 调试会话”视图中最早失败的阶段。
  3. 使用 openUBMC Studio 的停止按钮或清理命令结束会话,确保扩展能够执行恢复流程。

十一、白牌包定制

本章介绍 openUBMC Studio 的 白牌包定制 能力:在 IDE 内通过可视化编辑器定制 BMC 白牌包的 Web 界面风格、Logo/图片、产品信息等,并一键调用 bingo wbd_build 构建出白牌固件包。

说明:

本能力由 openUBMC Studio CSR 拓扑插件(bmcstudio_csr_topolopy)提供。关于白牌包定制的官方概念与字段含义,另见 白牌包定制官方指南

白牌包定制用于把 BMC 从默认外观/信息改造为某品牌或客户专属形态,涵盖三类定制:

  • 配置定制:产品联系信息、SSL 证书字段、软件名称、主机名、客户名等,写入 web_custom.xml
  • 风格定制:Web 主界面风格(精美/简约/标准),写入 style_config.json
  • 图片定制:浏览器图标、登录页 Logo、技术支持二维码、Web 界面图片等,写入 filelist.conf 声明并随包发布。

白牌包定制分两种模式:

模式作用
白牌包(普通)把 BMC 定制为目标品牌/客户形态
清白牌包一种特殊白牌包,把已定制的 BMC 恢复为默认配置

两类模式共用同一套可视化编辑器与构建流程。

使用前准备

  • 构建工具:需安装 bmcgobingo,且支持 wbd_build 子命令。插件会优先尝试 bmcgo,不可用时回退 bingo
  • 工作目录:准备一个用作白牌目录的文件夹(可为空)。白牌定制涉及的核心文件会生成在该目录下,构建产物 wbd-crypt-image-signed.hpm 也会落回该目录。

打开白牌定制编辑器

在资源管理器中右键单击任意文件夹,选择 「定制白牌文件」 即可打开白牌定制编辑器(webview)。

打开时的行为遵循「缺哪个补哪个」:

  • 若目录下尚无白牌文件,会自动创建默认的 filelist.confweb_custom.xmlstyle_config.json(默认风格 beautiful、版本 2.00);同时扫描目录里已存在的图片自动加入 filelist.conf 声明,避免「图片在但 filelist 没声明」的不一致。
  • 若目录下已有白牌文件,则按现有配置加载到编辑器中。

编辑器为单例面板:同一文件夹重复右键打开会回到已打开的面板;不同文件夹各自打开独立面板,互不干扰。

编辑器界面

编辑器顶部为模式切换与版本号,下方分为「配置定制」「风格定制」「图片定制」三个区域,底部为「保存」「构建」按钮。

模式与版本号

  • 模式白牌包 / 清白牌包 单选。切换到清白牌模式时,会隐藏「风格定制」段、图片按 BMC 路径分组展示、构建按钮文案变为「清白牌包构建」。图片在两种模式间共享,切换不重置。
  • 版本号:格式 x.yy 最多两位,如 1.02.01.10),保存后写入 web_custom.xml<?xml version="..."?> 头部。加载时从 XML 头部解析回填。必填且需通过正则校验,否则保存/构建按钮禁用。

配置定制(web_custom.xml)

可视化表单对应 web_custom.xml 的 17 个属性,每项带 tooltip 说明,只需填写需要的项:

字段说明
sysContact维护联系人
dBannerContent默认横幅内容
PreSSLSeverCommonName / PreSSLSeverOrgName / PreSSLSeverCountry预置 SSL 证书通用名/组织/国家
OfficalWeb / SupportWeb官网 / 技术支持网址
Copyright版权信息
Email / Phone邮箱 / 电话
DownloadKVMLinkKVM 下载链接
DocSupportFlag文档支持标记(取值 0/1
SoftwareName软件名称
CustomAlarmName自定义告警名称
CustomManufacturer自定义厂商
HostName主机名
Customer客户名

保存时只输出非空字段;DocSupportFlag 取值必须为 01

风格定制(style_config.json)

选择 Web 主界面风格 pageStyle

  • beautiful(精美,默认)
  • simple(简约)
  • standard(标准)

pageStyle 在白牌模式下必填(不选会校验失败,保存/构建禁用);清白牌模式下该段隐藏,style_config.json 强制写空对象 {}

图片定制(filelist.conf)

可定制 8 张图片,每张对应固定的 BMC 路径与文件名,已按类型限制只能选择对应类型图片:

分组文件名BMC 路径
浏览器图标favicon.ico/data/opt/pme/web/htdocs
技术支持二维码code1.png/data/opt/pme/web/htdocs/theme/custom/img
Web 界面图片login.pnglogin_logo.pngimg_01.pngimg_02.pngimg_03.pngheader_logo.png/data/opt/pme/web/custom

每张图卡片支持「选择图片 / 更换 / 删除」;保存时所选图片会被复制到白牌目录(文件名与 filelist.conf 的声明一致)。

保存

点击「保存」执行两步:

  1. 同步图片:把所选图片复制到白牌目录,文件名改为与 filelist.conf 声明一致;
  2. 生成文件:按当前配置写出 filelist.confweb_custom.xmlstyle_config.json

保存成功后右下角提示「白牌配置已保存」。

构建白牌包

点击「白牌包构建」(清白牌模式为「清白牌包构建」),流程如下:

  1. 校验pageStyle 必填、DocSupportFlag 合法、版本号格式正确(实时校验,通过后才允许构建);
  2. 自动保存:有未保存改动时先自动保存,保存成功后再构建;
  3. 前置文件检查:核对 filelist.conf 声明的文件是否都实际存在;
    • 仅图片缺失 → 自动清理 filelist 中缺失声明并提示重新构建;
    • 核心文件(web_custom.xml/style_config.json)缺失 → 报错,需手动处理;
  4. 临时目录构建:把白名单文件(filelist.conf、其声明的文件、可选 beforeaction.sh/afteraction.sh)复制到临时目录,在其中执行 bingo wbd_build,终端面板实时输出进度(可手动终止);
  5. 产物落回:构建成功后产物 wbd-crypt-image-signed.hpm 自动复制回原白牌目录(同名覆盖),右下角提示带完整路径;
  6. 按钮状态:构建期间按钮变为「构建中...」并禁用,结束后无论成功/失败/终止都恢复。

说明:

为什么要切到临时目录:bingo 命令清单对当前工作目录敏感,在 manifest 项目根或组件目录下会过滤掉 wbd_build。因此构建一律先切到脱离任何 manifest 树的临时目录执行,跑完再把产物复制回来。

工具回退:优先 bmcgo,不可用回退 bingo;执行中若返回退出码 127(命令不存在)会自动换另一个工具重试一次,其他业务错误不重试。

常见失败提示

场景提示
缺图片(可自动清理)已自动清理 filelist 中缺失的图片声明:xxx,请重新构建
缺核心文件白牌目录缺少必要文件:xxx,请重新保存完整配置
bingo 退出码非 0白牌包构建失败(退出码 N),请查看终端输出
用户 Ctrl+C白牌包构建已终止
工具未找到未找到打包工具,请先安装

清白牌包定制(恢复默认)

清白牌包用于把 BMC 从已定制状态恢复为默认配置,三类恢复默认规则:

  • 配置定制web_custom.xml 写默认值;
  • 风格定制style_config.json 写空对象 {}
  • 图片定制:要恢复默认的图片在 filelist.conf 中将 Name= 改为 CLEAR_ALL(BMC 路径不变),并在白牌目录创建一个空 CLEAR_ALL 文件。

切到清白牌模式后,8 张图按 BMC 路径分 3 组展示(浏览器图标 / 技术支持二维码 / Web 界面图片),每组有组级复选框可整组恢复默认。

说明:

CLEAR_ALL 按路径去重:BMC 检测到某路径下有 CLEAR_ALL 文件就清空整个目录,与 filelist 中声明数量无关。因此同一 BMC 路径下多张图标记恢复默认时,filelist.conf 只生成一条 Name=CLEAR_ALL(例如 Web 界面图片组 6 张共用一个路径 → 只写 1 条)。

清白牌构建链路与白牌包完全一致(临时目录 + 白名单复制 + bingo wbd_build + HPM 落回原目录);filelist.confVersion2.02(白牌模式为 2.00)。

常见问题与注意事项

  • 按钮一直禁用:检查 pageStyle 是否已选(白牌模式必填)、DocSupportFlag 是否为 0/1、版本号是否符合 x.yy 最多两位)。
  • 图片显示但构建报缺失:以文件实际存在为准;缺图片会被自动清理,按提示重新构建即可。
  • 找不到 wbd_build 命令:不要在 manifest 项目根或组件目录下手动执行;编辑器的临时目录构建已规避此问题。若仍报工具未找到,请确认 bmcgo/bingo 已安装并在 PATH。
  • 产物位置wbd-crypt-image-signed.hpm 总是生成并覆盖回右键打开的白牌目录,不会留在临时目录。
  • 清白牌模式风格段消失:属预期,清白牌会把 style_config.json 强制写为 {}

十二、Manifest 配置与一键出包

Manifest 配置

Manifest 配置功能用于可视化查看和修改 manifest.yml 中的出包配置,包括构建变体、默认特性、组件依赖和组件特性。配置面板会结合 lockfile 显示组件的实际版本和生效配置,并在写回文件时尽量保留原有注释、缩进和其他未修改内容。

说明:

Manifest 配置功能当前支持 Linux 环境,完整解析组件版本和特性需要安装 Conan 2.x。
建议将 manifest 仓根目录作为受信任的工作空间打开,并确认目标产品的配置文件位于 build/product/<产品线>/<机型>/manifest.yml

打开出包配置

  1. 在 openUBMC Studio 中打开需要配置的 manifest.yml 文件。
  2. 点击依赖配置上方的“打开出包配置”。也可以打开命令面板,执行“Manifest: 打开出包配置面板(变体/依赖/默认特性)”。
  3. 在“出包配置”页面查看 schema 类型、平台包和 lockfile 状态,以及构建变体、默认特性、组件依赖和诊断结果。

配置构建变体和默认特性

  1. 在“构建变体”区域选择需要配置的 manufacturetosupporte 变体。未选择变体时,页面展示并修改基线配置。
  2. 查看当前变体的 build_typesignature_typeplatform.package 信息。选择变体后,依赖列表展示该变体与基线合并后的生效结果。
  3. 在“默认特性 default_options”区域修改已有特性,或点击“新增一项”添加特性。
  4. 点击“保存默认特性”,将配置写回当前基线或变体。

说明:

切换变体或清空默认特性前,如果存在未保存的修改,openUBMC Studio 会提示是否丢弃修改。

配置组件依赖和特性

  1. 在“依赖 dependencies”区域查看基础组件,dt_dependencies(gcov)、debug_dependencies(dev)、qemu_dependencies(qemu)分别以独立卡片展示。
  2. 根据需要执行以下操作:
    • 点击“插入”,从候选列表中向当前依赖类型添加组件。
    • 点击“特性”,展开组件的 optionstool_options。特性值会标识为“显式”、“继承默认”或“recipe 默认”。
    • 配置变体时,点击“删除”或“取消删除”,设置或取消组件的 action: delete 状态。
    • 点击“移除”,删除当前基线或变体中直接声明的组件。
  3. 修改组件特性后,点击“保存到 manifest”。

说明:

platform.package 已配置时,平台整包中的组件会显示“锁”标识,其版本和特性不可在产品 Manifest 中定制。
变体中继承自基线的组件不能直接从变体中移除,如需删除其声明,请切换到基线操作。

查看 SDK 组件

  1. platform.conan 配置上方点击“查看 ibmc_sdk 组件”,或在 openubmc_sdk.conan 配置上方点击“查看 openubmc_sdk 组件”。
  2. 在“SDK 组件”页面查看组件名称、版本或 Conan 引用,以及组件清单的来源。
  3. 在搜索框中输入组件名称,可以筛选当前 SDK 中的组件。

组件与固件联合构建

组件与固件联合构建功能用于在业务组件仓中构建本地 Conan 包,并将该组件集成到目标产品的调试固件中。本章节适用于需要验证组件改动或生成联调固件的组件开发人员。

准备构建环境

执行组件构建前,请准备以下环境:

  • 受信任的 Linux 本地、WSL 或 SSH Remote 工作空间
  • 包含有效 mds/service.json 的业务组件仓
  • 安装在 Extension Host 中的 Conan 2.x
  • 登录 Shell 可以执行 bmcgobingo

执行组件与固件联合构建时,还需要满足以下要求:

  • Extension Host 中已安装 Git
  • 目标 Manifest 可以从同一 Extension Host 访问
  • 目标 Manifest 位于 build/product/<产品线>/<机型>/manifest.yml
  • 目标 Manifest 所在仓库具有有效的 Git HEAD
  • 目标 Manifest 的修改已经保存
  • 目标 Manifest 未配置非空的 include

说明

如果同时检测到 bmcgobingo,openUBMC Studio 默认使用 bmcgo,并允许用户切换构建工具。组件构建面板与固件出包页面共用此设置。仅检测到 bingo 时,openUBMC Studio 直接使用 bingo

打开组件构建面板

  1. 将包含 mds/service.json 的业务组件仓作为工作空间打开。
  2. 在资源管理器中展开“业务组件仓快捷入口”。
  3. 展开“openUBMC Studio Local View”。
  4. 单击“组件构建”。
  5. 等待构建计划解析完成。

通过资源管理器中的快捷入口打开组件构建面板。

组件构建面板默认进入“仅组件模式 · 不关联 Manifest”,并显示组件包、组件 options、阻断项和诊断信息。

展开“运行环境与命令详情”,可以查看登录 Shell、工具路径、命令预览和目标 profile。展开“查证与会话技术详情”,可以查看组件包身份、依赖图和沙箱覆盖的证据位置。

仅构建组件

仅构建组件适用于只需要生成本地组件包、不需要生成固件的场景。此模式不创建 Manifest 沙箱,也不执行 install_sdkapppublish

  1. 确认页面处于“仅组件模式”。
  2. 如果已经选择固件目标,单击“返回仅组件模式”。
  3. 在“组件 options”区域选择需要的值。
  4. 确认“阻断项”为空。
  5. 根据需要展开“运行环境与命令详情”,检查命令预览。
  6. 单击“仅构建组件”。
  7. 在 Task 终端中查看构建输出。
  8. 构建完成后,确认“执行状态”为“成功”。
  9. 展开“查证与会话技术详情”,查看“组件独立构建包身份证明”。

只能选择当前 mds/service.json 中声明且类型一致的 option 值。openUBMC Studio 使用 debug build type 和 stable channel 构建组件。Task 终端会显示组件构建过程和最终结果。

Task 退出码为 0 后,openUBMC Studio 会从本地 Conan cache 验证本次组件包的 reference、RREV、package ID、PREV、settings 和 options。如果无法唯一确定本次组件包,构建结果仍会标记为失败。

注意

组件 Task 在源码仓根目录中执行,可能创建或刷新 conanbase.pytemp/gen/ 以及 mds/service.json 中声明的代码生成目录。如果其他受保护文件发生变化,openUBMC Studio 会停止后续流程,但不会自动回滚文件。执行构建前,请保存重要修改。

构建组件并转到固件出包

组件与固件联合构建适用于生成包含当前组件改动的调试固件。openUBMC Studio 会在隔离的 Manifest 沙箱中应用组件包,不会修改源 Manifest、SDK 或 subsystem 文件。

选择固件目标

  1. 单击“选择固件目标”(已选择目标时显示为“更换固件目标”)。
  2. 选择需要构建的 tosupportemanufacture 包型。
  3. 如果列表中没有目标文件,单击“选择其他 manifest.yml…”。
  4. 选择当前 Extension Host 可以访问的 manifest.yml
  5. 等待构建计划刷新完成。
  6. 确认页面标题下方显示正确的产品线、机型和包型。

固件目标列表显示已发现的产品、包型和 Manifest 路径。选择结果会自动缓存。

选择固件目标后,组件 options 由目标 Manifest 的生效配置锁定,不能在面板中修改。如果源码版本不满足目标版本约束,页面会显示非阻断提示;apppublish 仍会验证实际选中的组件包。无法安全解析配置或 option 时,页面会阻止构建。

执行联合构建

  1. 确认“阻断项”为空。
  2. 展开“运行环境与命令详情”。
  3. 检查 install_sdk、组件构建、app 预检和 publish 命令。
  4. 单击“构建组件并转到固件出包”。
  5. 在 Task 终端中查看构建输出。

openUBMC Studio 按以下顺序执行联合构建:

  1. 复制 Manifest 的 Git 源输入并创建临时沙箱。
  2. 在沙箱中将所选包型的 build_type 设置为 debug
  3. 使用 stable channel 执行 install_sdk
  4. 使用目标 profile 构建并验证当前组件包。
  5. 在沙箱当前包型的 dependencies 中写入组件的精确 reference、RREV 和业务 options。
  6. 使用 stable channel 执行 app 依赖图预检。
  7. 验证依赖图选择的组件 recipe、目标 profile 和业务 options。
  8. 打开“固件出包”页面并自动启动 stable channel 的 publish 任务。

验证联合构建结果

  1. 在组件构建面板中确认“执行状态”为“成功”。
  2. 确认“组件包证明”和“app 目标包证明”均已通过。
  3. 在自动打开的“固件出包”页面中查看计划组件和本次实际组件。
  4. 确认固件任务退出码为 0。
  5. 在“自动发现的本次产物”区域下载需要的固件产物。

在“固件出包”页面中核对计划组件和本次实际组件,确认固件使用了本次构建的组件包。

在“自动发现的本次产物”区域下载需要的固件文件。

组件会话、固件出包交接和固件任务分别记录结果。组件页面显示成功,表示组件包身份和 app 选包已经验证;固件是否成功以固件出包页面中 bmcgobingo 的退出码为准。未自动发现 HPM、ZIP 或 QEMU 文件不会改变固件任务的结果,需要结合 output 目录和完整的 task.log 确认实际文件。

选择合法的 tosupporte/qemu 目标时,apppublish 会自动启用 QEMU 构建参数。固件出包页面会尝试发现 .data.gz.cpio.gz 产物并提供下载入口。后续操作请参见一键出包

停止构建任务

关闭组件构建页面不会停止正在运行的任务。重新打开同一组件仓,可以继续查看当前会话。

  • 组件构建阶段:单击“取消”
  • 固件构建阶段:在“固件出包”页面中单击“终止任务”

清理构建沙箱

  1. 等待固件任务进入成功、失败或取消状态。
  2. 下载需要保留的固件产物。
  3. 返回组件构建页面。
  4. 单击“清理本次沙箱”。
  5. 在确认窗口中单击“清理本次沙箱”。

开始下一轮构建时,也可以在提示窗口中单击“清理并继续”。

注意

清理沙箱会永久删除本次联合构建生成的临时 Manifest、日志和固件产物,且无法恢复。openUBMC Studio 重启后也不保证能够访问旧会话产物。执行清理前,请下载需要保留的产物。

处理常见问题

诊断码或现象处理建议
WORKSPACE_UNTRUSTEDUNSUPPORTED_PLATFORM在受信任的 Linux 本地、WSL 或 SSH Remote 工作空间中重新打开组件仓。
BUILD_TOOL_NOT_FOUNDSHELL_ENV_RESOLVE_FAILED确认登录 Shell 可以执行 bmcgobingo,并可以执行 Conan 2.x;也可以单击“配置工具路径”。
TARGET_MANIFEST_INVALIDMANIFEST_GIT_CONTEXT_UNAVAILABLE保存并检查目标 Manifest;确认已安装 Git,目标仓具有有效 HEAD,且没有非空 include
PLAN_STALE组件源码、mds/service.json、Manifest 或相关 SDK 输入在计划生成后发生变化;保存文件并单击“刷新计划”。
PROFILE_DRIFT、共享构建资源等待避免在其他 Studio 窗口或外部终端中同时修改同一 Conan profile 或 cache,等待当前任务结束后刷新计划。
COMPONENT_VERSION_OUT_OF_RANGE此提示不会阻止构建。确认源码版本符合本次调试目的后继续,实际选包仍由沙箱中的 apppublish 依赖图验证。
INTEGRATION_MISMATCH展开“查证与会话技术详情”,检查独立组件包、整包目标组件包、app 依赖图和 options 差异。
MANIFEST_INPUT_LIMIT_EXCEEDEDINSUFFICIENT_DISK_SPACE清理 Manifest 仓中未忽略的大文件或释放沙箱所在卷空间;确有需要时在“组件构建”设置中调整输入上限或最低可用空间。
DEBUG_PACKAGE_SIGNING_UNAVAILABLE此提示不会阻止构建。固件签名或占位行为由 bmcgobingo 决定,请以固件任务退出码和产物为准。
FIRMWARE_PACKAGE_HANDOFF_FAILED组件包和 app 预检可能已经成功;根据提示中的沙箱 Manifest 和覆盖报告,在固件出包页面检查阻断项并重试。

一键出包

一键出包功能可以根据产品 manifest.yml 中的 tosupportemanufacture 包型生成构建命令,完成环境预检并启动固件构建。构建过程中可以查看计划组件、实际组件、构建进度和日志,构建完成后可以下载本次生成的固件产物。

说明:

执行一键出包需要使用受信任的 Linux 本地、WSL 或 SSH Remote 工作空间,manifest 仓及其 output 目录需要具备写权限。
用户登录 Shell 环境中需要存在 bmcgobingo 命令。检测到 bmcgo 时默认使用 bmcgo 并支持切换到 bingo;仅检测到 bingo 时直接使用 bingo

选择机型和包型

可以通过以下任一方式进入出包流程:

  • 在资源管理器的“快捷入口”中展开“openUBMC Studio Local View”,点击对应机型的出包入口,例如 BMC/openUBMC 出包
  • 打开产品 manifest.yml,点击目标 tosupportemanufacture 包型上方的入口,例如 default 出包入口,直接进入该包型的出包页面。

通过“出包配置”页面或“快捷入口”进入时,按以下步骤选择包型:

  1. 在“固件包类型选择”页面查看当前机型的所有包型。页面按照“To Support E”和“Manufacture”分组,显示包型名称、构建类型、包名和签名类型。
  2. 可以在搜索框中按照包型名称、分类或包名筛选。
  3. 在目标包型右侧点击“进入出包页”。无效包型会显示具体的配置错误,需要修改 manifest.yml 并刷新后再选择。

执行出包预检

  1. 进入“固件出包”页面后,等待 openUBMC Studio 读取 Manifest、组件清单和构建环境。
  2. 在“构建选择”区域选择构建类型。若 manifest.yml 已配置 build_type,构建类型不可修改。
  3. 查看出包信息、构建命令预览和计划组件。组件来源默认折叠,可按需展开查看。
  4. 如果“组件来源”中存在支持获取的缺失 SDK 制品,点击“从 Conan 获取”,完成后页面会自动重新加载出包信息。
  5. 点击“一键预检”重新检查当前配置和环境。如果页面显示“预检阻断”,请根据提示保存 Manifest、信任工作空间、修复配置或补齐构建工具后再次预检。

执行出包任务

  1. 预检通过后,点击页面顶部的“开始出包”。openUBMC Studio 会根据包型自动生成参数,并通过 Task 终端启动构建。
  2. 任务启动后,页面会自动定位到“构建阶段”,依次展示“计划就绪”、“有效 manifest”、“依赖图就绪”和“产物就绪”状态。
  3. 构建期间可以在 Task 终端查看实时输出,也可以在页面查看本次实际组件以及计划和实际配置之间的差异。
  4. 如需停止构建,点击“终止任务”。关闭出包页面不会自动终止正在执行的任务,重新打开同一包型的出包入口可以继续查看当前会话。

查看日志和下载产物

  1. 构建成功、失败或取消后,页面会自动定位到“构建日志”,并显示 temp/log/task.log 末尾最多 128KiB 的内容。
  2. 构建失败时,可以点击“只看异常上下文”或“跳到最近异常”辅助定位问题;点击“打开完整 task.log”可以查看完整日志。
  3. 构建成功后,在“本次新产物”区域根据包型查看本次构建生成的 HPM、发布 ZIP 等文件,点击“下载”并选择保存位置。Remote 工作空间中的产物也可以下载到本机。
  4. 在“最近记录”区域查看当前工作区近期出包任务的状态、执行时间和产物数量。

说明:

日志中的异常高亮仅用于提供排查线索,不代表 openUBMC Studio 已经确定失败根因,请结合完整日志确认。
“本次新产物”仅展示当前构建会话中新生成且校验通过的文件,不会将历史 output 目录中的文件作为本次结果。

十三、出包签名配置

openUBMC Studio 签名配置扩展(bmcstudio_sign_config)提供可视化的 HPM 签名档案管理、本地自签名证书生成和 EEPROM 签名配置。开发者可以在 CSR 出包和白牌包构建时复用签名档案,无需手动编辑 .bmcgo/config 中的 INI 配置。

选择出包签名档案

CSR 出包和白牌包构建页面均支持选择已有签名档案:

  • 单 CSR 出包:在出包窗口的签名档案下拉列表中选择档案。如果工作目录的 .bmcgo/config 中存在同名 INI 节,界面会显示配置冲突提示。
  • 多 CSR 出包:通过 QuickPick 选择签名档案。
  • 白牌包构建:在白牌定制编辑器的构建流程中选择签名档案。

如果没有可用档案,单击签名档案下拉列表旁的“新增签名档案”,进入签名配置界面。

管理 HPM 签名档案

HPM 签名档案用于保存签名方式、密钥路径和服务端参数,可以在多次出包任务之间复用。签名配置界面包含以下页签:

页签说明
签名管理新增、编辑和删除签名档案
证书生成生成本地自签名所需的证书文件
证书吊销吊销签名者证书并更新 CRL

新增 HPM 签名档案

支持以下签名方式:

签名方式说明适用场景
本地自签名使用本地 OpenSSL 密钥签名开发调试
简易签名服务器通过 HTTP 请求签名服务器内部 CI
远程签名通过 SignServer 远程签名正式发布

不同签名方式需要配置以下字段:

签名方式配置字段
本地自签名根证书(DER)、吊销列表(CRL)、签名证书、时间戳证书、时间戳配置
简易签名服务器根证书(DER)、证书标识符、签名服务器地址、TLS 验证方式
远程签名SignServer 地址、时间戳服务器地址、根证书(DER)、吊销列表(CRL)、Worker 路由标识、签名哈希算法、TLS 验证方式、Keyfactory 模式
  1. 打开“签名管理”页签。

  2. 单击“新增签名档案”。

  3. 选择签名方式。

  4. 填写对应的证书路径、密钥路径或服务端参数。

  5. 单击“保存”。

说明

保存时会自动检查密钥和证书文件是否存在。路径无效时,界面会显示错误并阻止保存。

编辑或删除 HPM 签名档案

  • 编辑档案:在档案列表中单击目标档案,修改配置后单击“保存”。
  • 删除档案:单击档案旁的“删除”,在确认窗口中继续操作。

创建本地自签名证书

首次使用本地自签名方式时,可以在“证书生成”页签中生成所需文件。该功能依赖 OpenSSL,请先执行 openssl version,确认系统已安装 OpenSSL。

需要填写以下信息:

字段说明
输出目录证书文件的生成目录
组织名(O)证书中的组织名称
根私钥保护密码PFX 根私钥的加密密码,不少于 12 个字符,可以通过“随机生成”创建

操作步骤如下:

  1. 打开“证书生成”页签。

  2. 填写输出目录、组织名和根私钥保护密码。

  3. 根据需要填写国家、证书通用名称和各证书有效期。RSA 密钥长度固定为 4096 位。

  4. 单击“一键生成全套证书”。

生成的文件如下:

文件说明
rootca.pfx包含私钥的根 CA 证书,采用 PKCS#12 格式
rootca.derDER 格式的根 CA 证书
rootca.crl证书吊销列表
signer.pem包含私钥的签名者证书
ts_signer.pem时间戳签名者证书
tsa.cnf时间戳配置文件
  1. 将所需文件路径填写到本地自签名档案中。

说明

签名档案使用 rootca.derrootca.crlsigner.pemts_signer.pemtsa.cnfrootca.pfx 包含根 CA 私钥,仅在证书吊销时使用,不需要填写到签名档案中。

吊销签名者证书

签名私钥泄露时,可以在“证书吊销”页签中吊销签名者证书并更新 CRL。

字段说明
证书目录包含 rootca.pfxrootca.crl 的目录
根私钥保护密码生成证书时设置的 PFX 密码
签名者证书需要吊销的 signer.pem 文件路径
  1. 打开“证书吊销”页签。

  2. 填写证书目录、根私钥保护密码和签名者证书路径。

  3. 单击“吊销并更新 CRL”。

注意

证书吊销不可逆。吊销后,签名者证书会写入 CRL,继续使用该证书签名 HPM 包将失败。如需继续签名,请创建新的签名者证书。

管理 EEPROM 签名档案

EEPROM 签名与 HPM 签名是两条独立链路。HPM 签名使用 CMS 对固件包外层进行签名,EEPROM 签名使用 ECDSA P-256/SHA-256 对写入 EEPROM 的原始二进制内容进行签名。CSR 出包时可以分别配置两类签名。

CSR 出包页面中的 HPM 签名和 EEPROM 签名分别使用独立的下拉列表。选择“使用现有配置”可以保留当前配置;单击 EEPROM 下拉列表旁的“新增 EEPROM 档案”可以打开 EEPROM 签名配置页面。

EEPROM 签名档案支持以下签名方式:

签名方式说明
本地自签名使用本地 ECC 密钥签名
简易签名服务器通过 HTTP 请求签名服务器
远程 ECC 签名通过 SignServer 远程签名

说明

EEPROM 签名档案与 HPM 签名档案独立管理,互不影响。

常见问题

  • 保存时提示路径不存在:检查密钥和证书文件路径。签名配置界面会在保存时验证文件是否存在。
  • 出包时提示全局配置冲突:工作目录的 .bmcgo/config 中存在同名 INI 节。请确认是否使用签名档案覆盖已有配置。
  • 证书生成失败:执行 openssl version,确认 OpenSSL 已安装并已加入 PATH

十四、常用操作

快捷键参考

openUBMC Studio提供了丰富的快捷键支持,帮助开发者提高工作效率:

功能快捷键说明
转到定义Ctrl + 点击F12跳转到符号的定义位置
转到引用Shift + F12查看符号的所有引用位置
查找Ctrl + F在当前文件中查找
全局搜索Ctrl + Shift + F在整个项目中搜索
保存Ctrl + S保存当前文件
全部保存Ctrl + Shift + S保存所有打开的文件
撤销Ctrl + Z撤销上一步操作
重做Ctrl + Y重做上一步操作
快速打开文件Ctrl + P快速打开项目中的文件
命令面板Ctrl + Shift + P打开命令面板,执行各种命令
切换侧边栏Ctrl + B显示/隐藏侧边栏

说明:

可以在“文件”>“首选项”>“键盘快捷方式”中查看和自定义所有快捷键。

设置与配置

修改用户设置

  1. 点击菜单栏“文件”>“首选项”>“设置”,或使用快捷键 Ctrl + ,
  2. 在设置页面中,可以修改各类配置:
    • 编辑器设置(字体、主题、缩进等)
    • CSR规则检查设置
    • 快捷键配置
    • 扩展设置

十五、卸载 openUBMC Studio

如果您不再需要使用openUBMC Studio,可以通过以下步骤卸载。

Windows系统卸载

  1. 打开“控制面板”>“程序”>“程序和功能”
  2. 在程序列表中找到“openUBMC Studio”
  3. 右键点击,选择“卸载”
  4. 按照卸载向导提示完成卸载

卸载后清理

说明:

卸载程序不会删除用户配置文件和工作空间数据,如需完全清理,请手动删除以下目录:

  • 用户数据目录:%APPDATA%\.bmc-Studio
  • 远程连接服务目录:~/.bmcstudio-server

注意
删除配置目录和工作空间数据是不可逆操作,请确保已备份重要数据后再执行删除。