答案内容由AI生成,仅供参考:
结论
当前无法开机的最可能原因是:
openUBMC 固件未正确配置电源控制逻辑(如 btn_lock 锁定、fructl 缺失配置),导致 CPLD 未接收到上电信号,CPU 侧根本没有加电。
即使 BMC 能识别 CPU 温度(通过 IPMI 或 I2C 读取传感器),也不代表 CPU 子系统已供电或启动。
点击此处查看详细分析解答
双路 Kunpeng 920 模块在 openUBMC 下无法开机问题分析与解决
根据您提供的信息,系统从 iBMC 升级至 openUBMC 后,尽管 BMC 能够正确识别两颗 HiSilicon HUAWEI Kunpeng 920 5220 CPU(包括型号、主频、核数及温度等),但无法完成 CPU 侧开机启动。该问题常见于 openUBMC 迁移场景中,尤其在使用社区版 SR 文件和非官方适配固件时。
问题现象总结
BMC 系统运行正常:openUBMC 成功启动,Web 界面可访问。
CPU 信息被识别:BMC 可通过传感器检测并显示双 CPU 的基本信息(型号为 Kunpeng 920 5220,32 核/32 线程)及温度。
CPU 侧无输出:连接串口无任何打印信息,操作系统未启动。
升级路径:由 iBMC 升级至 openUBMC,可能未经过完整迁移包处理。
BCU 配置:使用了社区提供的 .sr文件(14100513_00000001020302024339.sr)用于 BCU 配置。
根本原因分析
结合知识库中的案例和技术文档,以下是可能导致此问题的几个关键因素:
1. 电源控制信号未释放(CPLD/BMC 控制锁死)
在类似问题中(参考文档 #1),用户反馈 CPU 侧“没有上电”,导致无法启动。
- BMC 控制上电逻辑:服务器上电通常由 BMC 通过发送控制信号(如
SEL_GPIO或BTN_LOCK)给 CPLD 来触发。 - openUBMC 默认逻辑差异:部分 openUBMC 版本默认将电源按钮锁定(
btn lock),或未正确初始化上电流程。 - 关键命令缺失:若未配置
fructl组件中的poweron()流程,或未调用push_button_short(),将无法模拟短按开机。
2. BCU SR 文件不匹配或不完整
- 使用社区提供的
.sr文件可能存在以下风险:- 缺少必要的 Accessor、Scanner 或 Power Button 配置;
- 未正确映射
BCUIndex,导致 BMC 不知道如何控制对应硬件; - 未启用 电源相关对象(FruCtrl),导致无法触发上下电流程。
3. 缺少 Transition Package 或迁移包支持
- iBMC 到 openUBMC 的升级需使用 Transition Package(过渡固件包) 进行桥接。
- 若直接刷写 openUBMC 固件而跳过过渡步骤,可能导致:
- BIOS 启动流程被阻断;
- BMC 和 CPU 板之间的通信异常;
- 无法解锁上电条件。
4. BIOS Flash 选择信号受控于 BMC
- 如知识库所述,某些硬件平台中 BIOS Flash 的选择由 BMC 控制(如
SEL_GPIO0信号)。 - openUBMC 固件可能默认将该信号切换至 BMC 自身侧,导致 CPU 无法读取 BIOS 固件,进而无法启动。
解决方案与建议步骤
请按顺序执行以下排查与修复操作:
步骤 1:确认是否真正执行了上电动作
检查 openUBMC 是否具备上下电功能:
# 查看 fructl 日志,确认是否有上电请求
journalctl -u fructl.service | grep -i poweron
# 尝试手动触发开机(若有 CLI 工具)
ipmitool chassis power on
如果返回成功但无反应,说明命令已被接收,但底层未执行。
步骤 2:检查并配置 VPD 中的电源控制对象
确保 VPD 配置中包含完整的电源控制对象,例如:
{
"FruCtrl": {
"PowerButton": {
"Accessor": "cpld_accessor",
"Scanner": "button_scanner"
},
"PgSignal": {
"Scanner": "pg_scanner"
}
}
}
- 确保
.sr文件中定义了power_button和对应的Accessor; - 若未定义,请替换为官方支持版本或适配当前平台的 SR 文件。
步骤 3:检查并修改 BTN_LOCK 状态
问题定位:某些 openUBMC 固件中,开机按钮被逻辑锁定(btn lock),除非明确设置为非 lock 状态。
解决方法:
- 联系您的硬件团队或 CBU 开发人员,确认是否有
BTN_LOCK寄存器; - 修改相关逻辑,默认设置为 非锁定状态;
- 或通过命令临时解锁:
# 示例:通过 SMC 命令与 CPLD 通信(需具体命令字)
smc_tool --cmd unlock_power_button
参考知识库中的回复:“改逻辑命令字默认值改成非lock状态,就可以按键上电”。
步骤 4:验证是否因 SEL_GPIO 导致 CPU 未获权访问 BIOS
- 咨询硬件工程师:
- 确认 BIOS Flash 的
SEL_GPIO0是否由 BMC 控制; - 若是,请确认 openUBMC 是否修改了该 GPIO 的方向;
- 确认 BIOS Flash 的
- 临时测试方案:在 iBMC 下升级 BIOS 后,再升级 openUBMC,避免 BMC 在升级过程中修改 Flash 选择信号。
步骤 5:使用正确的 Transition Package 进行迁移
强烈建议:不要直接刷 openUBMC,而应先刷 Transition Package。
- 获取适配 S920X20 / Kunpeng 920 Module 的 Transition Package;
- 先通过 iBMC 界面刷入 Transition 固件;
- 再刷入目标 openUBMC 版本(如 25.09);
- 此过程可确保签名、分区、兼容性层正确加载。
步骤 6:检查 SR 文件是否适配当前硬件
您使用的 SR 文件为社区提供,建议核对以下内容:
| 检查项 | 是否存在 |
|---|---|
board_name 是否为 S920X20 |
|
是否包含 FruCtrl 对象配置 |
|
是否定义了 power_button 的 Accessor 和 Scanner |
|
BCUIndex 是否正确定义 |
推荐使用 openUBMC 官方支持的 SR 文件模板:
https://repo.openubmc.cn/ 或 AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台
相关参考资料
结论
当前无法开机的最可能原因是:
openUBMC 固件未正确配置电源控制逻辑(如 btn_lock 锁定、fructl 缺失配置),导致 CPLD 未接收到上电信号,CPU 侧根本没有加电。
即使 BMC 能识别 CPU 温度(通过 IPMI 或 I2C 读取传感器),也不代表 CPU 子系统已供电或启动。
推荐操作顺序
- 回退至 iBMC 验证硬件可正常开机;
- 获取官方支持的 Transition Package;
- 使用适配的
.sr文件(含完整电源控制配置); - 刷入 Transition → 再刷 openUBMC;
- 检查并解除
btn_lock或SEL_GPIO锁定; - 执行
ipmitool chassis power on测试开机。
如仍有问题,建议提交日志至 openUBMC 社区论坛,并附上:
journalctl -u fructl日志vpd show输出- 使用的
.sr文件内容摘要
如有更多硬件细节(如 CPLD 型号、板本号),可进一步精准定位。