uBMC更新BIOS显示成功,实际没有更新成功

问题描述

最开始通过uBMC更新BIOS是成功的,后来调试其他功能后,更新BIOS发现网页提示更新成功,实际没有更新Flash,回退版本也是这个现象,通过测量uBMC上的BMC_SFC_SEL信号,没有发出切换信号,通过查看log文件,与正常更新文件对比,***[bios]upgrade package: the power status is not off,***这部分就报错了,这个power status是什么哪里来的?后续应该怎么查?

1970-01-01 00:13:52.028808 web_backend NOTICE: init.lua(98): upload content length:number 4085841, remaining capacity space:number 134094848
1970-01-01 00:13:52.956458 firmware_mgmt NOTICE: active_fructl.lua(95): get host type is Singlehost
1970-01-01 00:13:52.956811 firmware_mgmt NOTICE: utils.lua(35): The file path is local.
1970-01-01 00:13:52.963009 firmware_mgmt NOTICE: init.lua(33): update status to FS_SIMPLE_UPGRADING.
1970-01-01 00:13:52.973606 firmware_mgmt NOTICE: task_service.lua(49): task create success, task id: 112002046
1970-01-01 00:13:53.030380 firmware_mgmt NOTICE: file_transfer.lua(145): start to move file [xff_new.hpm] from tmp to shm
1970-01-01 00:13:53.126790 firmware_mgmt NOTICE: file_transfer.lua(150): move_file_s ok:true, err:0
1970-01-01 00:13:53.240253 firmware_mgmt NOTICE: validate_sign.lua(174): verify signature successfully
1970-01-01 00:13:53.241674 firmware_mgmt NOTICE: action.lua(37): Validate signature successfully
1970-01-01 00:13:53.397322 firmware_mgmt NOTICE: hpm_package.lua(488): parse cfg file successfully, Version:1.0 FileNum:2
1970-01-01 00:13:53.397760 firmware_mgmt NOTICE: hpm_package.lua(444): get obj table: 0x5c3e58eae9d0 for Id=2
1970-01-01 00:13:53.400406 firmware_mgmt NOTICE: hpm_package.lua(413): System product info:ProductId(0), ProductVendorID(0x00000001), ProductUniqueID(0x030ABF00)
1970-01-01 00:13:53.400670 firmware_mgmt NOTICE: hpm_package.lua(327): check product id successfully
1970-01-01 00:13:53.401038 firmware_mgmt NOTICE: hpm_package.lua(352): check product uid successfully
1970-01-01 00:13:53.401353 firmware_mgmt NOTICE: hpm_package.lua(437): get obj table: 0x5c3e58eae9d0 for Id=2
1970-01-01 00:13:53.401651 firmware_mgmt NOTICE: hpm_package.lua(459): hard_revision:0, soft_revision:0
1970-01-01 00:13:53.401891 firmware_mgmt NOTICE: hpm_package.lua(472): revision number check successfully. Target revision=(0, 0) and hpm revision=1
1970-01-01 00:13:53.499753 firmware_mgmt NOTICE: action.lua(47): Parse hpm package successfully
1970-01-01 00:13:53.501040 firmware_mgmt NOTICE: control.lua(247): upgrade_task file_name=xff_new.hpm, FirmwareType=Bios, fw_num=1, UniqueIDList=table: 0x5c3e76a023e8, sys_id=1
1970-01-01 00:13:53.597542 firmware_mgmt NOTICE: task_service.lua(63): destroy_dup_task: task(1Bios) dup, task id: 1062738228 → 112002046
1970-01-01 00:13:53.597810 firmware_mgmt NOTICE: task_service.lua(31): destroy_task_by_id: 1062738228
1970-01-01 00:13:53.602973 firmware_mgmt NOTICE: info_mgmt.lua(73): create_info: info_key=1Bios, FirmwareType=Bios, task_id=112002046
1970-01-01 00:13:53.699156 firmware_mgmt NOTICE: action.lua(85): public initialize action
1970-01-01 00:13:53.699468 firmware_mgmt NOTICE: info_mgmt.lua(171): info_key(1Bios) upgrade set_stage: INITIALIZE → DIFF_PREPARE, 5
1970-01-01 00:13:53.808281 bios NOTICE: signal.lua(176): Start the bios upgrade prepare phase
1970-01-01 00:13:53.809461 bios NOTICE: signal.lua(177): Platform = “”
1970-01-01 00:13:53.806635 general_hardware NOTICE: upgrade_subject.lua(63): [on_upgrade_prepare] firmware_type:Bios cur_firmware_type:Bios
1970-01-01 00:13:53.806867 general_hardware ERROR: upgrade_subject.lua(67): [on_upgrade_prepare] does not exists the observer, firmware_type:Bios
1970-01-01 00:13:53.817185 bios NOTICE: upgrade_service.lua(164): [bios]upgrade prepare: start
1970-01-01 00:13:53.817702 bios NOTICE: upgrade_state_machine.lua(71): [bios]state change from UPGRADE_READY to PREPARE_START
1970-01-01 00:13:53.818071 bios NOTICE: upgrade_service.lua(155): [bios]upgrade prepare: build package
1970-01-01 00:13:53.820830 bios NOTICE: package_cfg.lua(65): [bios]get package cfg Firmware1
1970-01-01 00:13:53.821347 bios NOTICE: upgrade_service.lua(158): [bios]upgrade prepare: pfr cache tmp hpm
1970-01-01 00:13:54.186756 bios NOTICE: gold_package.lua(109): [bios]gold package: backup tmp path success, system id is 1
1970-01-01 00:13:54.187285 bios NOTICE: upgrade_service.lua(160): [bios]upgrade prepare: reply messgae
1970-01-01 00:13:54.187611 bios NOTICE: upgrade_state_machine.lua(71): [bios]state change from PREPARE_START to PREPARE_FINISH
1970-01-01 00:13:54.188263 bios NOTICE: signal.lua(151): [bios] prepare set system 1 verion 6.81
1970-01-01 00:13:54.190096 firmware_mgmt NOTICE: info_mgmt.lua(171): info_key(1Bios) upgrade set_stage: DIFF_PREPARE → COMMON_PREPARE, 5
1970-01-01 00:13:54.195821 firmware_mgmt NOTICE: action.lua(89): public prepare action start
1970-01-01 00:13:54.233127 firmware_mgmt NOTICE: worker: start action in worker
1970-01-01 00:13:54.309723 firmware_mgmt NOTICE: worker: execute before action script successfully
1970-01-01 00:13:55.223170 firmware_mgmt NOTICE: action.lua(95): public prepare action end
1970-01-01 00:13:55.223581 firmware_mgmt NOTICE: info_mgmt.lua(171): info_key(1Bios) upgrade set_stage: COMMON_PREPARE → PROCESS, 15
1970-01-01 00:13:55.323329 firmware_mgmt NOTICE: control.lua(158): sys_id=1, fw_type=Bios, filename=/dev/shm/upgrade/112002046/Firmware1
1970-01-01 00:13:55.325959 general_hardware ERROR: upgrade_subject.lua(84): [on_upgrade_process] does not exists the observer, firmware_type:Bios
1970-01-01 00:13:55.335083 bios NOTICE: signal.lua(242): Start the bios upgrade process phase
1970-01-01 00:13:55.340370 bios NOTICE: firmware_multihost.lua(218): [bios] get is_online_force nil, system id: 1
1970-01-01 00:13:55.344393 bios NOTICE: firmware_multihost.lua(202): [bios] get activate mode nil, system id: 1
1970-01-01 00:13:55.446946 bios NOTICE: upgrade_service.lua(492): [bios]upgrade process: start
1970-01-01 00:13:55.447362 bios NOTICE: upgrade_state_machine.lua(71): [bios]state change from PREPARE_FINISH to PROCESS_START
1970-01-01 00:13:55.448877 bios NOTICE: upgrade_service.lua(402): [bios] singlehost upgrade process
1970-01-01 00:13:55.449442 bios NOTICE: upgrade_service.lua(338): [bios]upgrade process: system 1, upgrade mode(Cold), period(Period2), package type(Normal)
1970-01-01 00:13:55.452239 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add PackageCheck executor successfully
1970-01-01 00:13:55.452532 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add Backup executor successfully
1970-01-01 00:13:55.453580 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add Cache executor successfully
1970-01-01 00:13:55.453847 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add LockPower executor successfully
1970-01-01 00:13:55.454728 bios NOTICE: upgrade_executor.lua(178): load chipv1 spikodrv
1970-01-01 00:13:55.454998 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add SpiDriver executor successfully
1970-01-01 00:13:55.455842 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add DecompressFile executor successfully
1970-01-01 00:13:55.456645 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add ParserBin executor successfully
1970-01-01 00:13:55.457763 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add SelectChannel executor successfully
1970-01-01 00:13:55.458696 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add UpgradeComponent executor successfully
1970-01-01 00:13:55.460899 bios NOTICE: upgrade_executor.lua(145): [bios]upgrade chain: package_check (executor) start
1970-01-01 00:13:55.463152 bios NOTICE: upgrade_executor.lua(85): [bios]upgrade chain: back (executor) start
1970-01-01 00:13:55.559188 bios NOTICE: upgrade_executor.lua(125): [bios]upgrade chain: cache (executor) start
1970-01-01 00:13:55.561790 bios NOTICE: upgrade_executor.lua(129): [bios]upgrade package: the power status is not off
1970-01-01 00:13:55.562188 bios NOTICE: pfr_service.lua(294): [bios]pfr: system 1 no need wait bios effective
1970-01-01 00:13:55.565730 bios NOTICE: upgrade_state_machine.lua(71): [bios]state change from PROCESS_START to PROCESS_FINISH
1970-01-01 00:13:55.583295 bios NOTICE: firmware_multihost.lua(211): [bios] clear activate mode(table: 0x22071ea3b980), system id: 1
1970-01-01 00:13:55.585008 firmware_mgmt NOTICE: info_mgmt.lua(171): info_key(1Bios) upgrade set_stage: PROCESS → COMMON_FINISH, 95
1970-01-01 00:13:55.627340 firmware_mgmt NOTICE: control.lua(110): wait_msg_result stage=COMMON_FINISH, timeout=7200S, loop=2
1970-01-01 00:13:55.627593 firmware_mgmt NOTICE: action.lua(99): public finish action start
1970-01-01 00:13:55.652804 firmware_mgmt NOTICE: worker: start action in worker
1970-01-01 00:13:55.723514 firmware_mgmt NOTICE: worker: execute finish action script successfully

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2506]

  • 硬件配置:[如 CPU、内存等]

期望结果

尝试过的解决方案

尝试过在其他项目使用相同的uBMC.hpm验证,其他项目正常,CPLD不一样,但是硬件上该管脚确实是软件控制的

分析结论

[详细总结您对此问题的分析结论]

操作成功的这部分打印是这样的:

1970-01-01 00:08:50.347718 firmware_mgmt NOTICE: info_mgmt.lua(73): create_info: info_key=1Bios, FirmwareType=Bios, task_id=11951844
1970-01-01 00:08:50.448742 firmware_mgmt NOTICE: action.lua(85): public initialize action
1970-01-01 00:08:50.449189 firmware_mgmt NOTICE: info_mgmt.lua(171): info_key(1Bios) upgrade set_stage: INITIALIZE → DIFF_PREPARE, 5
1970-01-01 00:08:50.555664 general_hardware NOTICE: upgrade_subject.lua(63): [on_upgrade_prepare] firmware_type:Bios cur_firmware_type:Bios
1970-01-01 00:08:50.557048 general_hardware ERROR: upgrade_subject.lua(67): [on_upgrade_prepare] does not exists the observer, firmware_type:Bios
1970-01-01 00:08:50.561175 bios NOTICE: signal.lua(176): Start the bios upgrade prepare phase
1970-01-01 00:08:50.561578 bios NOTICE: signal.lua(177): Platform = “”
1970-01-01 00:08:50.571097 bios NOTICE: upgrade_service.lua(164): [bios]upgrade prepare: start
1970-01-01 00:08:50.571453 bios NOTICE: upgrade_state_machine.lua(71): [bios]state change from UPGRADE_READY to PREPARE_START
1970-01-01 00:08:50.571669 bios NOTICE: upgrade_service.lua(155): [bios]upgrade prepare: build package
1970-01-01 00:08:50.574557 bios NOTICE: package_cfg.lua(65): [bios]get package cfg Firmware1
1970-01-01 00:08:50.575388 bios NOTICE: upgrade_service.lua(158): [bios]upgrade prepare: pfr cache tmp hpm
1970-01-01 00:08:50.951021 bios NOTICE: gold_package.lua(109): [bios]gold package: backup tmp path success, system id is 1
1970-01-01 00:08:50.951684 bios NOTICE: upgrade_service.lua(160): [bios]upgrade prepare: reply messgae
1970-01-01 00:08:50.952221 bios NOTICE: upgrade_state_machine.lua(71): [bios]state change from PREPARE_START to PREPARE_FINISH
1970-01-01 00:08:50.953008 bios NOTICE: signal.lua(151): [bios] prepare set system 1 verion 6.81
1970-01-01 00:08:50.957258 firmware_mgmt NOTICE: info_mgmt.lua(171): info_key(1Bios) upgrade set_stage: DIFF_PREPARE → COMMON_PREPARE, 5
1970-01-01 00:08:51.047386 firmware_mgmt NOTICE: action.lua(89): public prepare action start
1970-01-01 00:08:51.086941 firmware_mgmt NOTICE: worker: start action in worker
1970-01-01 00:08:51.155697 firmware_mgmt NOTICE: worker: execute before action script successfully
1970-01-01 00:08:52.078844 firmware_mgmt NOTICE: action.lua(95): public prepare action end
1970-01-01 00:08:52.079298 firmware_mgmt NOTICE: info_mgmt.lua(171): info_key(1Bios) upgrade set_stage: COMMON_PREPARE → PROCESS, 15
1970-01-01 00:08:52.179234 firmware_mgmt NOTICE: control.lua(158): sys_id=1, fw_type=Bios, filename=/dev/shm/upgrade/11951844/Firmware1
1970-01-01 00:08:52.182488 general_hardware ERROR: upgrade_subject.lua(84): [on_upgrade_process] does not exists the observer, firmware_type:Bios
1970-01-01 00:08:52.188306 bios NOTICE: signal.lua(242): Start the bios upgrade process phase
1970-01-01 00:08:52.196980 bios NOTICE: firmware_multihost.lua(218): [bios] get is_online_force nil, system id: 1
1970-01-01 00:08:52.201220 bios NOTICE: firmware_multihost.lua(202): [bios] get activate mode nil, system id: 1
1970-01-01 00:08:52.293239 bios NOTICE: upgrade_service.lua(492): [bios]upgrade process: start
1970-01-01 00:08:52.293868 bios NOTICE: upgrade_state_machine.lua(71): [bios]state change from PREPARE_FINISH to PROCESS_START
1970-01-01 00:08:52.294712 bios NOTICE: upgrade_service.lua(402): [bios] singlehost upgrade process
1970-01-01 00:08:52.295382 bios NOTICE: upgrade_service.lua(338): [bios]upgrade process: system 1, upgrade mode(Cold), period(Period2), package type(Normal)
1970-01-01 00:08:52.296748 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add PackageCheck executor successfully
1970-01-01 00:08:52.297612 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add Backup executor successfully
1970-01-01 00:08:52.299160 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add Cache executor successfully
1970-01-01 00:08:52.299497 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add LockPower executor successfully
1970-01-01 00:08:52.299750 bios NOTICE: upgrade_executor.lua(178): load chipv1 spikodrv
1970-01-01 00:08:52.300164 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add SpiDriver executor successfully
1970-01-01 00:08:52.300566 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add DecompressFile executor successfully
1970-01-01 00:08:52.300898 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add ParserBin executor successfully
1970-01-01 00:08:52.301194 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add SelectChannel executor successfully
1970-01-01 00:08:52.301455 bios NOTICE: upgrade_scenarios.lua(52): [bios]UpgradeScenarios: process chain add UpgradeComponent executor successfully
1970-01-01 00:08:52.304975 bios NOTICE: upgrade_executor.lua(145): [bios]upgrade chain: package_check (executor) start
1970-01-01 00:08:52.307072 bios NOTICE: upgrade_executor.lua(85): [bios]upgrade chain: back (executor) start
1970-01-01 00:08:52.587288 bios NOTICE: upgrade_executor.lua(125): [bios]upgrade chain: cache (executor) start
1970-01-01 00:08:52.588641 bios NOTICE: upgrade_executor.lua(159): [bios]upgrade chain: power_lock (executor) lock
1970-01-01 00:08:52.591477 fructrl NOTICE: fructrl_obj_mgnt.lua(257): [System:1]set poweron lock, pwronlocked=true, timeout=1000, appname=Upgrade, reason=bios
1970-01-01 00:08:52.592265 fructrl NOTICE: pwr_on_lock.lua(48): [System:nil][Upgrade] add item to lock_table successfully.
1970-01-01 00:08:52.635713 bios NOTICE: power_lock.lua(102): [bios]power_lock: lock success.
1970-01-01 00:08:52.636220 bios NOTICE: upgrade_executor.lua(222): [bios]upgrade chain: spi_driver (executor) start
1970-01-01 00:08:52.639083 bios NOTICE: scm3.lua(165): Set BIOS upgrade flag ok
1970-01-01 00:08:53.796432 bios NOTICE: spi_flash.lua(289): [spi]check_device_ready: device /dev/mtd0 ready
1970-01-01 00:08:53.800520 bios NOTICE: upgrade_executor.lua(247): [bios]upgrade chain: decompress_file (executor) start
1970-01-01 00:08:55.346691 ras ERROR: tar.c(664): __extract_file: lchown on file(bios.bin) failed!
1970-01-01 00:08:56.466451 fructrl ERROR: button_evt.lua(85): set prop PowerBtnShield to 0 failed, error_msg:BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/sd_bus/init.lua:226: ./opt/bmc/libmc/lualib/mc/context.lua:185: ./opt/bmc/libmc/lualib/mc/signal.lua:257: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: …bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:74: chip: Smc_ExpBoardSMC_0101, bus: I2c_8, write failed: i2c.lua:116: response error, i2c read fail, ret: 5, input:{“rw_type”:0,“drv_write_delay”:0,“len”:6,“name”:“Smc_ExpBoardSMC_0101”,“requestor”:“bmc.kepler.hwproxy”,“buffer”:“\u0004\b\u0000\u0015\u0000”,“offsetWidth”:1,“smc_target”:1,“has_error”:false,“type”:1,“addrWidth”:1,“addr”:96,“is_trace”:false,“offset”:32,“mask”:1}
1970-01-01 00:09:05.350450 bios NOTICE: upgrade_executor.lua(268): [bios]upgrade chain: parse_bin (executor) start

