背景
很多固件的升级会影响业务运行,客户在升级前会进行很多准备工作,且升级次数是有限的。
如果固件升级是,因为升级条件不具备、升级通道故障等导致升级失败,会导致客户升级前准备工作浪费,对客户的影响较大。
如果BMC提供升级前的检查接口,客户在升级准备工作前就可以做一下勘探,勘探到升级前检查有失败时,优先处理失败,这样就可以有效减少实际升级失败的影响。
关联ISSUE
暂无
整体方案
评审点 新增OEM IPMI命令,用于升级前预检查/查询结果
详细描述
命令名称: Prepare Update Check
命令说明: 启动升级前预检查
命令权限: BasicSetting
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
- 请求:
ipmitool raw 0x30 <ManufacturerID> <SubCmd> - 响应:
<ManufacturerID>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 30h |
| Cmd | 93h |
| 1:3 | Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。 |
| 4 | 96h |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code |
| 2:4 | Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。 |
命令示例:
样例:开始触发升级前预检查
- 请求:
ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x96 - 响应:
0xdb 0x07 0x00
命令名称: Prepare Update Check Status
命令说明: 获取升级前预检查结果
命令权限: ReadOnly
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
- 请求:
ipmitool raw 0x30 <ManufacturerID> <SubCmd> <Index> - 响应:
<ManufacturerID> <SubCmd> <Length> <Data>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 30h |
| Cmd | 93h |
| 1:3 | Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。 |
| 4 | 97h |
| 5:6 | Index,固件索引 |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code |
| 2:4 | Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。 |
| 5:6 | Length,支持升级前预检查的固件总个数 |
| 7 | ComponentIdentifierLength,固件唯一标识长度 |
| 8:N | 固件唯一标识 |
| N+1 | 固件升级前预检查结果:0 - 固件健康 1 - 固件当前不支持升级 0xff - 固件在检查中 |
命令示例:
样例1:查询升级前预检查结果
- 请求:
ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x97 0x00 0x01 - 响应:
0xdb 0x07 0x00 0x01 0x00 0x12 0x42 0x43 0x55 0x31 0x43 0x70 0x75 0x42 0x6f 0x61 0x72 0x64 0x31 0x43 0x50 0x4c 0x44 0x31 0x00 - 支持升级前预检查的固件总共有一个,固件唯一标识长度为18,固件唯一标识为BCU1CpuBoard1CPLD1,预检查结果为固件健康