从PSR万能包升级到伙伴自己出的目标机型的包会失败

问题描述

在S920S20上进行PSR修改出包,从PSR万能包升级到我们自己出的包时会失败。

但从万能包升级到华为提供的S920S20的PSR包是成功的,在此基础上再升级到我们自己出的包也是成功的。

求助,如果出的PSR包要同时能在本机型的包和万能包上升级,需要单独对PUID做什么处理吗?

为了方便下文的描述,将问题涉及到的三个PSR版本编号如下:

PSR万能包:3.49

华为提供的PSR:1.12

伙伴自己出的PSR:1.13

环境信息

  • 操作系统:

  • 软件版本:BMC版本:5.11.12.17

  • 硬件配置:S920S20

重现步骤

  1. 从万能包3.49直接升级到伙伴自己出的1.13版本失败。

  2. 从万能包3.49升级到华为提供的1.12版本成功,再从1.12升级到1.13成功。

期望结果

期望能从1.12升级到1.13,也能从万能包3.49升级到1.13

实际结果

升级失败时的日志如下:

2026-03-25 02:46:39.312829 web_backend NOTICE: init.lua(98): upload content length:number 23243, remaining capacity space:number 133255168
2026-03-25 02:46:39.504806 firmware_mgmt NOTICE: active_fructl.lua(95): get host type is Singlehost
2026-03-25 02:46:39.505285 firmware_mgmt NOTICE: utils.lua(36): The file path is Local.
2026-03-25 02:46:39.507483 firmware_mgmt NOTICE: init.lua(79): Upgrading_Flag is true
2026-03-25 02:46:39.525693 firmware_mgmt NOTICE: init.lua(40): update status to FS_SIMPLE_UPGRADING.
2026-03-25 02:46:39.547738 firmware_mgmt NOTICE: task_mgmt.lua(287): Create task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 0, State: New] successfully
2026-03-25 02:46:39.549434 firmware_mgmt NOTICE: task_service.lua(55): task create success, task id: 2371342286
2026-03-25 02:46:39.550360 firmware_mgmt NOTICE: task_id_mgmt.lua(30): add serial task id(2371342286) successfully
2026-03-25 02:46:39.553007 firmware_mgmt NOTICE: tasks_scheduling.lua(121): start tasks processer
2026-03-25 02:46:39.655603 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 0, State: Running] successfully
2026-03-25 02:46:39.712440 firmware_mgmt NOTICE: file_transfer.lua(139): start to move file [000000010402315NXG.hpm] from tmp to shm
2026-03-25 02:46:39.798178 firmware_mgmt NOTICE: file_transfer.lua(144): move_file_s ok:true, err:0
2026-03-25 02:46:39.932187 firmware_mgmt NOTICE: validate_sign.lua(195): verify signature successfully
2026-03-25 02:46:39.933448 firmware_mgmt NOTICE: action.lua(37): Validate signature successfully
2026-03-25 02:46:39.935260 firmware_mgmt NOTICE: hpm_package.lua(762): ManufacturerValidateEnabled is false, there is no need to validate manufacture_id.
2026-03-25 02:46:40.116979 firmware_mgmt NOTICE: hpm_package.lua(567): parse cfg file successfully, Version:1.0 FileNum:2
2026-03-25 02:46:40.117687 firmware_mgmt NOTICE: hpm_package.lua(448): get obj table: 0x7a10afe7f828 for Id=17_127
2026-03-25 02:46:40.118393 firmware_mgmt NOTICE: hpm_package.lua(455): get obj table: 0x7a10afe7f828 for Id=17_127
2026-03-25 02:46:40.119356 firmware_mgmt NOTICE: hpm_package.lua(466): get obj table: 0x7a10afe7f828 for Id=17_127
2026-03-25 02:46:40.120046 firmware_mgmt NOTICE: hpm_package.lua(413): System product info:ProductId(0), ProductVendorID(0x00000001), ProductUniqueID(0x030ABF00)
2026-03-25 02:46:40.120646 firmware_mgmt NOTICE: hpm_package.lua(327): check product id successfully
2026-03-25 02:46:40.167879 firmware_mgmt NOTICE: hpm_package.lua(395): cfg-BoardIDList(65535) match all devices
2026-03-25 02:46:40.168317 firmware_mgmt NOTICE: hpm_package.lua(441): get obj table: 0x7a10afe7f828 for Id=17_127
2026-03-25 02:46:40.168982 firmware_mgmt NOTICE: hpm_package.lua(499): hard_revision:0, soft_revision:0
2026-03-25 02:46:40.169456 firmware_mgmt NOTICE: hpm_package.lua(512): revision number check successfully. Target revision=(0, 0) and hpm revision=nil
2026-03-25 02:46:40.170354 firmware_mgmt NOTICE: hpm_package.lua(651): update firmware[HWSR] EstimatedDuration[0] to task
2026-03-25 02:46:40.269244 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 0, State: Running] successfully
2026-03-25 02:46:40.362497 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 0, State: Running] successfully
2026-03-25 02:46:40.367057 firmware_mgmt NOTICE: action.lua(47): Parse hpm package successfully
2026-03-25 02:46:40.382452 firmware_mgmt NOTICE: task_instance.lua(217): upgrade_task file_name=000000010402315NXG.hpm, FirmwareType=HWSR, fw_num=1, UniqueIDList=nil, sys_id=1, info_key=1_HWSR_2371342286
2026-03-25 02:46:40.483804 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 0, State: Running] successfully
2026-03-25 02:46:40.484322 firmware_mgmt NOTICE: info_mgmt.lua(82): create_info: info_key=1_HWSR_2371342286, FirmwareType=HWSR, task_id=2371342286, upg_fw_num=1
2026-03-25 02:46:40.584386 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 0, State: Running] successfully
2026-03-25 02:46:40.585268 firmware_mgmt NOTICE: task_instance.lua(665): firmware(info key:1_HWSR_2371342286) do upgrade stages
2026-03-25 02:46:40.586044 firmware_mgmt NOTICE: task_instance.lua(295): public initialize action start
2026-03-25 02:46:40.586537 firmware_mgmt NOTICE: hpm_package.lua(477): get obj table: 0x7a10afe7f828 for Id=17_127
2026-03-25 02:46:40.586938 firmware_mgmt NOTICE: hpm_package.lua(524): now uptime = 469, firmware init time = 0
2026-03-25 02:46:40.587565 firmware_mgmt NOTICE: hpm_package.lua(448): get obj table: 0x7a10afe7f828 for Id=17_127
2026-03-25 02:46:40.587923 firmware_mgmt NOTICE: task_instance.lua(300): public initialize action end
2026-03-25 02:46:40.588372 firmware_mgmt NOTICE: info_mgmt.lua(240): info_key(1_HWSR_2371342286) upgrade set_stage: INITIALIZE → DIFF_PREPARE, 5
2026-03-25 02:46:40.686342 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 5, State: Starting] successfully
2026-03-25 02:46:40.695513 general_hardware NOTICE: upgrade_subject.lua(82): [on_upgrade_prepare] firmware_type:HWSR cur_firmware_type:HWSR
2026-03-25 02:46:40.695945 general_hardware NOTICE: upgrade_subject.lua(90): [on_upgrade_prepare] start upgrade HWSR
2026-03-25 02:46:40.696301 general_hardware NOTICE: sr_upg_service.lua(77): [sr_upg_service] prepare upgrade, firmware type: HWSR
2026-03-25 02:46:40.705088 general_hardware NOTICE: sr_upg_service.lua(98): [SRUpgrade] ActiveMode: Immediately
2026-03-25 02:46:40.710332 firmware_mgmt NOTICE: info_mgmt.lua(393): set FirmwareMode to Single
2026-03-25 02:46:40.710825 firmware_mgmt NOTICE: info_mgmt.lua(240): info_key(1_HWSR_2371342286) upgrade set_stage: DIFF_PREPARE → COMMON_PREPARE, 5
2026-03-25 02:46:40.786833 firmware_mgmt NOTICE: action.lua(86): public prepare action start
2026-03-25 02:46:40.860235 firmware_mgmt NOTICE: worker: start action in worker
2026-03-25 02:46:40.881181 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 5, State: Starting] successfully
2026-03-25 02:46:40.885814 general_hardware NOTICE: upgrade_subject.lua(97): [on_upgrade_prepare] end upgrade HWSR
2026-03-25 02:46:40.937100 firmware_mgmt NOTICE: worker: execute before action script successfully
2026-03-25 02:46:41.850528 firmware_mgmt NOTICE: action.lua(92): public prepare action end
2026-03-25 02:46:41.851123 firmware_mgmt NOTICE: task_instance.lua(677): upgrade FirmwareMode Single
2026-03-25 02:46:41.949953 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 5, State: Starting] successfully
2026-03-25 02:46:41.950346 firmware_mgmt NOTICE: info_mgmt.lua(240): info_key(1_HWSR_2371342286) upgrade set_stage: COMMON_PREPARE → PROCESS, 15
2026-03-25 02:46:42.041932 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 15, State: Starting] successfully
2026-03-25 02:46:42.042624 firmware_mgmt NOTICE: task_instance.lua(325): sys_id=1, fw_type=HWSR, filename=/dev/shm/upgrade/2371342286/Firmware1
2026-03-25 02:46:42.047355 firmware_mgmt NOTICE: hpm_package.lua(484): get obj table: 0x7a10afe7f828 for Id=17_127
2026-03-25 02:46:42.049629 general_hardware NOTICE: upgrade_subject.lua(109): [on_upgrade_process] start upgrade HWSR
2026-03-25 02:46:42.050066 general_hardware NOTICE: sr_upg_service.lua(151): [SRUpgrade] process SR upgrade, firmware type: HWSR
2026-03-25 02:46:42.059371 general_hardware NOTICE: upgrade_subject.lua(116): [on_upgrade_process] end upgrade HWSR
2026-03-25 02:46:42.151349 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 31, State: Running] successfully
2026-03-25 02:46:42.154135 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001100302023955.bin
2026-03-25 02:46:42.155743 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001030302023933.bin
2026-03-25 02:46:42.163026 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001040302023942.bin
2026-03-25 02:46:42.164663 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001020302083825.bin
2026-03-25 02:46:42.166334 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001010302044492.bin
2026-03-25 02:46:42.168859 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001040302044498.bin
2026-03-25 02:46:42.171094 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001050302023924.bin
2026-03-25 02:46:42.173154 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001040302023953.bin
2026-03-25 02:46:42.175850 firmware_mgmt ERROR: control.lua(192): Upgrade HWSR process failed, ret=-1
2026-03-25 02:46:42.176501 firmware_mgmt NOTICE: info_mgmt.lua(240): info_key(1_HWSR_2371342286) upgrade set_stage: PROCESS → COMMON_FINISH, 95
2026-03-25 02:46:42.241953 firmware_mgmt NOTICE: task_instance.lua(266): wait_msg_result stage=COMMON_FINISH, timeout=7200S, loop=1
2026-03-25 02:46:42.242683 firmware_mgmt NOTICE: info_mgmt.lua(350): info_key(1_HWSR_2371342286) upgrade failed, set_stage: COMMON_FINISH → COMPLETED
2026-03-25 02:46:42.274761 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 95, State: Running] successfully
2026-03-25 02:46:42.377544 firmware_mgmt NOTICE: task_mgmt.lua(418): Update task[Id: 2371342286, StartTime: 2026-03-25T02:46:39+00:00, Progress: 95, State: Exception] successfully
2026-03-25 02:46:42.378022 firmware_mgmt NOTICE: task_instance.lua(580): Upgrade 1_HWSR_2371342286 completely, pre_version=
2026-03-25 02:46:42.378448 firmware_mgmt NOTICE: task_instance.lua(586): firmware(info key:1_HWSR_2371342286) do upgrade ret:-1, pre_version:
2026-03-25 02:46:42.438389 firmware_mgmt NOTICE: utils.lua(172): Does not exists the same Id obj
2026-03-25 02:46:42.734650 firmware_mgmt NOTICE: tasks_scheduling.lua(126): upgrade queue is empty, exit the tasks processer
2026-03-25 02:46:42.735845 firmware_mgmt NOTICE: tasks_scheduling.lua(138): stop tasks processer
2026-03-25 02:46:42.738363 firmware_mgmt NOTICE: active_fructl.lua(95): get host type is Singlehost
2026-03-25 02:46:42.739202 firmware_mgmt NOTICE: active_single_host_fructrl.lua(60): active_single_host_fructrl fructrl get power status
2026-03-25 02:46:42.747815 firmware_mgmt NOTICE: state_simple_upgrading.lua(101): simple upgraded, current active mode is:nil, wait restart seconds:360000
2026-03-25 02:46:42.755645 firmware_mgmt NOTICE: init.lua(40): update status to FS_IDLE.
2026-03-25 02:46:42.761038 firmware_mgmt NOTICE: init.lua(79): Upgrading_Flag is false

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

