// 此模板仅供参考,如果不适用可以修改
问题描述
带内怎么升级 BMC
环境信息
-
操作系统:[如 Ubuntu 24.04]
-
软件版本:[如 OpenUBMC2509]
-
硬件配置:[如 CPU、内存等]
重现步骤
-
[第一步]
期望结果
[您希望实现什么]
实际结果
[实际发生了什么,包含错误信息]
尝试过的解决方案
[列出您已经尝试过的解决方案及结果]
// 此模板仅供参考,如果不适用可以修改
带内怎么升级 BMC
操作系统:[如 Ubuntu 24.04]
软件版本:[如 OpenUBMC2509]
硬件配置:[如 CPU、内存等]
[第一步]
[您希望实现什么]
[实际发生了什么,包含错误信息]
[列出您已经尝试过的解决方案及结果]
应该是这样写的:0xDB 0x07 0x00
而不是0xDB0700
答案内容由AI生成,仅供参考:
不建议仅靠带内
ipmitool raw命令完成BMC升级,尤其在生产环境。
最佳实践建议:
Image.hpm 固件包;ipmcget -d v 验证版本;ipmitool raw,请确保命令格式正确,并已预置固件。根据您提供的信息,以下是关于如何通过带内方式升级BMC的详细说明。本文将结合知识库中的实体、关系与文档内容,提供准确、结构化的操作流程和注意事项。
虽然“带内”(in-band)方式可以发送IPMI命令与BMC通信,但BMC固件升级通常不推荐完全通过带内通道完成,尤其是关键的Flash写入和重启阶段。原因如下:
然而,在某些场景下(例如自动化脚本、系统内部触发),可通过带内工具(如ipmitool)发起BMC升级流程。
| 实体 | 关联信息 |
|---|---|
BMC Upgrade |
支持通过IPMI命令进行升级(IPMI Command Upgrade) |
ipmitool raw 0x30 0x91 ... |
制造商定义的原始IPMI命令,用于启动固件升级 |
Image.hpm |
标准BMC固件升级包格式,常用于恢复或刷写 |
ipmcget -d v |
查询当前BMC固件版本信息 |
BMC Firmware |
目标升级对象,版本变更需重启生效 |
ForceResetBMC |
升级后强制重启BMC的方法 |
尽管提问是“带内怎么升级”,但应明确:升级动作虽可由带内发起,但真正执行应在带外稳定环境中进行。
iBMC管理 >> 固件升级 >> 固件更新
.hpm 或 .bin 固件文件(如 Image.hpm)使用带外连接到BMC的Shell环境执行命令:
ipmcget -d v
输出示例:
OpenUBMC INFO:
Version: Hello openUBMC/0.0.1@openUBMC.release/dev
Active KunlunBMC Version: 5.09.12.21
上传固件包(如 Image.hpm)后,执行升级命令:
# 示例:启动HPM升级包
hpm upgrade start Image.hpm
hpm upgrade status
ipmitool mc reset cold
注意:某些系统也支持
ForceResetBMC接口调用。
通过HTTP POST请求上传固件并触发升级,适合集成到运维平台。
ipmitool raw 命令升级您尝试使用的命令:
ipmitool raw 0x30 0x91 0x0007DB 0x07 0x00 0x06 0xAA
报错:
Given data "0x0007DB" is invalid.
数据长度错误
0x0007DB 是3字节厂商ID(华为为0x0007DB),但需按小端序拆分传递。DB 07 00,即:ipmitool raw 0x30 0x91 0xDB 0x07 0x00 0x07 0x00 0x06 0xAA
注:不同平台的命令格式可能不同(NetFn和Cmd可能变化)
缺少前期准备
依赖特定制造商实现
0x30 0x91 是OEM命令,不同厂商定义不同。ipmitool raw 使用流程(高级用法)若您确认设备支持该OEM命令,请按以下步骤操作:
ipmitool mc info
输出中:
Manufacturer ID: 2011
Manufacturer Name: Unknown (0x7DB)
→ 小端序为 DB 07 00
ipmitool raw 0x30 0x91 0xDB 0x07 0x00 0x07 0x00 0x06 0xAA
说明:
0x07 0x00 0x06可能为长度/标志位,具体需参考厂商文档
ipmitool raw 0x30 0x91 0xDB 0x07 0x00 0x07 0x00 0x06 0xCD
ipmitool mc reset cold
| 项目 | 建议 |
|---|---|
| 禁止断电 | 升级过程中断电可能导致BMC无法启动 |
| 固件包匹配 | 使用与硬件型号完全匹配的 Image.hpm 文件 |
| 备份配置 | 升级前导出BMC配置(用户、网络、策略) |
| 升级超时策略 | 设置 Custom_FirmwareUpdateTimeoutPolicy=1 以支持超时复位 |
| 日志收集 | 升级前执行 ipmcget -d v,便于问题追踪 |
| 厂商 | 十进制 | 十六进制 | 小端序(3字节) |
|---|---|---|---|
| 华为 | 2011 | 0x0007DB | DB 07 00 |
| 戴尔 | 674 | 0x0002A2 | A2 02 00 |
| IBM | 1168 | 0x000490 | 90 04 00 |
| 惠普 | 4156 | 0x00103C | 3C 10 00 |
| 联想 | 2327 | 0x000917 | 17 09 00 |
示例:华为设备启动升级命令:
ipmitool raw 0x30 0x91 0xDB 0x07 0x00 0x07 0x00 0x06 0xAA
ipmcget -d v
ipmitool mc info
journalctl -u bmc_upgrade
| 方式 | 是否可行 | 推荐度 | 说明 |
|---|---|---|---|
带内 ipmitool 发起升级 |
仅适用于触发命令,风险高 | ||
| Web界面升级 | 最安全、直观 | ||
| CLI命令行(带外) | 支持自动化 | ||
| Redfish API | 适合云平台集成 |
不建议仅靠带内
ipmitool raw命令完成BMC升级,尤其在生产环境。
最佳实践建议:
Image.hpm 固件包;ipmcget -d v 验证版本;ipmitool raw,请确保命令格式正确,并已预置固件。如您需要,我可以为您整理:
是否需要?
相关链接:
BMC日志有报错吗? 你要同时观察日志
我指的是bmc的后台日志,telnet连接后台查看/var/log/app.log,在发送命令的时候有什么打印没有
可参考文档 升级你的BMC - IPMI命令升级章节升级你的BMC | 文档中心 | openUBMC
参考IPMI接口说明的14.67 Upgrade Component
另外带内通过redfish接口升级BMC应该简单点,IPMI命令不好敲
还有为什么不从带外直接升级,做装备开发吗?
测试用例要求测试带内升级BMC
带内怎么通过redfish升级BMC 有SOP 吗 谢了
下周我写个经验贴吧
好的 谢谢了
好的
今天有时间写 SOP吗 谢了
我记得带内升级不是有个工具叫urest吗,安装在os下的
写了基于IPMI的: 【经验分享】带内固件升级方法汇总 - 交流互助区 - openUBMC 论坛