在使用openubmc写fru信息时,碰到两个问题
①
使用ipmitool fru命令查看fru信息,有几个器件的fru报Device not present:
这几个fru里目前是没有数据的,因此想试试通过ipmitool fru write命令写入数据后问题会不会恢复。但是发现这些fru无法通过ipmittool fru write命令写入数据:
mdbctl查看eeprom对象没发现问题,且eeprom的写保护是关闭的
请问
Device not present这个问题是什么原因,要如何恢复?
②
有一个fru通过ipmitool fru write写入了非法格式和非法字符的数据
之后要再通过
ipmitool fru write\edit写入正常数据,发现无法写入,会卡死在
Writing new FRU.打印:
像这样的情况要如何把fru数据恢复?
问题2 我通过ClearElabelData命令,把fru恢复了
问题①补充
eeprom的数据可以读到:

ipmitool fru print 0,报 Device not present时,后台打印如下:

跟踪代码没有找到ipmi_read_frudata函数的C实现,因此还确认不了报错的直接原因

通过硬件烧fru.bin进eeprom里,问题就修复了
1 个赞
ocy
(wuzhou-ouchangyun)
7
还有一个疑问fru.bin是怎么生成的,有相关文档吗?
ocy
(wuzhou-ouchangyun)
10
通过上诉工具,结合规范文档,能够成功修改fru信息
对于上面链接中我提的问题,是因为eeprom中不只有fru信息,还存在其他的信息。根据csr中FruData对象的StorageType值的不同,这些信息的偏移也不同,比如"StorageType": "TianChi"时,EEPROM前128个字节为天池头,从129字节开始为fru信息。因此,如果直接通过烧录器将fru.bin烧录进EEPROM,会导致缺少天池头,进而导致读出的fru信息与烧录的fru.bin信息不一致
2 个赞
你好,想问下“EEPROM前128个字节为天池头”这种情况,是需要烧录的时候跳过128字节吗?
杰哥,我这边情况好像跟你一样,我这边通过硬件烧过依然是如此,请问你这个FRUdata对象的具体配置是什么

参考这个,EEPROM的前128个字节要配置为天池头。
可以通过bingo创建csr的bin文件,然后把bin文件烧写进EEPROM,就有天池头了。
然后再把fru信息从EEPROM的第128个字节开始写入进去,就可以了。
我现在走的是非天池类型,是不是说我的"StorageType"不应该是tianchi,至少应该是 EepromV2或者MCU
不确定其它类型,比如EepromV2有没有头部信息,还是在frudata组件里确认一下