答案内容由AI生成,仅供参考:
博通9560-16i RAID卡信息获取异常问题分析与解决方案
根据您提供的问题描述和日志信息,针对 openUBMC 25.12 社区版本中博通9560-16i RAID卡信息获取失败 的问题,结合上下文知识库内容进行系统性分析并提供解决方案。
问题定位
1. 核心错误码:ret: 4357
从日志中可见关键错误提示:
storage ERROR: tasks.lua(92): task [Controller.register_controller.0] error: ...controller_object.lua:706: [Storage] Failed to add controller 0, ret: 4357
结合知识库中的文档和社区案例(参考 Document Chunks ID: 1),该错误码 4357 在闭源模块中定义为 “控制器初始化失败”。进一步排查确认此问题与 RAID卡SDK加载失败或缺失相关协议库 有关。
2. 同类问题复现与验证
在社区讨论中存在高度相似的案例(Topic ID: 3032):
- 用户
Hkzy_licuncai提出相同错误Failed to add controller 0, ret: 4357 - 初步排查发现 RAID 卡信息无法获取,所有字段显示为
N/A - 最终解决方案为更换RAID卡后恢复正常,怀疑为 RAID卡固件版本不兼容或硬件故障
结论:
ret: 4357多与 底层通信失败、驱动未加载成功或RAID卡自身故障 有关。
3. 华为iBMC正常 vs openUBMC异常
您提到:
“尝试使用华为BMC版本,同样环境raid卡显示正常”
这表明:
- 硬件连接是正常的;
- PCIe拓扑识别无误;
- I²C/MCTP通信物理链路正常。
问题根源锁定在 openUBMC 软件侧对 RAID 卡的管理支持上,尤其是 对博通SDK的支持或共享库加载机制。
根本原因分析
1. 缺少RAID管理协议库(storelib_enable配置缺失)
根据知识库文档《RAID卡适配指导》(ID: 2)中明确指出:
若出现如下错误:
framework ERROR: adapter.c(603): Failed to load lsi sml library /usr/lib64/libsml_lsi.so ... No such file or directory解决方法是修改
manifest.yaml文件,在libmgmt_protocol下增加配置:- conan: libmgmt_protocol options: storelib_enable: true
此项配置用于启用 RAID 控制器的 动态加载共享库功能(动态加载如 libsml_lsi.so 等)。若未开启,会导致博通等厂商的 SDK 无法加载,从而引发“Failed to add controller”错误。
2. openUBMC RAID卡管理解耦机制依赖此配置
根据《openUBMC RAID卡管理解耦特性设计说明书》(ID: 2):
- openUBMC 实现了 运行时动态加载 RAID 管理共享库 的机制(通过
dlopen); - 这要求构建系统时必须开启
storelib_enable以包含对应的协议库; - 否则,默认构建时不打包
libsml_lsi.so(对应 Broadcom RAID 卡),导致控制器注册失败。
因此,虽然硬件相同且 iBMC 可用,但 openUBMC 构建配置不当会导致同样硬件环境下无法识别 RAID 卡。
解决方案
方案一:检查并启用 storelib_enable 构建选项(推荐)
步骤如下:
- 打开项目构建配置文件:
manifest.yml或对应产品的配置文件。 - 检查
libmgmt_protocol组件是否启用了storelib_enable:- conan: libmgmt_protocol options: storelib_enable: true - 若未启用,请添加该配置。
- 使用
bingo build重新构建固件包:bingo build -b openUBMC - 烧录新固件后重启系统,观察 RAID 卡是否正常显示。
方案二:验证 CSR 文件与设备四元组匹配
使用 busctl 检查 PCIe 设备是否已正确识别:
busctl --user introspect bmc.kepler.hwdiscovery /bmc/kepler/Connector/Connector_PCIE_SLOTX | grep "Id\|AuxId"
确认以下信息:
Id= 0x100010e2(Broadcom 设备ID)AuxId= 0x10004010(博通子系统ID)
若匹配成功,应能找到对应的 CSR 文件名格式:
<BOM>_<DeviceID>_<SubDeviceID>.sr → 如 14140130_100010e2_10004010.sr
若 CSR 文件缺失或命名不符合规范,需补充至
/opt/bmc/sr/目录,并重启hwdiscovery服务。
方案三:检查底层通信协议支持
博通9560-16i 使用 I2C 协议进行带外管理,地址为 0x02。
运行以下命令检查 I2C 总线是否能访问 RAID 卡:
i2cdetect -y <i2c_bus_number>
注:可通过日志
init.lua(540): sml: set i2c chip定位具体使用的 I2C 总线路径。
额外建议
| 建议 | 说明 |
|---|---|
| 升级至 openUBMC 25.2.0 或更高版本 | 该版本已集成 RAID卡管理解耦特性,支持多厂商 SDK 动态加载,推荐使用。 |
查看 /tmp/raid_controller_lib.log |
该日志记录 BMC 与 RAID 卡通信细节,有助于定位通信异常。 |
使用 busctl 查询控制器 DBus 对象 |
查看是否生成 /bmc/kepler/Systems/1/Storage/Controllers/Controller_... 对象。 |
| 核对 firmware 版本兼容性 | 博通 9560 固件推荐版本 ≥ 5.290.02,避免使用 EOL 或测试版固件。 |
参考资料
总结
| 项目 | 内容 |
|---|---|
| 问题现象 | 博通 9560-16i RAID 卡信息获取失败,日志报 ret: 4357 |
| 根本原因 | libmgmt_protocol 未启用 storelib_enable,导致 libsml_lsi.so 未加载 |
| 解决方案 | 修改 manifest.yml 启用 storelib_enable: true 并重新构建固件 |
| 预防措施 | 使用 openUBMC 25.2.0+ 版本,确保 RAID 卡 CSR 文件正确配置 |
请优先执行 方案一。若仍存在问题,欢迎收集
raid_controller_lib.log和framework.log进一步分析。
相关链接: