bios相关FAQ
更新时间: 2025/08/18
在Gitcode上查看源码

BIOS升级相关FAQ

【Q】BIOS升级显示无效的升级包

查看app.log中出现类似下面的日志报错,则代表包签名校验失败。

2025-01-16 09:56:59.962863 firmware_mgmt ERROR: validate_sign.lua(258): FirmwareUpgradeError: An error occurred during the firmware upgrade process. Details: verify signature error, code 88200312

如果使用的是伙伴自签名固件,同时升级华为签名的HPM,就会遇到这类问题。一般处理方法是替换一下HPM包的签名,确保签名与BMC的保持一致。HPM头部可以直接用文本的方式看出来证书的CommonName,具体的HPM签名指导可见自签名CA创建以及HPM签名指导

出现类似下面的日志报错,则代表hpm包与实际机型不符,需要升级符合机型的hpm包。

2025-01-16 09:56:59.962863 firmware_mgmt ERROR: hpm_package.lua(371): sys-uid not in update.cfg's ProductUIDList

出现类似下面的日志报错,则代表hpm包中未配置相应的cfg文件或cfg文件中缺少必须字段,需要找对应硬件要带外升级所使用的hpm包。

2025-01-16 09:56:59.962863 firmware_mgmt ERROR: task_instance.lua(185): parse package failed, ret:InvalidFirmwarePackage

【Q】BIOS升级成功后版本号未变

bios版本号更新依赖bios侧上报版本号,BMC无法主动获取,升级结束后需要确认BIOS在新版本上报过版本号。关键日志:

如果当前升级模式为非装备模式,且在上电状态下升级,则升级模式为缓存升级,等待下电或者复位后生效,此处包缓存成功后就会记录升级成功,实际升级需要下电或者复位。

【Q】非装备包OS上电升级BIOS,无法使用强制重启或者带内reboot生效

目前默认生效条件为下电生效,需要重启生效可以通过修改csr配置实现

或者也可以通过ipmi命令SetCachedBiosUpgradeMode(在bios仓库)设置生效模式:
(1)local CACHED_BIOS_REBOOT_AND_POWER_OFF_UPGRADE = 0x00 – OS重启及下电均升级缓存的BIOS(默认)
(2)local CACHED_BIOS_REBOOT_DONOT_UPGRADE = 0x01 – 仅OS下电升级缓存的BIOS
(3)local CACHED_BIOS_REBOOT_AND_POWER_OFF_DONT_UPGRADE = 0x02 – OS重启及下电均不升级缓存的BIOS
(4)local CACHED_BIOS_UPGRADE_MODE_MAX = 0x03

【Q】BIOS升级完成后未保留配置

web界面下的保留配置选项值保留BMC的配置,对于bios的升级是否保留配置是根据BMC是否为装备包实现,对于装备包升级BIOS默认不保留配置,对于非装备包升级目前只支持ipmcset -t maintenance -d upgradebios -v /tmp/bios.hpm命令进行全擦升级,其它接口均会保留BIOS配置。 在bios下设置manufacture: true即是开启该组件的装备功能:

这样出的BMC包,在web上升级默认就是全擦装备升级,升级时会强制下电。

【Q】BIOS升级过程中失败

定位思路:

1、确认包的类型是否与升级模式匹配(无感升级)

无感升级补丁包只能通过redfish接口进行升级,若通过其它接口升级会因为包的类型和升级模式不匹配导致失败,无感升级要求BMC为非装备包,若为装备包也会包的类型和升级模式不匹配导致失败。

2、确认BIOS启动状态(无感升级)

无感升级要求BIOS启动完成(POST阶段结束),BIOS启动完成会上报一条ipmi命令给BMC,BMC收到该命令会将startupstate设置为254。无感升级时,若该状态值非254也会导致升级失败。 查询该值:busctl --user introspect bmc.kepler.bios /bmc/kepler/Systems/system_id/Bios

3、确认SPI链路切换以及驱动加载情况

BMC升级BIOS时需要先将spi链路所有权由OS侧切换至BMC侧,再通过sdk加载驱动,产生设备文件,通过设备文件将hpm包写入BIOS flash中,升级完成后将链路切回OS侧。切换spi通道有对应的维护日志记录类似