总结

项目 分析结论
问题现象 从 PSR 万能包升级至自定义包失败
直接原因 sr_upg_service 无法找到硬件组件 .bin 固件文件
根本原因 目标 PSR 包(1.13)未包含完整硬件固件,导致 HWSR 升级失败
非原因 PUID 不匹配(因 BoardIDList=65535 已通过校验)
可行方案 基于华为 1.12 PSR 包进行增量定制并重新出包

结论:构建一个完整涵盖 S920S20 硬件配置的 PSR 包 是解决问题的关键。建议使用 BMC Studio 导入华为官方 PSR 进行二次开发,以确保兼容性和完整性。

点击此处查看详细分析解答

S920S20从PSR万能包升级到伙伴自定义包失败问题分析与解决方案

问题概述

S920S20 设备上,从 PSR万能包(版本3.49) 直接升级到 伙伴自定义PSR包(版本1.13) 时失败。然而,先升级至华为提供的S920S20专用PSR包(版本1.12),再从1.12升级到1.13,则能成功

用户希望实现从万能包(3.49)或同机型包(1.12)均可直接升级至目标包(1.13)。


核心结论

该问题的根本原因是升级过程中缺少特定硬件组件的固件文件,而非 Product Unique ID (PUID) 不匹配。

2026-03-25 02:46:42.154135 general_hardware ERROR: sr_upg_service.lua(139): [SRUpgrade] upgrade path can not get file, file_name:00000001100302023955.bin
...
2026-03-25 02:46:42.175850 firmware_mgmt ERROR: control.lua(192): Upgrade HWSR process failed, ret=-1

