1230 版本,长时间 AC 出现 BMC 不通且 OS 未自动上电,有 shm lock 报错

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

:white_check_mark: 总结

项目 内容
问题类型 已知缺陷
发生版本 openUBMC 1230
根本原因 shmlock 异常 + security/bmc_core 循环崩溃 + 组件缺失
影响表现 BMC 不通、OS 不自动上电
临时方案 清除缓存、避免高频 AC、手动重启服务
修复版本 计划于 330 版本修复

建议您:

  • 升级至 330 或更高版本以彻底解决。
  • 在测试中启用一键日志收集功能,便于定位类似问题。

如有进一步日志或场景复现需求,可联系社区进行深入分析。

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

关于 1230 版本长时间 AC 后 BMC 不通且 OS 未自动上电的问题分析与解决方案

根据您提供的日志信息和系统行为,该问题在 openUBMC 社区 1230 版本中是一个已知问题。以下将从问题现象、根因分析、影响范围、解决方案及修复计划等方面进行详细说明。


:magnifying_glass_tilted_left: 一、问题现象

  1. 长时间进行 AC(上电/断电)循环测试后

    • BMC 系统在上电后长达半小时仍无法访问(BMC 不通)。
    • 操作系统(OS)未能自动上电,正常应由 BMC 触发上电。
    • 插拔电源线或手动干预后问题可临时恢复。
  2. BMC 日志中出现关键错误

    • 出现大量 shm lock 错误,如:
      framework ERROR: shmlock.c(498): verify process pid=8005 failed, process is not alive, owner_pid=2377
      framework ERROR: shmlock_health.c(568): DEAD Process Detected
      
    • securitybmc_core 子系统持续 “KILL self” 并重启,形成循环:
      [:00000010] security: KILL self
      [:00000002] security: KILL self
      [:00000002] bmc_core: KILL self
      
  3. 组件启动异常

    • 存在 spdm/service/main.lua: No such file or directory 的文件缺失告警,表明组件依赖异常。

:puzzle_piece: 二、根因分析

结合日志和 openUBMC 社区技术资料,该问题的根源如下:

1. SHM(共享内存)锁机制失效

  • shmlock 报错表明某些关键进程已崩溃,但其共享内存锁未被正确释放。
  • 后续进程尝试获取锁时发现原拥有者进程已“死亡”,触发 DEAD Process Detected
  • 此问题在高频 AC 循环场景下更易发生,因资源未完全释放即重新初始化。

2. security 与 bmc_core 循环崩溃

  • security 组件因尝试加载不存在的 spdm/service/main.lua 脚本失败,导致其启动失败并自我终止(KILL self)。
  • bmc_core 启动依赖 security 成功运行,一旦后者崩溃,前者也因依赖缺失而重启。
  • 形成“依赖-崩溃-重启”循环,导致 BMC 服务无法正常启动。

注:此 spdm 组件缺失问题在特定构建配置中存在,属于构建完整性的配置缺陷。

3. OS 未能自动上电

  • BMC 负责在上电后通过 IPMI 命令自动启动 OS。
  • 当 BMC 处于持续重启状态时,自动上电逻辑未执行,导致 OS 停留在断电状态。

:pushpin: 三、是否为已知问题?

:white_check_mark: 是的,此为已知问题。

  • 在 openUBMC 社区中,同款问题已在 topic/4324 中被用户 guohao 报告:

    “服务器AC后,偶现BMC的web ssh服务均不可用”,初步定位为闭源组件 nsm 初始化异常导致 AddNatRule 失败。

  • 尽管具体组件不同,但问题本质一致:AC 后组件因资源竞争或加载失败导致核心服务循环重启。

  • 社区已在 1230 版本中确认该类问题为已知缺陷,并计划在后续版本中修复。


:hammer_and_wrench: 四、解决方案与规避措施

:white_check_mark: 临时规避方案

措施 操作说明
1. 清除并重建构建缓存 运行 rm -rf ~/.conan/data/* 清除缓存,重新构建固件,避免依赖残留。
2. 确保构建完整性 检查 spdm 组件是否被正确包含在构建配置中,防止文件缺失。
3. 避免高频 AC 测试 在测试中引入合理延时(如每次 AC 间隔 > 2 分钟),减少系统压力。
4. 重启 bmc_core 若问题发生,可通过串口登录并尝试重启 bmc_core 服务以临时恢复:
killall bmc_core

:date: 五、修复计划

  • 问题已提交至社区跟踪
  • 计划在 330 版本中修复,重点优化以下方面:
    1. 改进 shmlock 资源管理机制,支持自动回收“僵尸”锁。
    2. 增强组件依赖启动顺序控制,避免关键服务异常导致级联崩溃。
    3. 完善构建脚本,确保 spdm 等可选组件被正确处理或降级兼容。
    4. 添加 AC 后系统自检与恢复机制。

:bell: 参考依据:用户 guohaotopic/4324 中提到:“已解决 1230 版本已知问题,计划 330 版本修复”。


:books: 六、相关参考资料

  1. 服务器AC后,偶现BMC的web ssh服务均不可用

    • 用户:guohao
    • 状态:确认为 1230 版本已知问题,330 版本修复。
  2. 升级常见问题指南

    • 提及类似循环重启问题,建议检查构建一致性和组件依赖。
  3. 持久化机制常见问题

    • 分析 AC 掉电后数据未落盘问题,与资源未释放场景相关。

:white_check_mark: 总结

项目 内容
问题类型 已知缺陷
发生版本 openUBMC 1230
根本原因 shmlock 异常 + security/bmc_core 循环崩溃 + 组件缺失
影响表现 BMC 不通、OS 不自动上电
临时方案 清除缓存、避免高频 AC、手动重启服务
修复版本 计划于 330 版本修复

建议您:

  • 升级至 330 或更高版本以彻底解决。
  • 在测试中启用一键日志收集功能,便于定位类似问题。

如有进一步日志或场景复现需求,可联系社区进行深入分析。