openubmc固件升级后web页面机型图片无法显示问题分析
更新时间: 2026/06/02
在Gitcode上查看源码

问题背景

  • 单板类型:NA;
  • 软件版本:NA;
  • 涉及功能:BMC升级;
  • 触发条件:包中不包含对应产品的psr时,升级openubmc固件。
  • 业务表现:预期正常升级,web页面正常显示机型图片;实际openubmc固件升级后web页面机型图片无法显示。

问题复现步骤

  1. 升级VRD,通过日志观察VRD的升级状态。
  2. 升级结束后查询VRD的版本

关键日志信息

dump_info/AppDump/hwdiscovery/connectors.txt文件显示日志如下:

text
Connector_PSR_EEP_0101:
.AuxId            : ""
.Bom              :"14100513"
.Buses           :["12c_8","I2c_2"]
.ChassisId     :"1"
.GroupId        :10
.GroupPosition      :"01010A"
.Id                  :"00000001040302044503"
.IdentifyMode : 3
.LoadStatus    :0
.ManagerId     : "1"
.Presence       : 1
.SilkText          :"PSR"
.Slot                : 1
.SystemId       : 1
.Type              :""
-SourcePath   :/data/opt/bmc/sr/backup/000000001040302044503_01010A.bin
-DataSource   :EEPROM
-EffectiveFormatVersion   : 1.05
-EffectiveDataVersion    : 1.05
-EepromFormatVersion : 1.05
-EepromDataVersion    : 1.05
-LocalFormatVersion : NA
-LocalDataVersion    : NA

定位过程

  1. 查看网页图片路径为theme/custom/bmcimg/product/img_03.png,而正确情况下此处应该为img_01.png

  2. 查看webui代码发现请求为/UI/Rest/Overview,返回信息为:

    text
    {
      "Customer": "",
      "DeviceInfo": {
          "ProductName": "TaiShan 200 (Model 1280 V2)",
          "ProductAlias": "",
          "ProductSN": "",
          "SystemSN": "",
          "BMCVersion": "1.00.00.00",
          "BIOSVersion": null,
          "GUID": "8638D6A8-E8DF-ED11-B2C3-A8FFBA8D2AEA",
          "FQDN": "iBMC",
          "DomainName": "",
          "MAC": "20:22:01:86:01:98",
          "DeviceIPv4": "76.76.16.98",
          "DeviceIPv6": "0.0.0.0.0.0.0.0",
          "DefaultIPAddress": {
              "Address": "",
              "Mode": "",
              "Ipv6Address": "",
              "Ipv6Mode": "DHCPv6",
              "IpVersion": "IPv4AndIPv6"
          },
          "TEEOSVersion": null
      },
      "KVMClientUrl": "",
      "ProductImage": "img_03"
    }

    此处"ProductImage": "img_03"导致显示路径错误;

  3. 查看rackmount组件/interface_config/web_backend/mapping_config/Overview.json文件中ProductPicture接口为bmc.kepler.Systems.Product.

  4. 查看资源树的值,以及硬件自发现的日志发现,PSR从EEPROM中获取

    查看资源树product属性

    text
    mdbctl lsprop Product_1_01010A
    bmc.kepler.Object.Properties
      ClassName="Product"
      ObjectIdentifier=[1,"1","1","01010A"]
      ObjectName="Product_1_01010A"
    bmc.kepler.Systems.Product
      LanguageSet=["en","zh"]
      ProductAlias=""
      ProductId=0
      ProductName="TaiShan 200 (Model 1280 V2) "
      ProductPicture="img_03"
      ProductUniqueID="0x0307BF03"
      ProductVendorID="0x00000001"
      ProductVersion="V6"
    bmc.kepler.Systems.Product.Custom
      Manufacturer="Huawei"
      ManufacturerOid="2011.2.235.1.1"
      OemData=[]
      SmsName="iBMA"
    bmc.kepler.Systems.Product.Device
      Name=""
      OwnerId=""
      SerialNumber=""
    bmc.kepler.Systems.Product.DigitalWarranty
      FirstPowerOnTime="N/A"
      Lifespan=0
      StartPoint="`1996-04-10`"

    一键收集日志发现PSR的connector加载的文件来自eeprom.即来自挂耳的eeprom

    查看dump_info/AppDump/hwdiscovery/connectors.txt

    text
    Connector_PSR_EEP_0101:
    .AuxId            : ""
    .Bom              :"14100513"
    .Buses           :["12c_8","I2c_2"]
    .ChassisId     :"1"
    .GroupId        :10
    .GroupPosition      :"01010A"
    .Id                  :"00000001040302044503"
    .IdentifyMode : 3
    .LoadStatus    :0
    .ManagerId     : "1"
    .Presence       : 1
    .SilkText          :"PSR"
    .Slot                : 1
    .SystemId       : 1
    .Type              :""
    -SourcePath   :/data/opt/bmc/sr/backup/000000001040302044503_01010A.bin
    -DataSource   :EEPROM
    -EffectiveFormatVersion   : 1.05
    -EffectiveDataVersion    : 1.05
    -EepromFormatVersion : 1.05
    -EepromDataVersion    : 1.05
    -LocalFormatVersion : NA
    -LocalDataVersion    : NA
  5. 尝试从正常环境拷贝csr文件到异常环境重启后,图片路径变为img_01,正常显示图片。新日志信息为:

    text
    Connector_PSR_EEP_0101:
    .AuxId            : ""
    .Bom              :"14100513"
    .Buses           :["12c_8","I2c_2"]
    .ChassisId     :"1"
    .GroupId        :8
    .GroupPosition      :"01010A"
    .Id                  :"00000001040302044503"
    .IdentifyMode : 3
    .LoadStatus    :0
    .ManagerId     : "1"
    .Presence       : 1
    .SilkText          :"PSR"
    .Slot                : 1
    .SystemId       : 1
    .Type              :""
    -SourcePath   :/opt/bmc/sr/14100513_000000001040302044503.sr
    -DataSource   :LOCAL
    -EffectiveFormatVersion   : 3.00
    -EffectiveDataVersion    : 1.05
    -EepromFormatVersion : 3.00
    -EepromDataVersion    : 1.05
    -LocalFormatVersion : 3.00
    -LocalDataVersion    : 3.13

    拷贝的文件为14100513_000000001040302044503.sr和14100513_000000001040302044503-soft.sr

问题原因

通过定位,使用开源社区出的hpm包,出的包并没有对应产品的psr,cat /var/log/framework.log |grep “start to process sr data”,从日志发现,PSR来源于验证HPM包的挂耳eeprom。

解决方案

如果希望优先使用内置的PSR而非EEPROM中的PSR,用户可以自行内置PSR,并且设置DataVersion字段为较高值(例如3.99)。