答案内容由AI生成,仅供参考:

结论总结

  • 根因:您遇到的“升级成功但未刷新Flash”是因为升级是在服务器上电状态下进行的。系统采取了“缓存升级”策略,日志中 [bios]upgrade package: the power status is not off 的报错正是该机制的直接体现。在此模式下,系统不会进行实际的Flash写入,而是等待系统下电后生效。所以Flash内容未被改变。
  • 后续建议
    1. 首选方案:在服务器完全下电后,重新执行BIOS升级操作。这应该能解决问题。
    2. 根本方案:定位并修复上电状态下BMC获取的“电源状态”不正确的问题。重点排查CPLD与BMC之间的电源状态信号交互逻辑,以及/bmc/kepler/Systems/1/Bios资源树的加载情况。您提到“CPLD不一样”是非常关键的线索。
点击此处查看详细分析解答

好的,作为一名信息合成专家,我将严格依据您提供的 上下文 来分析和解答您的问题。

首先,根据您提供的日志,关键信息是:[bios]upgrade package: the power status is not off。这表明BIOS升级过程因为检测到系统电源状态不是“关闭”而中断了。

根据知识图谱中的信息,BIOS Upgrade(BIOS升级)是一个关键系统级操作,其成功执行依赖特定条件,例如系统处于下电状态。此外,知识图谱也指出,系统状态(如未下电)和缺少配置是导致升级失败的常见原因。

