OS上电失败

问题描述

上电OS报错

~ ~ # ipmcset -d pow -v 1
WARNING: The operation may have many adverse effects.
Do you want to continue?[Y/N]:y
The request failed due to an internal service error.  The service is still operational.
Request failed.

BMC启动时的报错日志

2026-07-20 10:03:08.994438 fructrl NOTICE: fructrl_obj_mgnt.lua(279): [System:1]call PowerCtrl method, PowerCtrlType=PowerCycle, RestartCause=ChassisControlCommand, FruID=0.
2026-07-20 10:03:08.994438 fructrl NOTICE: fructrl_obj_mgnt.lua(279): [System:1]call PowerCtrl method, PowerCtrlType=PowerCycle, RestartCause=ChassisControlCommand, FruID=0.
2026-07-20 10:03:08.996098 fructrl NOTICE: fructrl_obj_mgnt.lua(41): host 1 call power ctrl, ctrl_type=PowerCycle, reason=ChassisControlCommand, fruid=0
2026-07-20 10:03:08.996098 fructrl NOTICE: fructrl_obj_mgnt.lua(41): host 1 call power ctrl, ctrl_type=PowerCycle, reason=ChassisControlCommand, fruid=0
2026-07-20 10:03:08.999743 unknown_service ERROR: mdb_client.lua(241): rpc call PowerCtrl has error BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/fructrl/lualib/fructrl_obj_mgnt.lua:43: attempt to index field 'powerapi' (a nil value)
2026-07-20 10:03:08.999743 unknown_service ERROR: mdb_client.lua(241): rpc call PowerCtrl has error BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/fructrl/lualib/fructrl_obj_mgnt.lua:43: attempt to index field 'powerapi' (a nil value)
2026-07-20 10:03:14.835097 fructrl NOTICE: fructrl_obj_mgnt.lua(279): [System:1]call PowerCtrl method, PowerCtrlType=On, RestartCause=ChassisControlCommand, FruID=0.
2026-07-20 10:03:14.835097 fructrl NOTICE: fructrl_obj_mgnt.lua(279): [System:1]call PowerCtrl method, PowerCtrlType=On, RestartCause=ChassisControlCommand, FruID=0.
2026-07-20 10:03:14.835659 fructrl NOTICE: fructrl_obj_mgnt.lua(41): host 1 call power ctrl, ctrl_type=On, reason=ChassisControlCommand, fruid=0
2026-07-20 10:03:14.835659 fructrl NOTICE: fructrl_obj_mgnt.lua(41): host 1 call power ctrl, ctrl_type=On, reason=ChassisControlCommand, fruid=0
2026-07-20 10:03:14.840862 unknown_service ERROR: mdb_client.lua(241): rpc call PowerCtrl has error BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/fructrl/lualib/fructrl_obj_mgnt.lua:43: attempt to index field 'powerapi' (a nil value)
2026-07-20 10:03:14.840862 unknown_service ERROR: mdb_client.lua(241): rpc call PowerCtrl has error BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/fructrl/lualib/fructrl_obj_mgnt.lua:43: attempt to index field 'powerapi' (a nil value)
2026-07-20 10:03:18.469482 fructrl NOTICE: fructrl_obj_mgnt.lua(279): [System:1]call PowerCtrl method, PowerCtrlType=On, RestartCause=ChassisControlCommand, FruID=0.
2026-07-20 10:03:18.469482 fructrl NOTICE: fructrl_obj_mgnt.lua(279): [System:1]call PowerCtrl method, PowerCtrlType=On, RestartCause=ChassisControlCommand, FruID=0.
2026-07-20 10:03:18.469889 fructrl NOTICE: fructrl_obj_mgnt.lua(41): host 1 call power ctrl, ctrl_type=On, reason=ChassisControlCommand, fruid=0
2026-07-20 10:03:18.469889 fructrl NOTICE: fructrl_obj_mgnt.lua(41): host 1 call power ctrl, ctrl_type=On, reason=ChassisControlCommand, fruid=0
2026-07-20 10:03:18.474268 unknown_service ERROR: mdb_client.lua(241): rpc call PowerCtrl has error BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/fructrl/lualib/fructrl_obj_mgnt.lua:43: attempt to index field 'powerapi' (a nil value)
2026-07-20 10:03:18.474268 unknown_service ERROR: mdb_client.lua(241): rpc call PowerCtrl has error BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:203: ./opt/bmc/libmc/lualib/sd_bus/object.lua:317: ./opt/bmc/apps/fructrl/lualib/fructrl_obj_mgnt.lua:43: attempt to index field 'powerapi' (a nil value)
2026-07-20 10:04:35.603783 fructrl NOTICE: init.lua(79): register to bus for class, error name: kepler.class.ClassNotDefined