2025-12-20 06:37:51 INFO : SVR-0000000,Switch spi to BMC(BIOS)

失败日志类似,若出现失败日志则需要硬件同事接力定位切换失败原因。

2025-12-20 06:37:51 ERROR : SVR-0000000,Switch spi to BMC(BIOS) failed

在链路切换成功后,首先要确认颗粒外接在哪一个控制器哪一个片选上,若颗粒挂载在sfc0,则加载sfc0的驱动,否则加载sfc1的驱动。若在日志中出现如下日志,可参考如下定位方法交接给sdk/硬件定位:

2025-01-16 09:56:59.962863 bios ERROR: spi_flash.lua(315): [spi]check_device_ready: ready fail

首先需要联系厂商获取bmcdfx工具,手动进行spi链路的切换以及sfc驱动的加载

#切bios falsh到bmc侧
bmcdfx coreMsg secfw set biosMuxStatus 1
#检查切换状态
bmcdfx coreMsg secfw get biosMuxStatus
#重新加载卸载sfc驱动
rmmod /lib/modules/hibmc/sfc0_drv.ko
insmod /lib/modules/hibmc/sfc0_drv.ko

dmesg查看驱动加载具体报错,明确打印全F或全0的sfc片选外部是否接flash颗粒,若没有接颗粒,则请硬件焊接颗粒。 更多的硬件问题可以在鲲鹏社区昇腾社区进行提问

BIOS带内外交互相关FAQ

【Q】丝印上报是怎么回事?

概述

  • BMC与BIOS通过IPMI命令交互是一种用途比较广泛的交互方式。在天池机型上,BIOS通过IPMI命令从BMC读取丝印信息就是其中一种

  • BIOS启动时,通过ReadFileFromBmc这条IPMI命令从BMC读取丝印文件silkconfig.json,解析丝印文件后,更新到BIOS人机界面、SMBIOS等

  • 丝印信息当前包括内存、PCIe设备、板载网卡、直通硬盘,即将实现CPU的丝印信息上报

  • ReadFileFromBmc的实现可见bios组件仓

  • silkconfig.json已支持一键收集时获取,路径为dump_info/AppDump/bios

MemSilk

  • 基于Memory对象实现,包含CpuId、ChannelId、LogicalChannelId、DimmId、DimmName属性。DimmName作为内存丝印信息,最终会体现到SMBIOS中

  • BIOS会通过WriteSmbiosData这条IPMI命令发送SMBIOS数据给BMC,BMC通过内存丝印信息来匹配Memory对象,从而更新内存静态信息

  • WriteSmbiosData的实现可见bios组件仓

  • SMBIOS_CONF已支持一键收集时获取,路径为dump_info/AppDump/bios

PCIeSilk

  • 基于ComponentType为NVMe(2)、PCIe(8)、OCP(83)的PcieAddrInfo对象实现,包含Segment、SocketID、PortID、SlotID以及类型属性

  • BIOS会通过WritePcieDiskBdfToBmc、WritePcieCardBdfToBmc、WriteOcpCardBdfToBmc将3种类型设备的BDF号传给BMC

  • BMC根据BDF号向BIOS查询对应PCIe槽位的四元组信息,从而加载对应的CSR

  • WritePcieDiskBdfToBmc、WritePcieCardBdfToBmc、WriteOcpCardBdfToBmc的实现可见bios组件仓

  • 加载PCIe设备CSR的流程可见pcie_device组件仓

NICSilk

  • 基于ComponentType为NIC(13)的PcieAddrInfo对象实现,包含SocketID、SlotID属性

  • 这种丝印类型针对的是板载网卡。BMC暂无应用场景

DiskSilk

  • 基于ControllerType为SAS(2)和SATA(3)的PcieAddrInfo对象实现,包含SocketID、PortID、SlotID、RootBDF等属性

  • 这种丝印类型针对的是CPU直出硬盘,不经过RAID卡管理,这些硬盘的信息需要通过BMA上报。有以下几个关键流程:

1、BMA基于rootBDF向BMC获取硬盘的丝印号

2、BMA将获取到的直通盘信息连同丝印号挂到BMC的资源协作路径上

3、storage组件通过丝印号来匹配Drive对象,匹配成功则将直通盘信息赋给对应的Drive对象