以下是结合您提供的信息所做的详细分析和后续排查建议:


问题分析与后续排查指南

根据您提供的日志和环境信息,您遇到的“UBMC更新BIOS显示成功,实际没有更新Flash”的问题,其核心原因已经定位。

1. power status 是什么?来源于哪里?

日志中出现的 ***[bios]upgrade package: the power status is not off*** 指出,在BIOS升级的Cache(缓存)阶段,升级流程检测到服务器的电源状态不为“关闭”(OFF)

  • 来源:这个状态是由 BMC (Baseboard Management Controller) 自身监控和维护的。BMC负责监控和管理服务器的硬件状态,包括电源状态。
  • 含义:在升级过程中,特别是在执行“普通升级”或需要直接写入Flash的模式时,系统要求服务器处于下电(Power Off)状态。这是因为:
    • 写入Flash(SPI Flash)时,需要BMC通过SFC总线获得Flash的控制权。
    • 如果服务器处于上电状态,BIOS可能正在使用Flash,或者BIOS/BMC的电源管理逻辑(如LockPower执行器)会阻止写入操作,以防止数据损坏或系统不稳定。
    • 您日志中报错“power status is not off”之后,流程直接跳过后续的SpiDriverSelectChannelUpgradeComponent等关键执行器,直接进入结束阶段,所以没有写入Flash。