环境信息

  • 软件版本:OpenUBMC2512 SP1

答案内容由AI生成,仅供参考:

总结

当前问题的主要线索是 powerapi 字段为 nil,直接原因是 fructrl 组件在调用上下电功能时缺少该模块。根本原因可能是上下电所需对象未完全分发,或 fructrl 的依赖初始化未完成。请按照上述定位步骤逐一检查,尤其关注 “create other objects completed”ClassNotDefined 相关的日志输出,以确定具体缺失的对象或类。若问题仍无法解决,建议将完整的一键日志发送给 FW 团队做进一步分析。

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

问题分析

根据您提供的日志,OS 上电失败时 BMC 报出的核心错误是:

unknown_service ERROR: mdb_client.lua(241): rpc call PowerCtrl has error BMC.Error.Unknow: .../fructrl_obj_mgnt.lua:43: attempt to index field 'powerapi' (a nil value)

这个错误表明 fructrl 组件在执行上下电控制时,试图访问 powerapi 字段,但该字段的值为 nil(即未定义/未加载)。

可能原因(基于知识库内容)

  1. 上下电所需对象未分发

    • 根据《上下电常见问题定位指导》,执行上下电命令报“内部错误”时,可能原因是 fructrl 缺少必要的对象。fructrl 要提供上下电功能,必须拥有 FruCtrl / PGSignal / PowerButton / ThermTrip / RecordFault 这些对象,缺少任意一个都会导致功能异常。
    • 可以通过搜索日志中的 “create other objects completed” 来判断这些对象是否全部分发成功。
  2. powerapi 模块未正确加载

    • 《上下电常见问题指南》明确指出:凡是经过 BMC 的上下电命令,必定会经过 powerapiexecute 这两个文件。日志中 powerapi 字段为 nil,说明该模块未被 fructrl 成功引用或初始化,从而导致后续所有上下电操作(PowerCycle、On)全部失败。
  3. 启动时存在其他组件异常

    • 日志中还出现了 init.lua(79): register to bus for class, error name: kepler.class.ClassNotDefined。这表示某个类在注册时未定义,可能影响了 fructrl 相关对象的创建,进而间接导致了 powerapi 不可用。

定位建议

结合知识库中的信息,您可以按照以下步骤进一步排查:

  1. 检查对象分发情况:在一键日志收集中,查找 fructrl 组件相关日志,搜索 “create other objects completed”,确认 FruCtrl、PGSignal、PowerButton、ThermTrip、RecordFault 对象是否全部创建。如果缺少某个对象,需检查对应配置或依赖组件是否正常启动。

  2. 确认 fructrl 初始化状态:回顾 BMC 启动阶段的日志(尤其是从 2026-07-20 10:03:08 之前的日志),检查 fructrl 是否有其他加载失败或初始化报错的信息。

  3. 检查上电锁状态:使用命令 ipmcget -t main -d poweronlock 查询是否处于上电锁定状态。如果回显为 locked,说明存在上电超时事件,也会阻止上电命令(《上下电配置指导》提及)。

  4. 排查 ClassNotDefined 错误:该错误可能指向某个依赖的类未正确加载,建议结合完整的 BMC 启动日志,确认是哪个类无法定义,并检查对应模块的版本或配置是否完整。

总结

当前问题的主要线索是 powerapi 字段为 nil,直接原因是 fructrl 组件在调用上下电功能时缺少该模块。根本原因可能是上下电所需对象未完全分发,或 fructrl 的依赖初始化未完成。请按照上述定位步骤逐一检查,尤其关注 “create other objects completed”ClassNotDefined 相关的日志输出,以确定具体缺失的对象或类。若问题仍无法解决,建议将完整的一键日志发送给 FW 团队做进一步分析。