答案内容由AI生成,仅供参考:
总结
| 你的尝试 |
实际用途 |
正确方法 |
0x30 0x90 0x20 … |
Set DFT Mode(非升级) |
使用 0x32 0x02/0x03 或 0x30 0x91 命令流程 |
推荐直接使用 openUBMC 社区已验证的 0x32 命令组合,对于 BIOS 升级只需调整命令中的参数即可。务必注意权限、时机与固件包签名要求。
如果仍有问题,欢迎提供具体的执行回显和日志,可以进一步定位。
点击此处查看详细分析解答
你好!根据你提供的上下文和相关社区讨论,我需要先澄清一点:你提到的两条命令 ipmitool raw 0x30 0x90 0x20 0xdb 0x07 0x00 0x01 和 0x00 对应的功能是 Set DFT Mode(使能/禁止 DFT 命令接口),属于诊断测试接口的开关,并非用于使能带内固件升级,因此自然达不到期望的升级效果。
下面为你整理 openUBMC 环境下,正确用于带内升级 BMC/BIOS 固件的 IPMI RAW 命令,信息均来自知识库中的社区经验与文档说明。
一、openUBMC 带内升级 BMC 固件的推荐命令
在 openUBMC 平台(如 25.03+ 版本)上,昆仑太科_王亚洲 在论坛(话题 #2446)中提供了已验证的通用的 IPMI RAW 升级流程,分为两步:
第一步:上传固件包(指定路径)
ipmitool raw 0x32 0x02 0x00 0x02 0x00 0x00 0x01 <文件路径的 ASCII 十六进制字节>
示例(假设固件包位于 /tmp/bmc_1711.hpm):
ipmitool raw 0x32 0x02 0x00 0x02 0x00 0x00 0x01 0x2f 0x74 0x6d 0x70 0x2f 0x62 0x6d 0x63 0x5f 0x31 0x37 0x31 0x31 0x2e 0x68 0x70 0x6d
其中最后的字节序列是路径字符串的 ASCII 编码(/tmp/bmc_1711.hpm)。
第二步:触发升级激活动作
文件上传完成后,执行:
ipmitool raw 0x32 0x03 0x00 0x02 0x00 0x00 0x01
该命令会启动 BMC 固件烧写与自动重启流程。
二、另一种常见标准命令(需厂商 ID)
在话题 #4678 的“带内升级标准流程”中也提到了另一组命令,适用于联想等厂商,且需要传入正确的厂商 ID(小端序 3 字节):
- 开始升级:
ipmitool raw 0x30 0x91 <厂商ID 3字节> 0x07 0x00 0x06 0xAA
- 设置自动重启:
ipmitool raw 0x30 0x91 <厂商ID 3字节> 0x07 0x00 0x06 0xCD
例如联想(厂商 ID = 0x0007DB,小端序为 DB 07 00):
ipmitool raw 0x30 0x91 0xDB 0x07 0x00 0x07 0x00 0x06 0xAA
但对于 openUBMC 社区版本,强烈建议优先使用第一部分提到的 0x32 0x02 / 0x32 0x03 命令,这是直接由社区验证可用的方法。
三、BIOS 固件的带内升级
同一回复中指出:“其他固件差不多,需要修改命令里的参数”。因此 BIOS 升级的命令框架与 BMC 类似,同样是使用 0x32 系列命令,但需要调整其中的 资源 ID(ResourceId) 或文件路径。具体参数可参考 OEM 文档或从社区获取。当前知识库中没有给出 BIOS 升级的完整 RAW 命令实例,但你可以先通过 BMC 升级命令掌握流程,再尝试修改对应 ResourceId 进行 BIOS 升级。
四、执行前的重要注意事项
-
权限要求
带内执行上述 RAW 命令通常需要 Administrator 或 Operator 权限(IPMI 2.0 规范)。如果出现 Insufficient privilege 报错,请确保已经在对应的通道上为用户授予了足够权限(社区版本可能需要显式指定通道号)。
-
时机限制
不能在系统 POST 阶段升级 BMC(话题 #4902 中明确提到“升级BMC时正处于POST阶段,不允许升级”),否则升级会失败。建议在 OS 完全启动后或系统处于空闲电源状态时操作。
-
工具版本
社区推荐使用 ipmitool 1.8.18 及以上版本(话题 #2654),低版本可能因命令封装或安全策略导致部分功能不可用。
-
固件包要求
- 社区包(community 包)需要设置
community_enable:true 并跳过签名校验;
- 非社区包必须进行加密和签名,否则会出现
Upgrade write config file failed 等错误(搜索结果 #5)。
-
文件路径正确性
确保固件包已上传到设备端,路径无误且存在于 /tmp 等可访问目录,并具备可读权限。
-
升级过程中不可中断
BMC 升级期间禁止断电、断 SSH 或重启,否则可能导致 BMC 变砖。
五、如果命令仍无效
- 检查 BMC 固件版本与安全策略:某些 RAW 命令被硬编码禁用,需联系厂家或升级到支持该命令的固件版本。
- 参考 社区带内鉴权失败问题分析(搜索结果 #1):可能需要显式指定通道(如
-m 1 等参数)才能正确绑定权限。
总结
| 你的尝试 |
实际用途 |
正确方法 |
0x30 0x90 0x20 … |
Set DFT Mode(非升级) |
使用 0x32 0x02/0x03 或 0x30 0x91 命令流程 |
推荐直接使用 openUBMC 社区已验证的 0x32 命令组合,对于 BIOS 升级只需调整命令中的参数即可。务必注意权限、时机与固件包签名要求。
如果仍有问题,欢迎提供具体的执行回显和日志,可以进一步定位。
命令解析 :
1、Length
0x8E:二进制 1000 1110
bit[7:0 ]含义
bit7:1,升级完后自 动重启生效
bit6-bit0:绝对路径名长度,包含/tmp/
2、
绝对路径名,转换 为ASCII码
例如 /tmp/image.hpm(BMC的 /tmp/目录)
ipmitool raw 0x30 0x91 0xdb 0x07 0x00 0x06 0xaa 0x00 0x00 0x00 0x8E 0x2f 0x74 0x6d 0x70 0x2f 0x69 0x6d 0x61 0x67 0x65 0x2e 0x68 0x70 0x6d
你可能误会了我的意思,我的目的是通过ipmi raw命令 ,可以随时开启或者关闭用户在带内升级bmc/bios固件的权限。即系执行了关闭用户带内升级权限命令后,用户在带内升级固件时会报失败,执行开启用户带内升级权限命令后,用户才可以在带内升级固件。
有没有这方面相关的ipmi raw命令。谢谢~
你好,我的目的是通过ipmi raw命令 ,可以随时开启或者关闭用户在带内升级bmc/bios固件的权限。即系执行了关闭用户带内升级权限命令后,用户在带内升级固件时会报失败,执行开启用户带内升级权限命令后,用户才可以在带内升级固件。
有没有这方面相关的ipmi raw命令。谢谢~
L_Ling
(lixiaoning)
6
当前问题是要设置BT通道的权限,当前有redfish接口可以设置,只能设置整个通道的权限,请参考:
uri:/redfish/v1/Managers/:managerid/SecurityService
property:IPMIChannelAccess