redfish和snmp中的oem字段,有没有不使用装备项和白牌包来做定制的手段

问题描述

OemIdentifier定制不成功 - 交流互助区 - openUBMC 论坛

场景类似这篇帖子,现在需要定制redfish中的oem字段和snmp中的厂商oid,预期达到本地出的包中oem字段默认就是比如test

除了装备定制项控制,我了解到还能通过修改manifest仓库中:

xml文件来做默认定制

还有其他方法么

答案内容由AI生成,仅供参考:
:white_check_mark: 结论先行

在不使用装备项与白牌包的情况下,可以通过修改 web_custom.xmlconfig.json 文件在构建阶段实现 OEM 的默认定制,但其生效优先级低于 BMCSet_RedfishCustomManuName。若该高优先级配置存在并设置为 openUBMC,则所有低优先级配置均不会生效。

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

Redfish 与 SNMP 中 OEM 字段的定制手段分析

根据您的问题,您希望在不使用装备定制化项(如 BMCSet_RedfishCustomManuName白牌包升级的前提下,实现 Redfish 接口中的 OEM 厂商名称和 SNMP 中的 OID 厂商标识的默认定制。以下将基于 知识图谱、文档块及搜索结果,全面分析可行的替代方法。


:white_check_mark: 结论先行

在不使用装备项与白牌包的情况下,可以通过修改 web_custom.xmlconfig.json 文件在构建阶段实现 OEM 的默认定制,但其生效优先级低于 BMCSet_RedfishCustomManuName。若该高优先级配置存在并设置为 openUBMC,则所有低优先级配置均不会生效。


:magnifying_glass_tilted_left: 一、OEM 字段定制的层级机制

Redfish 与 SNMP 的 OEM 信息定制遵循一套多层级优先级机制,从高到低如下:

优先级 定制方式 是否可在构建时静态设置
1(最高) BMCSet_RedfishCustomManuName 装备定制化宏 否(通常为出厂或产线动态配置)
2 客户定制发行版 config.json 中的 OemIdentifier :white_check_mark:
3 构建发行版 config.json 中的 OemIdentifier :white_check_mark:
4(最低) web_custom.xml 中的 CustomManufacturer :white_check_mark:
默认 固定值 openUBMC :white_check_mark:

:warning: 关键规则:只要 BMCSet_RedfishCustomManuName 被定义为 openUBMC,即使其他配置修改为 test,Redfish 接口仍会显示为 oem/openUBMC


:hammer_and_wrench: 二、非装备/白牌包的定制方法(构建阶段静态配置)

方法 1:修改 web_custom.xml(Redfish OEM 厂商名)

这是您截图中提到的文件,完全支持在构建阶段直接设置默认 OEM 名称

:white_check_mark: 配置说明:

<CUSTOM_CONFIG>
    <!-- Redfish OEM厂商 -->
    <CustomManufacturer VALUE="test" />
</CUSTOM_CONFIG>
  • 文件路径build/product/BMC/openUBMC/wbd_up_file/web_custom.xml
  • 作用范围:Redfish 接口的 Oem 字段命名空间(如 /redfish/v1/Systems/1/Oem/test
  • 知识图谱支持
    • CustomManufacturerweb_custom.xml 中的配置字段,用于设置 Redfish OEM 厂商名。
    • 通过构建流程注入,可在固件镜像中固化。

:check_mark: 此方法为白牌包的源配置,若您在构建时直接修改此文件,则无需后续升级白牌包即可生效。


方法 2:修改 config.json 中的 GlobalVariable.OemIdentifier(批量字段替换)

这是 Redfish 和 SNMP 接口中更底层的字段替换机制。

:white_check_mark: 配置示例:

{
  "GlobalVariable": {
    "OemIdentifier": "test",
    "SnmpOemIdentifier": "1.3.6.1.4.1.31234"  // 自定义 SNMP OID 前缀
  }
}
  • 文件路径CTCC/interface_config/redfish/config.json 或发行版默认路径
  • 作用机制
    • OemIdentifier 是占位符(如 {{OemIdentifier}}),在构建或部署时被替换。
    • 所有 Redfish Schema 和 URI 中的 {{OemIdentifier}} 将被替换为 test
  • 知识图谱支持
    • OemIdentifier 是 Redfish 中代表 OEM 厂商的动态占位符。
    • config.json 是 QEMU 和 openUBMC 构建系统的核心配置文件。

:warning: 注意:此方法需确保所有模板中使用了 {{OemIdentifier}} 替代硬编码 openUBMC,否则无效。


方法 3:修改 SNMP OID 配置(使用 ManufacturerOid

:white_check_mark: 配置方式:

在 SNMP 相关接口配置中,将 OID 前缀设为自定义值。

<ManufacturerOid VALUE="1.3.6.1.4.1.31234" />

或在 config.json 中设置:

{
  "GlobalVariable": {
    "SnmpOemIdentifier": "1.3.6.1.4.1.31234"
  }
}
  • 知识图谱支持
    • ManufacturerOid 是 SNMP 接口中用于表示厂商的 OID 字段。
    • 可通过 {{SnmpOemIdentifier}} 占位符机制实现批量替换。

:white_check_mark: 此方法可在不使用白牌包的情况下,通过构建时替换实现。


:puzzle_piece: 三、其他可行路径(需结合构建系统)

方法 描述 可行性
修改 manifest 构建脚本 build.shcustomize.sh 中直接替换 web_custom.xmlconfig.json :white_check_mark:
定义默认 default_settings.json profile_schema 中设置 CustomManufacturerCustomDefault 值为 test :white_check_mark: 中(仅用于配置导入导出场景)
代码层硬编码替换 修改 Redfish 插件代码,将 openUBMC 替换为 test(不推荐) :warning: 低(违反可维护性)

:red_exclamation_mark: 四、常见问题与规避建议

问题 原因 解决方案
修改 config.json 后仍显示 oem/openUBMC BMCSet_RedfishCustomManuName 优先级更高 检查并清空该宏定义
重启 BMC 后恢复为 openUBMC 高优先级配置未持久化或缓存未刷新 重新构建镜像并确保 BMCSet_RedfishCustomManuName 未定义
SNMP OID 未替换 未使用 {{SnmpOemIdentifier}} 占位符 确保配置模板中使用了动态替换机制

:white_check_mark: 总结:推荐构建阶段的定制流程

不允许使用装备项和白牌包升级,建议在固件构建阶段执行以下操作:

:check_mark: 推荐流程:

  1. 清除高优先级配置:确认 BMCSet_RedfishCustomManuName 未定义或为空。
  2. 修改 web_custom.xml
    <CustomManufacturer VALUE="test" />
    
  3. 修改 config.json
    {
      "GlobalVariable": {
        "OemIdentifier": "test",
        "SnmpOemIdentifier": "1.3.6.1.4.1.31234"
      }
    }
    
  4. 确保 Redfish Schema 使用占位符:检查所有 *.json 模板中是否使用 {{OemIdentifier}}
  5. 重新构建 openUBMC 固件镜像

:pushpin: 最终效果:出厂镜像中 Redfish 接口为 /redfish/v1/Systems/1/Oem/test,SNMP OID 使用自定义前缀,且无需任何后期白牌包升级。


:link: 参考资料

  • 白牌包定制指南(Search Result #1, #2
  • 产品多层级接口定制(Search Result #6
  • 服务器出厂定制化配置(Search Result #5
  • 知识图谱中 BMCSet_RedfishCustomManuNameOemIdentifierCustomManufacturerconfig.json 实体关系

如有需要,可进一步提供 config.json 模板或构建脚本修改建议。

busctl

image

试试修改rackmount仓对应组件下的config.json呢

rackmount仓 修改不生效。

确认下是否修改的是snmp目录下的config.json文件,预期修改为

{
    "GlobalVariable": {
        "SnmpOemIdentifier": "1.3.6.1.4.1"
    }
}