chain914
(芯网动力-chain)
2026 年7 月 21 日 01:05
1
发布求助时帖子重复了,转26.06上devmon反复重启(自己构建HPM、26.03上正常) - 交流互助区 - openUBMC 论坛 跟踪。
问题描述
新开发的PCIe网卡驱动Porting到OpenUBMC26.06后,devmon服务反复重启。(在26.03版本上是正常的)
**表象:**OpenUBMC的WebUI “系统管理” → “系统信息“ → “网络适配器“中的网卡信息全是空的。
定位发现是“devmon”不能正常运行,反复重启:
查看LOG,发现PCIe网卡初始化时devmon未能找到几个.so
在构建的manifest下确实没找到这些.so。
其他26.03版本没出现的问题:
2606版本是这样:
2603版本是这样:
环境信息
重现步骤
克隆component_drivers代码仓、切换到1.2.248 (OpenUBMC 26.06对应组件的版本),增加自研PCIe网卡的CSR、代码驱动,NC-SI MCPT驱动。然后binggo build构建dev版本。网卡CSR文件参见附件“14140130_20f91010_20f90066.sr”
克隆devmon代码仓、切换到1.2.58 (OpenUBMC 26.06对应组件的版本),修改mds/service.json,使用“conan”: “component_drivers/1.2.248@openubmc.dev/dev”。然后binggo build构建dev版本。
克隆vpd代码仓、切换到1.90.125 (OpenUBMC 26.06对应组件的版本),修改vendor/Huawei/Server/Kunpeng/openUBMC/root.sr,增加MYIR板上的I2C_8和Connector_SF的配置,参考附件“root.sr”。然后binggo build构建dev版本。
克隆manifest仓,切换到tag 26.06_2026.06.30,修改openubmc.lock、openubmc_sdk.lock解除锁定使用组件的版本,修改framework.yml和hardware.yml使用上面的dev版本,修改profile.txt增加包含自研网卡的14140130_20f91010_20f90066.sr,然后binggo build出包rootfs_openUBMC.hpm。
做米尔开发板OpenUBMC WebUI的“固件更新”更新刚出的HPM包,重启自研网卡和OpenUBMC。
期望结果
BMC与自研网卡之间MCTP over SMBus_OEM交互正常。
BMC的WebUI上网卡信息显示正常。
实际结果
【 】从网卡侧LOG和BMC的app.log中看MCTP over SMBus_OEM交互正常。
【 】BMC的WebUI上无法显示网卡基本信息。
尝试过的解决方案
比对CX、Hisi和网讯的26.03和26.06 CSR变化,将自研网卡CSR中的PCIeNicCard_1.xxx改成PCIeNicCard_1[bmc.dev.PCIeDevice].xxx。因为看app.log中有“not found for PCIeNicCard_1.Slot”字眼。但还是没用。
看到drivers/meson.build有新增使用“unidev”编译宏,但看26.03上的“subdir(‘connector’)”,感觉用不着开启“unidev”。就没尝试。
分析结论
感觉是哪里构建步骤有问题,造成.so的缺失、devmon启动失败。
OpenUBMC26.06.zip (70.4 KB)
答案内容由AI生成,仅供参考:
总结:关键排查清单
可能性
依据(知识库)
行动方向
manifest 未包含 component_drivers
关系、文档 #2、 #5
对比 26.03/26.06 manifest,手动确认集成
CSR 格式版本不符
关系(FormatVersion 5.00)
检查 CSR 文件头版本
组件版本不兼容
多条关系(libmcpp、组合测试)
统一升级至官方稳定版
缺少构建优化宏
Unidev=True 关系
尝试开启 unidev 编译
构建缓存导致产物错误
conan remove 关系
清理缓存并重构建
固件缺少修复 PR
PR_238、PR_197
合并相关修复补丁
驱动集成步骤遗漏
文档 #5 经验
逐项对照经验文档中的修改
由于您的问题涉及自研硬件和私有补丁,最可能的根因是 manifest 配置差异 或 组件版本不匹配 (尤其是 component_drivers 从 26.03 到 26.06 可能被移除或结构变化),建议优先对比两个版本的 manifest、framework.yml 和 hardware.yml,确保 component_drivers、devmon、libmcpp、pcie_device 的版本完全对应,且 .so 文件确实出现在构建产物的预期路径中。
点击此处查看详细分析解答
根据提供的知识库信息,您描述的 OpenUBMC 26.06 上 devmon 反复重启、PCIe 网卡驱动 .so 文件缺失 的问题,可以关联到以下核心依赖关系和常见配置要点。知识库中记录了大量关于 component_drivers 与 devmon 的耦合机制、版本兼容性、构建配置等细节,以下是基于这些信息的问题分析与解决方向。
1. devmon 与 component_drivers 的强依赖关系
知识库明确说明:
devmon 系统在初始化时,仅从 component_drivers 目录加载 .so 文件 ,且两者的构建和运行时紧密耦合。
component_drivers 是 devmon 的子项目 ,devmon 核心功能(动态加载驱动)完全依赖 component_drivers 的完整性。
对您的问题 :devmon 找不到 .so 文件,直接表明 component_drivers 组件在 HPM 包中未正确打包或生成 。需重点检查构建链路是否遗漏了 component_drivers 的产物。
2. Manifest 与构建配置的潜在缺失
知识库中多次讨论 component_drivers 是否自动集成到 manifest:
早期版本存在手动添加 的要求,虽然后来被确认已集成到 manifest,但26.06 版本可能仍有变动 。
关系显示:component_drivers was removed from version 25.12-SP1, causing integration issues ,这暗示 26.06 的 manifest 结构可能与 26.03 存在差异 ,导致部分 .so 未被包含。
建议 :
对比 26.03 与 26.06 的 manifest 文件 (特别是 framework.yml 和 hardware.yml),确认 component_drivers 的引用是否缺失或版本不对。
检查 manifest 下的 rootfs 目录 是否包含了 component_drivers 生成的 .so 库(路径通常如 /usr/lib64/ 下)。
3. CSR 文件格式版本要求
知识库记录:
为了让 hwdiscovery 识别新驱动,component_drivers 中的 CSR 文件必须使用 FormatVersion 5.00 。
您提供的网卡 CSR 文件 “14140130_20f91010_20f90066.sr” 需要确认其格式版本是否正确。
建议 :
检查 CSR 文件头部是否包含 FormatVersion = 5.00;旧版本格式(如 4.xx)可能导致驱动 .so 被跳过,从而不被 devmon 加载。
4. 版本兼容性(component_drivers、devmon、libmcpp 等)
知识库强调:
libmcpp 版本敏感:The component_drivers build is sensitive to Libmcpp version; using 1.2.92 causes runtime problems。您使用的 component_drivers 1.2.248 及配套的 libmcpp 版本需要匹配。
component_drivers 与 devmon 需特定组合 :文档 #2 显示,在某些版本组合下(如 component_drivers 1.1.36 + devmon 1.1.20)devmon 无法加载,更换为 1.1.30 + 1.1.18 后才成功。
建议 :
检查 subprojects/libmcpp.wrap 中指定的 libmcpp 版本是否为 26.06 所要求的稳定版本。
尝试 整体升级 component_drivers 和 devmon 至 26.06 官方推荐的最新版本,而非仅使用您自建的 dev 版本(参考文档 #10 :更新组件到最新可修复类似问题)。
5. 编译宏与构建缓存问题
unidev 编译宏 :您看到 drivers/meson.build 新增了 unidev 宏。知识库指出 Using the Unidev=True parameter changes the component_drivers build behavior for debugging or simplification。虽然您尚未尝试,但开启该宏可能纠正某些 .so 的生成规则。
构建缓存 :The conan remove command is used to clean up the component_drivers cache to reduce disk occupation。累积的 Conan 缓存可能导致不一致,建议:
执行 conan remove component_drivers/* -f 清理缓存。
重新执行 bingo build 确保完全重新编译。
6. 缺失的关键补丁(Pull Request)
知识库提到:
PR_238 :introduces a fix in component_drivers for a CSR configuration issue,可能解决了某些驱动 .so 被错误跳过的 bug。
PR_197 :introduced the set_lldp cmd implementation,涉及网卡驱动交互。
建议 :
确认您的基础分支是否已包含这些 PR。如果是从较早标签(如 26.06 未合并所有修复的版本)开始开发,手动合并这些 PR 可能修复 .so 缺失问题。
7. 参考已有经验文档
知识库中的 “南向适配网迅网卡经验分享” (文档 #5 )提供了完整的问题排查流程,包括:
修改 start_ncsi_protocol() 和 mctp() 接口的正确做法。
由于 NC-SI over MCTP over SMBus 的 mctp 关联性,必须指定正确的 endpoint 对象 。
在 manifest 中新增 profile.txt 以解决头文件缺失问题(该文件在 26.06 构建时是否缺少?)。
建议您严格对照该文档,检查每一步配置是否一致(特别是针对 SMBus 的特殊处理)。
总结:关键排查清单
可能性
依据(知识库)
行动方向
manifest 未包含 component_drivers
关系、文档 #2、 #5
对比 26.03/26.06 manifest,手动确认集成
CSR 格式版本不符
关系(FormatVersion 5.00)
检查 CSR 文件头版本
组件版本不兼容
多条关系(libmcpp、组合测试)
统一升级至官方稳定版
缺少构建优化宏
Unidev=True 关系
尝试开启 unidev 编译
构建缓存导致产物错误
conan remove 关系
清理缓存并重构建
固件缺少修复 PR
PR_238、PR_197
合并相关修复补丁
驱动集成步骤遗漏
文档 #5 经验
逐项对照经验文档中的修改
由于您的问题涉及自研硬件和私有补丁,最可能的根因是 manifest 配置差异 或 组件版本不匹配 (尤其是 component_drivers 从 26.03 到 26.06 可能被移除或结构变化),建议优先对比两个版本的 manifest、framework.yml 和 hardware.yml,确保 component_drivers、devmon、libmcpp、pcie_device 的版本完全对应,且 .so 文件确实出现在构建产物的预期路径中。
确认下26.03和26.06 manifest差异
组件版本是否匹配
chain914
(芯网动力-chain)
2026 年7 月 21 日 12:01
4
查了一下26.03版本manifest构建后也没有这些.so。
使用的component_drivers / devmon / vpd版本都是从26.06版本的manifest下载后直接构建的LOG中确认的版本号,也对应修改了manifest中.yml文件中版本号 。
manifest中除了新增ast2600和hi1712的,公共文件没看出啥关键修改。
另外今天我也尝试了这几个组件的“26.06_2026.06.30” tag版本,也是一样的现象。
转26.06上devmon反复重启(自己构建HPM、26.03上正常) - 交流互助区 - openUBMC 论坛 跟踪