如何获取ipmi fru原始数据?

how to obtain ipmi fru raw data?

有API获取ipmi fru原始字节吗? 我需要使用自定义 FRU 数据。我试过使用 freeipmi 库 - 但它似乎只有 API 来访问自定义字段并且没有公开 API 来读取整个 fru 缓冲区。

我不确定是否有库提供特殊的 API 函数来读取原始 FRU 数据。正如您所注意到的,freeipmi 和 openipmi 提供了提供 'cooked' 数据的便捷功能。

但是 openipmi(我认为是 freeipmi)也提供 API 发送原始命令和 IPMI 命令以获取原始 FRU 数据的功能。 Openipmi 具有函数 ipmi_send_command_addr()ipmi_mc_send_command(),它们向指定的目标发送 IPMI 命令。

要获取原始 fru 数据,您需要发出 IPMI 命令 "Get FRU Inventory Area Info" 以获取 FRU 长度,然后发出 IPMI 命令 "Read FRU data"。

在 FreeIPMI 1.5.2 中,bmc-device 中有一个新的 --read-fru 和 --write-fru 选项,允许您将 FRU 读出到文件中并将 FRU 原始文件写回特定的设备 ID。如果您查看 bmc-device 中的代码,也许该代码足以满足您的需求。

它特定于 read/write 特定的设备 ID。但是循环和一些错误处理应该能让您获得整个 FRU 缓冲区。

完全披露:我是 FreeIPMI 的维护者。