问题描述
OemIdentifier定制不成功 - 交流互助区 - openUBMC 论坛
场景类似这篇帖子,现在需要定制redfish中的oem字段和snmp中的厂商oid,预期达到本地出的包中oem字段默认就是比如test
除了装备定制项控制,我了解到还能通过修改manifest仓库中:
xml文件来做默认定制
还有其他方法么
OemIdentifier定制不成功 - 交流互助区 - openUBMC 论坛
场景类似这篇帖子,现在需要定制redfish中的oem字段和snmp中的厂商oid,预期达到本地出的包中oem字段默认就是比如test
除了装备定制项控制,我了解到还能通过修改manifest仓库中:
xml文件来做默认定制
还有其他方法么
答案内容由AI生成,仅供参考:
结论先行
在不使用装备项与白牌包的情况下,可以通过修改
web_custom.xml和config.json文件在构建阶段实现 OEM 的默认定制,但其生效优先级低于BMCSet_RedfishCustomManuName。若该高优先级配置存在并设置为openUBMC,则所有低优先级配置均不会生效。
根据您的问题,您希望在不使用装备定制化项(如 BMCSet_RedfishCustomManuName)和白牌包升级的前提下,实现 Redfish 接口中的 OEM 厂商名称和 SNMP 中的 OID 厂商标识的默认定制。以下将基于 知识图谱、文档块及搜索结果,全面分析可行的替代方法。
在不使用装备项与白牌包的情况下,可以通过修改
web_custom.xml和config.json文件在构建阶段实现 OEM 的默认定制,但其生效优先级低于BMCSet_RedfishCustomManuName。若该高优先级配置存在并设置为openUBMC,则所有低优先级配置均不会生效。
Redfish 与 SNMP 的 OEM 信息定制遵循一套多层级优先级机制,从高到低如下:
| 优先级 | 定制方式 | 是否可在构建时静态设置 |
|---|---|---|
| 1(最高) | BMCSet_RedfishCustomManuName 装备定制化宏 |
否(通常为出厂或产线动态配置) |
| 2 | 客户定制发行版 config.json 中的 OemIdentifier |
|
| 3 | 构建发行版 config.json 中的 OemIdentifier |
|
| 4(最低) | web_custom.xml 中的 CustomManufacturer |
|
| 默认 | 固定值 openUBMC |
关键规则:只要
BMCSet_RedfishCustomManuName被定义为openUBMC,即使其他配置修改为test,Redfish 接口仍会显示为oem/openUBMC。
web_custom.xml(Redfish OEM 厂商名)这是您截图中提到的文件,完全支持在构建阶段直接设置默认 OEM 名称。
<CUSTOM_CONFIG>
<!-- Redfish OEM厂商 -->
<CustomManufacturer VALUE="test" />
</CUSTOM_CONFIG>
build/product/BMC/openUBMC/wbd_up_file/web_custom.xmlOem 字段命名空间(如 /redfish/v1/Systems/1/Oem/test)CustomManufacturer 是 web_custom.xml 中的配置字段,用于设置 Redfish OEM 厂商名。
此方法为白牌包的源配置,若您在构建时直接修改此文件,则无需后续升级白牌包即可生效。
config.json 中的 GlobalVariable.OemIdentifier(批量字段替换)这是 Redfish 和 SNMP 接口中更底层的字段替换机制。
{
"GlobalVariable": {
"OemIdentifier": "test",
"SnmpOemIdentifier": "1.3.6.1.4.1.31234" // 自定义 SNMP OID 前缀
}
}
CTCC/interface_config/redfish/config.json 或发行版默认路径OemIdentifier 是占位符(如 {{OemIdentifier}}),在构建或部署时被替换。{{OemIdentifier}} 将被替换为 test。OemIdentifier 是 Redfish 中代表 OEM 厂商的动态占位符。config.json 是 QEMU 和 openUBMC 构建系统的核心配置文件。
注意:此方法需确保所有模板中使用了
{{OemIdentifier}}替代硬编码openUBMC,否则无效。
ManufacturerOid)在 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}} 占位符机制实现批量替换。
此方法可在不使用白牌包的情况下,通过构建时替换实现。
| 方法 | 描述 | 可行性 |
|---|---|---|
| 修改 manifest 构建脚本 | 在 build.sh 或 customize.sh 中直接替换 web_custom.xml 或 config.json |
|
定义默认 default_settings.json |
在 profile_schema 中设置 CustomManufacturer 的 CustomDefault 值为 test |
|
| 代码层硬编码替换 | 修改 Redfish 插件代码,将 openUBMC 替换为 test(不推荐) |
| 问题 | 原因 | 解决方案 |
|---|---|---|
修改 config.json 后仍显示 oem/openUBMC |
BMCSet_RedfishCustomManuName 优先级更高 |
检查并清空该宏定义 |
重启 BMC 后恢复为 openUBMC |
高优先级配置未持久化或缓存未刷新 | 重新构建镜像并确保 BMCSet_RedfishCustomManuName 未定义 |
| SNMP OID 未替换 | 未使用 {{SnmpOemIdentifier}} 占位符 |
确保配置模板中使用了动态替换机制 |
若不允许使用装备项和白牌包升级,建议在固件构建阶段执行以下操作:
BMCSet_RedfishCustomManuName 未定义或为空。web_custom.xml:<CustomManufacturer VALUE="test" />
config.json:{
"GlobalVariable": {
"OemIdentifier": "test",
"SnmpOemIdentifier": "1.3.6.1.4.1.31234"
}
}
*.json 模板中是否使用 {{OemIdentifier}}。
最终效果:出厂镜像中 Redfish 接口为
/redfish/v1/Systems/1/Oem/test,SNMP OID 使用自定义前缀,且无需任何后期白牌包升级。
BMCSet_RedfishCustomManuName、OemIdentifier、CustomManufacturer、config.json 实体关系如有需要,可进一步提供 config.json 模板或构建脚本修改建议。
busctl

试试修改rackmount仓对应组件下的config.json呢
rackmount仓 修改不生效。
确认下是否修改的是snmp目录下的config.json文件,预期修改为
{
"GlobalVariable": {
"SnmpOemIdentifier": "1.3.6.1.4.1"
}
}