2. 为什么“网页提示更新成功”?

这是一个常见的现象,根据 Document Chunk 中的信息,当升级模式为非装备模式且系统处于上电状态时,升级策略会是“缓存升级”。

  • 机制:系统会将新固件包缓存起来,并记录“升级成功”,但实际上并未写入BIOS Flash。真正的写入操作会延后到下一次系统下电或复位时执行。
  • 您的日志佐证:日志中 upgrade mode(Cold), period(Period2), package type(Normal) 明确指出这是一个 Normal(普通)模式。并且,流程在执行到 Cache executor 时因电源非OFF而停止,这正好印证了这是一个需要下电才能生效的缓存操作。

3. 后续应该怎么查?

结合环境信息中的描述(“其他项目正常,CPLD不一样”),问题可能出在电源状态与升级流程的联动上。请按以下步骤排查:

  1. 检查升级模式

    • 确认您使用的升级包是否为“装备包”(Manufacture/装备升级)。装备包会执行强制上下电,可以绕开这个问题。
    • 对于普通包,必须在下电状态下升级。
  2. 确认电源管理逻辑

    • 硬件层面:联系硬件团队或参考硬件设计文档,确认您当前版本的 CPLD (Complex Programmable Logic Device) 在上电状态下,是否正确响应了BMC发出的“切换SFC通道”或“请求电源状态”的信号。您提到的“BMC_SFC_SEL信号没有发出切换信号”可能是一个后果,而不是根因。根因可能是CPLD没有正确反馈电源状态给BMC,导致BMC认为电源未关。
    • 软件层面:根据 Kltk Zhuyuanli 的贡献,他提到过“BIOS upgrade failed because the /bmc/kepler/Systems/1/Bios was not loaded”。请检查在升级开始时,BMC上相关的BIOS资源树是否已正确加载。查看日志中 [bios]upgrade prepare: start 之前的日志,确认是否有加载失败的记录。
  3. 进行隔离测试

    • 下电升级测试:先将服务器完全下电(Power Off),然后再通过Web进行BIOS升级。如果下电后升级成功,则证明问题确实是由于上电状态升级失败导致。
    • CPLD对比测试:既然您提到在“其他项目相同硬件的uBMC.hpm”上正常,建议重点关注CPLD版本和配置的差异。请对比正常项目与异常项目的CPLD固件版本和逻辑设计,特别是关于电源状态、SFC通道切换和BMC交互的部分。

