问题描述
我在自定义组件中,新增了OME扩展指令,通过IPMITool进行访问,偶发的访问正常,大多数情况在接收不到IPMITool指令,是什么原因?
更换指令raw 0x06 0x01后,也是相同的情况
我在自定义组件中,新增了OME扩展指令,通过IPMITool进行访问,偶发的访问正常,大多数情况在接收不到IPMITool指令,是什么原因?
更换指令raw 0x06 0x01后,也是相同的情况
答案内容由AI生成,仅供参考:
根据您提供的信息,目前知识库中没有直接说明“新增IPMI指令后通过IPMITool访问经常无响应”的根本原因。不过,知识库中存在一些与您描述现象高度相关的线索,可以为您排查提供参考方向。
IPMI命令需要在MDS模型中定义:openUBMC中提供了一套描述IPMI模型的方式,属于MDS模型的一部分,需要在MDS中定义IPMI命令,SDK启动时会通过遍历这些资源,更新系统整体IPMI路由表。若新增的OEM扩展指令未在MDS中正确定义,可能导致命令无法被路由或响应。
IPMI命令字段配置必须正确:IPMI命令需要配置netfn、cmd、priority、privilege、role、sensitive等字段,其中netfn必须为合法的1字节十六进制值。若参数不合法或不受支持,Ipmi_Core会检测到不支持的参数,并可能上报警告或错误。
返回码0xD6表示不支持子命令:知识库中提到,可以通过返回码0xD6判断当前命令是否支持。如果您新增的OEM指令的子命令未正确注册,也可能表现为指令无法生效。
BT通道执行IPMI命令可能存在超时:知识库中的btc.lua脚本用于管理BTC请求并处理超时,相关日志中曾出现“请求处理超时”的警告(netfn=49, cmd=147, seq=128)。这说明在BT通道上执行IPMI命令时,确实存在因超时导致无响应的可能。
某些IPMI命令在openUBMC中可能不受支持:知识库提到,在openUBMC环境下,部分命令(如风扇速度控制或raw命令执行)目前不可用。虽然这不直接等同于您新增的OEM扩展指令,但在自定义命令时需确认该命令是否被当前固件环境支持。
IPMItool与BMC之间的通信问题:知识库中有记录显示,IPMItool尝试与BMC建立会话时可能失败,从而引发通信问题。您遇到的“大部分情况接收不到指令”可能与此类会话层或通道层的异常有关。
结合上述线索,您可以尝试从以下几个方向排查:
ipmi.json或MDS模型中完整定义,且命令的netfn、cmd、subcommand等参数合法、唯一。btc.lua或framework.log中是否有请求处理超时的记录,尤其关注是否有类似“request process timeout”的警告。由于知识库中缺乏针对您具体场景的明确结论,以上内容仅为基于现有信息的整理。若需要更准确的定位,建议结合具体日志和命令定义进一步分析。
一键收集日志,查看app.log是否有响应的报错和查看自定义组件AppDump/组件名/mdb_info.log里对应的ipmicmds是否注册到资源树上。
在组件的ipmi回调函数,打印下日志,是否进入了函数。
我稍后试一下,我测试了官方自带的get device id 指令,netfn 0x06 cmd 0x01指令,也是一样的现象
通过在指令后面新加-vvv或者-vvvv现象还是一样,通过参加例会,向华为技术人员沟通,建议在linux中使用ipmitool工具,后在虚拟机中安装最新版ipmitool并验证,指令响应稳定