日志明确指出,sr_upg_service 尝试加载某些 .bin 文件失败,最终导致 HWSR 类型的固件升级流程失败(Upgrade HWSR process failed

这表明:你的目标PSR包(1.13)在构建时,缺少与当前硬件环境匹配的完整组件固件。


详细分析

1. HWSR 升级失败的本质

  • HWSR 是硬件系统更新(Hardware System Update)的一种固件类型。
  • 当升级 PSR 包时,系统会对包含在 PSR 中的 HWSR 固件组件进行处理。
  • 系统会根据硬件的 Product Unique ID 去查找对应的固件文件(如 00000001xxxxx.bin)。
  • 你的日志中反复提示 “upgrade path can not get file”,说明系统在查找一系列以 000... 开头的 .bin 文件时失败。
  • 最终,firmware_mgmt 模块判定 HWSR 升级过程失败,导致整个升级中断。

:pushpin: 注意000000011003020xxx00000001030xxx00000001040xxx 这类 ID 是设备各组件(如 Riser card、硬盘背板、CPLD 等)的唯一标识符。你的目标PSR包中没有为这些组件提供对应的固件,因此无法完成升级。


2. 为何可以从1.12升级到1.13却能成功?

  • 华为提供的 PSR包 1.12 是为 S920S20 量身定制的,其固件库中包含了该设备所需的所有 .bin 文件。
  • 当你从 1.12 升级到 1.13 时,当前运行的环境(1.12)已经加载了所有组件的固件和配置
  • 此时升级 1.13 时,firmware_mgmt 可能复用或跳过部分已有固件的加载,或者 1.13 仅修改了非硬件相关的配置,因此可以成功。
  • 这证明:目标PSR包 1.13 的问题不在于签名或PUIID校验,而在于其自身完整性不足

PUID 验证与错误理解澄清

虽然 PUID 校验是固件升级的关键一环,但本案例并非此原因:

PUID 校验流程简述

  1. 产品标识校验:升级包中的 ProductVendorIDProductUniqueID 必须与设备当前ID一致或匹配白名单。
  2. BoardIDList:你的日志显示 cfg-BoardIDList(65535) match all devices,说明当前包的Board验证已设置为“匹配所有设备”,已规避了机型不匹配问题
  3. Product ID:升级包通过 ProductUniqueIDProductVendorID 的组合判断是否允许升级。

:white_check_mark: 因此,问题不是PUID不匹配,而是后续的 HWSR 升级流程因文件缺失而中断


解决方案

:white_check_mark: 根本解决方法:构建完整的硬件适配PSR包

方案一:基于华为 PSR 1.12 进行增量定制(推荐)

这是最稳定且兼容性最好的方法。

  1. 获取华为提供的 PSR 包 1.12
  2. 使用 BMC Studio 导入该 PSR 文件
  3. 在原有基础上,添加或修改你的定制化配置(如自定义变量、服务等)。
  4. 重新出包(Ensure签名证书与环境一致)。
    • 确保使用正确的私钥和 CA 证书进行签名。
  5. 使用新生成的包进行升级。

优势:继承了所有硬件组件的固件,避免 .bin 文件缺失。


方案二:确保 sr 文件中声明了所有硬件组件

如果你是通过代码仓 manifest 手动构建 PSR:

  1. 检查 TaiShan 目录下的 S920S20 配置文件夹。
  2. 确保 profile.txt 中包含了所有必需的 *.sr 文件。
  3. 确认你的 PSR 生成脚本打包了所有设备组件。
  4. 验证输出的 HPM 包中是否包含 00000001100302023955.bin 等关键固件文件。

:hammer_and_wrench: 工具建议:使用 hpm 解包工具解压你的 1.13.hpm 包,检查是否存在上述 .bin 文件。


方案三:临时验证(仅限测试)

若仅为测试,可尝试修改 manifest.yml 中的 Product ID65535 以强制匹配所有设备,但这不能解决 .bin 文件缺失问题


最佳实践建议

建议项 说明
遵循硬件自描述机制 openUBMC 使用 CSRPSR 文件实现硬件自描述。确保你的 PSR 完整描述了目标硬件所有组件。
使用 BMC Studio 出包 推荐使用图形化工具,基于现有包进行修改,避免遗漏。
签名一致性 确保升级包的签名证书与当前系统信任的 CA 一致。
过渡包策略 若从万能包迁移,建议先使用华为签名的过渡包清根,再升级自签名包。
日志分析优先级 Upgrade HWSR process failed 是关键线索,应优先排查固件完整性而非签名。

总结

项目 分析结论
问题现象 从 PSR 万能包升级至自定义包失败
直接原因 sr_upg_service 无法找到硬件组件 .bin 固件文件
根本原因 目标 PSR 包(1.13)未包含完整硬件固件,导致 HWSR 升级失败
非原因 PUID 不匹配(因 BoardIDList=65535 已通过校验)
可行方案 基于华为 1.12 PSR 包进行增量定制并重新出包

结论:构建一个完整涵盖 S920S20 硬件配置的 PSR 包 是解决问题的关键。建议使用 BMC Studio 导入华为官方 PSR 进行二次开发,以确保兼容性和完整性。

1.13版本就是基于华为提供的1.12源码,通过bmc studio修改了定制化配置后出包的。

我想问一下这个PSR万能包是一个什么包?现在是想替换掉S920S20的PSR中的内容吗?

这个万能包是为了解决来料机器里面原始的PSR和我们要改配出货的机型不一致,华为单独提供的一个包。

比如来料是无背板的PSR,就无法升级到有背板的PSR,因为PUID不一样。或从S920X20改成S920S20等等都需要这个万能包。

现在问题就是来料是无背板的,需要先升级到万能包,才能再升级到有背板的PSR。但是升级到我们自己出的有背板的包就会失败。

看着是你出的PSR包里没有UID啊,报错也是找不到UID

从包的sr文件来看是有配置UID的,只是这个UID是000000010402315NXG,从1.12升级到1.13的时候成功的日志也能看到匹配到的UID是这个。

但是而万能包里面配的UID好像不是这个,不知道是不是这个原因导致升级失败?

像这种psr或者其他板卡csr升级的hpm,制作的时候,好像没有配置update_ext4.cfg文件吧,这个文件里面才有对应的ProductUIDList,进行匹配校验

update_ext4.cfg这个里面校验的ProductUID,我看psr文件中也有配置,就是0x030AB300,这个是在ProductUIDList中的。

但是升级好像除了这个以外,还要一个什么UID,日志中找那个bin文件好像就是根据这个UID找的,报错就是没找到。

那你们这个PSR的csr命名是什么?我有点怀疑是你们这个PSR文件命名有点问题

源文件的命名是000000010402315NXG.sr,我是单个文件导入到bmc studio后出包的,出来的包是000000010402315NXG.hpm

从其它途径了解到在出包的时候可以通过bingo build -u 参数(或者在有伪装UID功能的studio界面)添加UID(比如万能包的UID)解决该问题,待验证通过后关帖。

好的,麻烦验证后反馈下验证结果

上述方法验证有效