结论总结

  • 根因:您遇到的“升级成功但未刷新Flash”是因为升级是在服务器上电状态下进行的。系统采取了“缓存升级”策略,日志中 [bios]upgrade package: the power status is not off 的报错正是该机制的直接体现。在此模式下,系统不会进行实际的Flash写入,而是等待系统下电后生效。所以Flash内容未被改变。
  • 后续建议
    1. 首选方案:在服务器完全下电后,重新执行BIOS升级操作。这应该能解决问题。
    2. 根本方案:定位并修复上电状态下BMC获取的“电源状态”不正确的问题。重点排查CPLD与BMC之间的电源状态信号交互逻辑,以及/bmc/kepler/Systems/1/Bios资源树的加载情况。您提到“CPLD不一样”是非常关键的线索。

power status是系统测上电状态,当前是开机状态,升级bios后会缓存bios固件,当下次下电时会开始升级bios

通过排查上电问题,确定是CPLD获取的Power Good状态一直为上电,导致没有进行Flash权限切换,实际没有操作Flash,后来将上报状态设置为掉电进行验证,烧录成功,感谢

还有个问题,网页烧录CPU BIOS时,是用的hpm文件,这种格式里包括BIOS的纯二进制文件,但是会有压缩,我怎么才能得到BIOS的二进制bin文件?这样就可以直接用flyPro烧录Flash,不用通过网页了