bd2025
(宝德计算机-王志杰)
2026 年4 月 30 日 07:22
1
背景:
装备按照客户要求需要写入Product Extra,但有时可能会出现写错的情况需要进行删除,BMCSet_FRUProductExtraFormat设置的为1 即Product域扩展信息格式设置为 value 格式
问题复现:
比如目前fru的Product Extra为:
Product Extra : 1234
Product Extra : 56
Product Extra : 1234
Product Extra : 56
Product Extra : 910C
Product Extra : MK104101
想把这些删掉,此时执行.\ipmitool.exe -I lanplus -U Administrator -P Admin@9000 -H <您的服务器IP> raw 0x30 0x90 0x04 0x00 0x03 0x07 0x00 0x00命令,命令执行回显执行成功,但是查看fru Product Extra依然存在,实际并未删除,并且如果继续写入相同值相同值会以追加的形式存在存在
做的尝试:
将BMCSet_FRUProductExtraFormat设置的为0,以key-value的形式进行删除,结果执行报错
./ipmitool.exe -I lanplus -U Administrator -P Admin@9000 -H xxx -C 17 raw 0x30 0x90 0x04 0x00 0x03 0x07 0x00 0x05 0x31 0x32 0x33 0x34 0x3d
Unable to send RAW command (channel=0x0 netfn=0x30 lun=0x0 cmd=0x90 rsp=0xc9): Parameter out of range
诉求:
期望在BMCSet_FRUProductExtraFormat为1 情况下 能够对Product Extra进行删除操作
答案内容由AI生成,仅供参考:
结论:只有完整重写 FRU 才能真正“删除”Product Extra 内容,无法通过 raw 命令动态删除单个条目。
点击此处查看详细分析解答
IPMI 删除 FRU Product Extra 的方法与问题分析
根据您提供的背景和问题描述,以下是关于在 BMCSet_FRUProductExtraFormat=1(即 Product Extra 为 value 格式)的情况下如何正确删除 FRU Product Extra 字段的详细解答。
问题核心总结
目标 :删除 FRU 的 Product Extra 内容。
当前配置 :BMCSet_FRUProductExtraFormat = 1,表示 Product 域的扩展信息使用 纯值平铺格式(value format) ,而非 key-value 格式。
尝试操作 :
使用原始 IPMI 命令 raw 0x30 0x90 0x04 ... 尝试清除数据,命令返回成功但实际未生效。
切换为 BMCSet_FRUProductExtraFormat=0 后,尝试按 key-value 方式删除,报错:Parameter out of range。
相关知识背景
FRU Product Extra 格式说明
依据文档搜索结果和知识图谱内容:
配置项
功能
BMCSet_FRUProductExtraFormat
控制 FRU Product 域中 Extra 字段的显示格式
0(默认)
使用 key-value 格式,如 OPN=03027700
1
使用 value 格式(纯值平铺),如直接写入 03027700
注意 :一旦设置为 value 格式后,无法自动还原为 key-value 格式,需重新定制。
为什么您的删除命令无效?
您执行了如下命令:
ipmitool raw 0x30 0x90 0x04 0x00 0x03 0x07 0x00 0x00
分析该命令结构(对照 IPMI FRU Write 协议):
字节
含义
0x30
NetFn: Storage (0x0A << 2),用于 FRU 操作
0x90
CMD: Write FRU Data
0x04
FRU Device ID = 4(通常是主板或特定板卡)
0x00
Logical Unit Number (LUN)
0x03
FRU 区域 ID:0x03 表示 Product Area
0x07
Manufacture ID(常见值 0xDB0700,0x07 表低字节)
0x00 0x00
偏移量 OffSet + Len(此处长度为 0)
此命令意图是向 Product 区域写入 0 长度数据 ,理论上可用于清空某段内容。
但实际失败的原因包括:
BMC 固件限制 :
多个文档指出:有些命令可能因功能不支持而失效,即使命令语法正确,返回“成功”也可能是假成功。
当前实现中,对 Product Extra 字段的清空操作可能未正确映射到 EEPROM 存储逻辑。
value 格式下无明确“字段名”可删 :
在 value 格式下,所有 Extra 条目被视为一连串字符串,无键名区分。
原始命令无法指定“删除哪个条目”,只能整体重写整个 Product Area。
需要完整重写整个 FRU Product 区域 :
要真正“删除”内容,必须读取现有 FRU → 修改 Product Area 中 Extra 数据 → 完整写回。
推荐解决方案:完整重写 FRU Product 区域
方法一:通过 ipmitool fru write 写入全新二进制文件(推荐)
步骤如下:
读取当前 FRU 数据到文件
ipmitool fru print 0 > fru_original.txt
或使用 raw 读取:
ipmitool raw 0x0a 0x11 0x00 # Read FRU Info
更可靠的工具是 ipmi_fru_parser 或厂商专用工具导出 .fru 二进制文件。
使用 ipmi-fru-edit 工具修改数据
安装开源工具 ipmi-fru-edit 或类似工具处理 .fru 文件。
# 示例:清空 Product Extra 字段
ipmi-fru-edit -f myfru.fru --product-extra-clear
写回修改后的 FRU 数据
ipmitool fru write 0 myfru_modified.fru
这样就能彻底清除 Product Extra 所有内容。
方法二:手动构造并写入新 FRU 数据(高级)
步骤:
获取当前 FRU 二进制数据(通过 ipmitool raw 0x0a 0x11 ... 分段读取)
解析 Product Area(起始偏移通常在 0x20~0x50 之间,参考 FRU spec)
清空 Product Extra 字段(Type/Length/Value 编码中 Type = 7 → FRU_PRODUCT_EXTRA)
重新计算校验和(Header Checksum 和 Area Checksum)
使用 ipmitool raw 0x30 0x90 ... 逐块写入修改后的内容(不推荐直接写全区域,风险高)
为什么切换 BMCSet_FRUProductExtraFormat=0 后仍失败?
您尝试的命令:
raw 0x30 0x90 0x04 0x00 0x03 0x07 0x00 0x05 0x31 0x32 0x33 0x34 0x3d
其中:
0x31 0x32 0x33 0x34 0x3d 是 ASCII 编码:"1234="
表示尝试按 key-value 删除键为 1234= 的条目
但失败原因:
IPMI 不支持“删除特定 key”的操作 。FRU 写入是“覆盖式”的,不是“增量更新”。
所以即使在 key-value 模式下,也无法通过发送 "key=" 来删除某一项;必须重写整个 Product Area。
最佳实践建议
操作
推荐方式
查看当前 FRU
ipmitool fru print 0
修改 Product Extra
使用 fru edit 工具或生成二进制再写入
删除全部 Extra
清空字段后重写整个 FRU
直接用 raw 命令删除
不可靠,多数 BMC 实现不支持动态删除条目
诉求回应:能否在 BMCSet_FRUProductExtraFormat=0 下删除 Product Extra?
不能直接通过 raw 命令删除某个 key-value 条目。
但可以在 key-value 模式下:
读取完整的 FRU 数据
移除不需要的条目(如 OPN=1234, SN=5678)
将新数据完整写回 FRU 存储区
这种方式是唯一可靠的方法。
总结与操作建议
正确删除 FRU Product Extra 的步骤:
# 1. 导出当前 FRU 数据(需借助工具链)
ipmitool fru print 0 > current.txt
# 2. 使用 ipmi-fru-edit 或厂商工具生成干净的 .fru 文件
# (确保 Product Extra 为空)
# 3. 写回修改后的 FRU 数据
ipmitool fru write 0 cleaned.fru
配置建议(如需灵活管理):
若客户频繁修改,建议统一使用 BMCSet_FRUProductExtraFormat=1(value 格式),然后通过脚本批量注入。
提供一个标准模板 .fru 文件用于快速恢复出厂设置。
避免使用 raw 命令进行精细化字段修改——这不是 IPMI 设计初衷。
参考资料
《【已评审】支持FRU扩展域Product域的Product Extra格式定制》(评审结论:采用 BMCSet_FRUProductExtraFormat 控制格式)
《frudata》文档:FRU 区域结构定义
ipmitool 官方手册:fru write 支持完整写入
结论:只有完整重写 FRU 才能真正“删除”Product Extra 内容,无法通过 raw 命令动态删除单个条目。