openbmc开发24:添加inventory信息到ipmi

前面说过如何添加FRU信息到ipmi,本文说明说明如何将添加inventory信息到ipmi中。

这里的inventory是按照script下inventory-sensor-example.yaml文件来说明的,其实sensor、fru也有inventory(可以参考meta-quanta/meta-q71l/q71l-ipmi-inventory-map-native.bb是fru的inventory)。其他的machine下也有xxx-fru-inventory.yaml、xxx-sensor-inventory.yaml 等,这些实际和fru、senor的yaml文件内容一致的,如果看对应的bb文件,这些带inventory的yaml文件最终是复制到生成了sensor-gen.cpp或者fru-gen.cpp所需要的yaml文件中,本文主要是的是sel的inventory,其实就是配置离散量的sel信息生成。

1 ipmi配置文件转换成cpp

在软件包下有一个scripts文件夹,这里边是python脚本、模板、示例yaml文件以及使用说明,本内容介绍inventory的yaml文件。在configure阶段,通过autoconf工具,解析configure.ac以及Makefile.am生成Makefile文件,在编译阶段执行inventory-sensor.py的python脚本,根据inventory-sensor.yaml.yaml文件生成finventory-sensor-gen.cpp文件。
scripts

2 配置ipmi配置文件

指定自己的sel的yaml文件,有两种方法:
方法一:
通过安装覆盖的方式。参考meta-ibm/meta-romulus。
1 、在your-layer下创建recipes-phosphor/configuration文件夹,创建xxx-yaml-config文件夹和xxx-yaml-config.bb文件,xxx-yaml-config文件夹中存放yaml文件,xxx-yaml-config.bb文件中SRC_URI指定该yaml文件。xxx-yaml-config.bb文件内容如下:

SUMMARY = "YAML configuration for bmc"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"

inherit allarch
SRC_URI = "file://bmc-ipmi-inventory-sensors.yaml"

S = "${WORKDIR}"

do_install() {
	install -m 0644 -D bmc-ipmi-inventory-sensors.yaml \
        ${D}${datadir}/${BPN}/ipmi-inventory-sensors.yaml
}

FILES_${PN}-dev = "  ${datadir}/${BPN}/ipmi-inventory-sensors.yaml "

ALLOW_EMPTY_${PN} = "1"

configuration
configure
2、在your-layer/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend文件中添加如下内容:

EXTRA_OECONF_bmc +="INVSENSOR_YAML_GEN=${STAGING_DIR_HOST}${datadir}/xxx-yaml-config/ipmi-inventory-sensors.yaml"

ipmi-host
方法二
在your-layer/conf/machine/machine.conf中指定配置文件。可参考meta-quanta/meta-q71l
1、machine.conf添加内容如下

PREFERRED_PROVIDER_virtual/phosphor-ipmi-inventory-sel = "ipmi-inventory-sel-native"

2、在your-layer/recipes-phosphor/ipmi/下创建xxx-ipmi-inventory-sel-native文件夹和xxx-ipmi-inventory-sel-native.bb文件,xxx-ipmi-inventory-sel-native文件夹下放yaml文件,xxx-ipmi-inventory-sel-native.bb文件内容如下

SUMMARY = "bmc IPMI to DBus Inventory mapping."
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"

inherit native
inherit phosphor-ipmi-host

SRC_URI += "file://config.yaml"

PROVIDES += "virtual/phosphor-ipmi-inventory-sel"

S = "${WORKDIR}"

do_install() {
        DEST=${D}${sensor_datadir}
        install -d ${DEST}
        install config.yaml ${DEST}/invsensor.yaml
}

phosphor-ipmi
inventory-sel

方法一要注意“INVSENSOR_YAML_GEN”变量的值,一定要是自己配置文件中ymal文件安装的路径,至于文件名可以自己定义,只要“INVSENSOR_YAML_GEN”指定实际名称即可。
方法二在安装的位置和文件名称都是是固定的( D {D} D{sensor_datadir}/invsensor.yaml),这是因为在phospho-ipmi-host.bb文件中给“INVSENSOR_YAML_GEN”指定了该位置,我们把文件安装到固定的位置即可(在phospho-ipmi-hostd/configure.ac中有判断,如果路径下文件不存在使用script下的yaml文件)。
这两种方法选取一种即可,如果想灵活配置可以两种方法组合:按照方法二进行分类文件夹,按照方法一在phosphor-ipmi-host_%.bbappend中指定INVSENSOR_YAML_GEN的路径,具体可以自行尝试。
如果同soc有多个不同的平台,最好两种方法不要混用,不然会报错,报错只需要执行“bitbake phosphor-ipmi-host -c cleansstate”命令从新编译即可。
ob下还提供了mrw的方法:通过脚本将mxl文件转换成yaml文件,针对的是比较老的版本,有兴趣可以自行尝试。

3 yaml文件

ipmi-inventory-sensors.yaml文件内容:

/xyz/openbmc_project/inventory/system:
    eventReadingType: 111
    offset: 2
    sensorID: 144
    sensorType: 18
/xyz/openbmc_project/inventory/system/chassis/motherboard:
    eventReadingType: 3
    offset: 0
    sensorID: 140
    sensorType: 199
/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0:
    eventReadingType: 111
    offset: 8
    sensorID: 8
    sensorType: 7
/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0:
    eventReadingType: 111
    offset: 4
    sensorID: 11
    sensorType: 12

这里的yaml相对简单,第一个是dbus的path,第二个是eventReadingType,第三个是offset、sensorID和sensorType要和前面sensor中的相同。
这里的ipmi-inventory-sensors.yaml实际配置的是ipmi-sel的信息,在log信息转换成sel是会使用改配置。具体请看代码phosphor-ipmi-hostd下的ipmi-hostselutility.cpp和sensordatahandler.cpp文件。

4 编译及结果

编译过程生成的inventory-sensor-gen.cpp
inventory
由于是虚拟机,看不到实际效果,如果实际机器,如果有log产生可以通过“ipmitool sel elist”命令看到sellog信息。
注:如果要看到sel信息还需要其他应用软件包有编译并且编译对应的配置有打开,比如phosphor-logging、phosphor-sel-logger等。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值