从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: 注意:000000011003020xxx、00000001030xxx、00000001040xxx 这类 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. 产品标识校验:升级包中的 ProductVendorID 和 ProductUniqueID 必须与设备当前ID一致或匹配白名单。
  2. BoardIDList:你的日志显示 cfg-BoardIDList(65535) match all devices,说明当前包的Board验证已设置为“匹配所有设备”,已规避了机型不匹配问题。
  3. Product ID:升级包通过 ProductUniqueID 和 ProductVendorID 的组合判断是否允许升级。

: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 ID 为 65535 以强制匹配所有设备,但这不能解决 .bin 文件缺失问题。


最佳实践建议

建议项 说明
遵循硬件自描述机制 openUBMC 使用 CSR 和 PSR 文件实现硬件自描述。确保你的 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)解决该问题,待验证通过后关帖。

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

上述方法验证有效