CN116339780A - 一种固件升级方法、电子设备 - Google Patents

一种固件升级方法、电子设备 Download PDF

Info

Publication number
CN116339780A
CN116339780A CN202310321355.XA CN202310321355A CN116339780A CN 116339780 A CN116339780 A CN 116339780A CN 202310321355 A CN202310321355 A CN 202310321355A CN 116339780 A CN116339780 A CN 116339780A
Authority
CN
China
Prior art keywords
upgrade
file
package
upgrading
bmc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310321355.XA
Other languages
English (en)
Inventor
林泽铭
何志平
黄志鹏
周潇
贾兵
刘虎
周南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tiangu Information Security System Shenzhen Co ltd
Original Assignee
Tiangu Information Security System Shenzhen Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tiangu Information Security System Shenzhen Co ltd filed Critical Tiangu Information Security System Shenzhen Co ltd
Priority to CN202310321355.XA priority Critical patent/CN116339780A/zh
Publication of CN116339780A publication Critical patent/CN116339780A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种固件升级方法、电子设备,具体涉及服务器技术领域。在该方法中BMC获取编译后的升级程序包,该升级程序包为用于BMC中待升级的模块升级的程序包;对获取到的升级程序包进行合法性校验,判断是否校验通过;若合法性校验通过,将获取到的升级程序包中的升级文件进行替换升级;若合法性校验不通过,则删除接收到的升级程序包,并在web页面反馈第一状态码。优选的,在合法性校验通过的情况下,若程序升级不成功,则进一步对程序包进行完整性校验。实施本申请提供的技术方案,达到了具有在不影响BMC工作的情况下,对BMC进行固件升级的效果。

Description

一种固件升级方法、电子设备
技术领域
本申请涉及服务器技术领域,具体涉及一种基板管理控制器的固件升级方法、电子设备。
背景技术
随着科技的发展,基板管理控制器( Baseboard Management Controller,BMC)在日常对服务器的监控和管理中发挥着日益重要的作用。BMC是一个独立于服务器系统的小型操作系统,可以记录服务器的信息、监控服务器状态、对服务器进行远程控制管理以及日志管理等。
目前,当BMC出现bug或者需要进行功能升级时,对BMC进行固件升级的方法是重新发布新的固件,在升级过程中,需要停止BMC所有正在运行的功能。
而新固件升级过程所耗费的时间比较长,在升级过程中,BMC无法进行工作,十分影响BMC对服务器的监控和管理。
发明内容
本申请提供了一种固件升级方法,具有在不影响BMC工作的情况下,对BMC进行固件升级的效果。
第一方面,本申请提供了一种固件升级方法,该方法包括:
获取编译后的升级程序包,该升级程序包为用于BMC中待升级的模块升级的程序包;
对获取到的升级程序包进行合法性校验;
若合法性校验成功,将获取到的升级程序包中的升级文件进行替换升级;
若合法性校验不成功,则删除接收到的升级程序包,并在web页面反馈第一状态码。
通过采用上述技术方案,只在线导入部分待升级的功能程序,而不是对整个固件进行升级,在升级过程中,BMC的其他无需升级的程序仍可以正常工作,有效解决了现有技术中的固件升级影响BMC工作的技术问题,进而实现了在不影响BMC工作的情况下对其固件进行升级的技术效果。同时,在升级过程中,传输到BMC中的是编译好的程序,无需BMC编译后再进行升级,提高了升级效率;
可选的,该编译后的升级程序包为一个压缩文件包,压缩文件包中包含签名文件和升级文件,其中,该升级文件为编译后的升级程序包中包含的用于BMC固件升级的文件,该签名文件为对编译后的程序文件进行摘要计算,得到第一摘要后,再对每个第一摘要进行签名得到的文件。
可选的,该对获取到的升级程序包进行合法性校验,包括:
接收升级程序包,对升级程序包进行解压缩,获取压缩包内的签名文件及相应的升级文件;
对升级程序包中签名文件进行解签名,得到第二摘要;
判断各个签名文件的第二摘要是否等于对应升级文件的第三摘要;
若每个签名文件的第二摘要均等于对应升级文件的第三摘要相同,则合法性校验通过,否则,合法性校验不通过。
通过采用上述技术方案,在升级过程中,利用数字签名对升级程序包中升级文件的摘要进行签名,得到签名文件后,将签名文件和升级文件一起打包成新的升级程序包进行上传,BMC对接收到的升级程序包中的签名文件进行解签名,将解签名的结果与升级程序包中的升级文件的摘要进行比对,以对升级程序包进行合法性校验,防止升级程序包被篡改,提高了安全性。
可选的,该获取到的升级程序包中的升级文件进行替换升级之后,还包括:
检查待升级的模块是否升级成功;
若待升级的模块升级不成功,对升级程序包进行完整性校验。
通过采用上述技术方案,BMC对于接收到的升级程序包,在进行合法性校验之前不对升级程序包进行完整性校验,而是在升级程序包通过了合法性校验,并且固件升级失败时,才对升级程序包进行完整性校验,检查数据包的完整性,并根据完整性校验的结果,将数据包缺失的文件补充完整,提高了BMC固件升级的效率。
可选的,该升级程序包中包含文件列表1,该文件列表1根据编译后的升级程序包生成,文件列表1中包含升级程序包中升级文件的名称和升级文件的数量。
可选的,该对升级程序包进行完整性校验包括:
根据接收到的升级文件,生成文件列表2;
比对文件列表2和文件列表1,判断二者是否相同;
若文件列表2和文件列表1相同,则完整性校验通过,利用接收到的升级程序包进行替换升级。
可选的,该对升级程序包进行完整性校验还包括:
若文件列表2和文件列表1不同,则完整性校验失败,则根据文件列表2和文件列表1比对结果,确定所缺失的升级文件。
获取待补全文件,该待补全文件为所确定的缺失的升级文件;
对获取的待补全文件进行合法性校验,判断是否校验通过;
若合法性校验通过,则利用待补全文件进行替换升级;
若合法性校验不通过,则删除待补全文件,在web界面上反馈合法性校验结果。
通过采用上述技术方案,当发现升级程序包中的数据有缺失时,不是重新获取整个的升级程序包,而是仅仅获取缺失的文件,并对缺失的文件重新进行合法性校验,提高了获取升级程序包的效率,进而提高了BMC固件升级效率。
第二方面,本申请提供了一种用于BMC固件升级装置,该装置包括:
获取模块,用于获取编译后的升级程序包,该升级程序包为用于待升级的模块升级的程序包;
合法性校验模块,用于对获取到的升级程序包进行合法性校验;
升级模块,用于判断是否校验成功,若升级程序包通过合法性校验,将获取到的升级程序包中的文件进行替换升级;
检查模块,用于在升级完成后,检查升级后的程序的版本信息,比对该版本信息是否得到了更新,以确认是否升级成功;
删除模块,用于若合法性校验不成功,则删除获取到的升级程序包,并在web页面反馈第一状态码;
完整性校验模块,用于检查模块检查结果为升级不成功时,对升级程序包进行完整性校验。
通过采用上述装置,只在线导入部分待升级的功能程序,而不是对整个固件进行升级,在升级过程中,BMC的其他无需升级的程序仍可以正常工作,有效解决了现有技术中的固件升级影响BMC工作的技术问题,进而实现了在不影响BMC工作的情况下对其固件进行升级的技术效果。
在本申请的第三方面提供了一种电子设备,该电子设备包括处理器、存储器、用户接口及网络接口、基板管理控制器,该存储器用于存储指令,该用户接口和网络接口用于给其他设备通信,该处理器和基板管理控制器用于执行该存储器中存储的指令,以使该电子设备执行如上述任意一项该的方法。
在本申请的第四方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有指令,当该指令被执行时,执行上述任意一项该的方法步骤。
综上该,本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
1、由于只在线导入部分待升级的功能程序,而不是对整个固件进行升级,在升级过程中,BMC的其他无需升级的程序仍可以正常工作,有效解决了现有技术中的固件升级影响BMC工作的技术问题,进而实现了在不影响BMC工作的情况下对其固件进行升级的技术效果。
2、在升级过程中,传输到BMC中的是编译好的程序,无需BMC编译后再进行升级,提高了升级效率;
3、在升级过程中,利用数字签名对升级程序包中升级文件的摘要进行签名,得到签名文件后,将签名文件和升级文件一起打包成新的升级程序包进行上传,BMC对接收到的升级程序包中的签名文件进行解签名,将解签名的结果与升级程序包中的升级文件的摘要进行比对,以对升级程序包进行合法性校验,防止升级程序包被篡改,提高了安全性;
4、BMC对于接收到的升级程序包,在进行合法性校验之前不对升级程序包进行完整性校验,而是在升级程序包通过了合法性校验,并且固件升级失败时,才对升级程序包进行完整性校验,检查数据包的完整性,并根据完整性校验的结果,将数据包缺失的文件补充完整,提高了BMC固件升级的效率。
附图说明
图1是本申请实施例提供的一种BMC应用于对服务器进行管理的场景示意图。
图2是本申请实施例公开的一种BMC固件升级方法的流程示意图。
图3是本申请实施例公开的一种对BMC的升级程序包中的签名文件进行签名和打包,及BMC对接收到的升级程序包进行合法性验证的流程示意图。
图4是本申请实施例公开的一种BMC固件升级方法的流程示意图。
图5是本申请实施例的公开的一种对BMC固件升级程序包进行完整性校验的流程示意图
图6是本申请实施例公开的一种升级固件的BMC的结构示意图。
图7是本申请实施例公开的一种电子设备的结构示意图。
附图标记说明:601、获取模块;602、列表生成模块;603、合法性校验模块;604、升级模块;605、检查模块; 606、删除模块; 607、完整性校验模块;700、电子设备;701、处理器;702、存储器;703、用户接口;704、网络接口;705、通信总线;706、基板管理控制器。
具体实施方式
为了使本领域的技术人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
在本申请实施例的描述中,“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在对本申请实施例进行介绍之前,首先对本申请实施例中涉及的一些名词进行定义和说明。
本申请提供的技术方案可以应用于BMC对服务器进行管理的场景中。参照图1,图1是本申请实施例的公开的一种BMC应用于对服务器进行管理的场景示意图。
BMC是用于监控和管理服务器的专业控制器。用户通过BMC,可以对服务器各个部件如CPU、内存、硬盘等的健康状态进行监控,也可以对服务器的型号、制造商、日期等设备信息进行管理,还可以对服务器进行开关机、重启、固件更新、系统安装等远程控制,以及对服务器的日志、BIOS等进行维护管理等。BMC是一个独立运行的系统,不依赖服务器系统上的硬件,如CPU、内存等,也不依赖BIOS、OS等系统软件。BMC分为BMC芯片和BMC固件。BMC芯片是集成在主板上的芯片或以PCIE等形式插在主板上。BMC固件,即firmware,是运行在BMC芯片上的软件程序。
当BMC上的固件出现程序bug需要修复,或是需要进行功能升级时,则需要对BMC进行固件升级。目前对BMC进行固件升级的方式是,重新发布新的固件,对BMC的整个固件进行升级。一方面,BMC的固件中,并不一定每个程序都需要进行升级,在固件升级过程中,对本次无需升级的程序同样要进行一次更新升级,浪费了升级的时间和资源,另一方面,对整个固件进行升级时,耗费的时间较长,在固件升级的时间内,BMC是无法进行工作的,固件升级会影响BMC正常工作。
为了解决上述技术问题,本发明提供了一种BMC固件升级方法。
作为本发明的第二实施例,提供了一种固件升级方法。图2是本发明一个实施例的BMC固件升级方法的流程示意图。该BMC固件升级方法应用于BMC中,包括步骤S201至步骤S204。如图2所示,该BMC固件升级方法包括如下步骤:
S201:获取编译后的升级程序包,该升级程序包为用于BMC中待升级的模块升级的程序包;
BMC或开发人员将BMC固件划分为多个功能模块,例如,根据BMC的功能将其划分为命令行模块、WEB模块、远程控制模块、监控模块等,所划分的各功能模块之间耦合性较低,各个功能模块都有独立的升级程序包来实现相应的功能。在进行BMC固件升级之前,BMC或开发人员确定本次待升级的功能模块,根据对程序bug的修复或是功能的升级,发出升级请求,获取待升级的模块对应的升级程序包。优选地,该升级请求可以由BMC发出,也可以由开发人员通过web页面发出。
该升级程序包为经过编译的升级程序包,该编译后的升级程序包中包含可直接替换到BMC中的可执行文件、相应的配置文件。该编译后的升级程序包,可由开发人员先生成升级程序包镜像文件,然后通过编译工具对升级程序包镜像文件进行编译,生成编译后的升级程序包。具体的,可以在Ubuntu系统下,调用OpenBMC官方仓库进行编译和运行,生成编译好的升级程序包。也可以由BMC开发厂商将更新后的升级程序包进行编译,生成新的可执行程序文件和相应的配置文件。由于BMC上运行的是一个体量较小的操作系统,运行内存和运行速率有限,因此BMC对于获取到升级程序包编译后再进行升级替换,导致升级时间变长、升级效率低下。本发明中BMC利用编译好的升级程序包进行固件升级,而不是在获取到升级文件后,还需要BMC进行编译后才能实现升级,提高了BMC固件升级的效率。
编译后的升级程序包一般包含多个文件,在上传升级程序包前,开发人员在发送端,通过打包程序对编译后的升级程序包中多个文件分别进行签名,将生成的签名文件和升级程序包中原始文件一起进行打包,生成一个以程序名命名的压缩升级程序包APPName.tar。
优选的,可以由开发人员将AppName.tar文件通过web UI上的升级接口上传到云服务器中,BMC向云服务器发送升级请求,通过带外接口从云服务器中获取升级程序包。也可以由开发人员直接通过web UI上的升级接口将升级程序包上传到BMC中,BMC获取到升级程序包后,将升级程序包存储在其可读存储空间中或外置SD卡中。
S202:对获取到的升级程序包进行合法性校验,判断是否校验通过;
BMC对获取到的升级程序包进行解压,对升级程序包中包含的签名文件进行解签名,得到每个签名文件对应的摘要,计算与签名文件前缀相同的升级文件的摘要,判断每个签名文件的摘要是否与对应升级文件的摘要一致,若每个签名文件和对应升级文件的摘要一致,则升级程序包的合法性校验通过,跳转到步骤S203,否则校验不通过,跳转到步骤S204。
S203:若合法性校验通过,将获取到的升级程序包中的文件进行替换升级;
若合法性校验通过,则升级程序包是未经篡改的合法升级程序包。
优选地,BMC在将接收到的升级程序包中的文件进行替换升级前,可以对配置文件进行解析,获取待升级的版本信息,确定此时的版本是否高于升级前的程序版本。若是,则删除BMC的可读存储空间或SD卡中的历史版本升级程序包,存储本次接收到的升级程序包。通过检查是否有版本更新,并在有版本更新时,用接收到的最新版本的升级程序包覆盖历史版本的升级程序包,防止可能误传历史版本的升级程序包造成的无效升级问题。
此时,BMC获取该待升级程序的名称,检测待升级程序是否正在运行中,若正在运行中,将该待升级程序停止运行,用接收到的升级程序包中的文件替换待升级程序的程序文件。若待升级程序没有运行,则直接用接收到的升级程序包中的文件替换待升级程序的程序文件。
在一些实施例中,BMC在固件升级过程中,在web界面上显示更新进度,具体地,可以通过一个动态的进度条显示更新进度,并在进度条上显示进度数据,例如待升级程序的更新进度为50%时,进度条显示为满格进度的一半,并标识此时的更新进度为50%。通过对升级进度的显示,防止在升级过程中,用户或开发人员误启动了待更新程序,扰乱了BMC更新进程。
S204:若合法性校验不通过,则删除接收到的升级程序包,并在web页面反馈第一状态码。
若合法性校验不通过,则升级程序包不合法,可能已被非法篡改过或是在传输过程中有数据丢失,此时,BMC将接收到的升级程序包从SD卡和/或BMC的可读写分区中删除,以保证系统的安全性。并且,在web页面上反馈第一状态码,告知开发人员,因对升级程序包的合法性校验不通过,导致BMC固件升级失败。该第一状态码可以为用户定义的显示合法性校验结果的数字代码,在此不做具体的限定。
作为本发明的第二实施例,提供了第一实施例中对BMC程序文件进行签名和打包的具体方法。在本发明第一实施例基础上延伸出本发明第二实施例,下面着重叙述第二实施例与第一实施例的不同之处,相同之处不再赘述。图3中是本申请实施例提供的一种对BMC的升级程序包中的签名文件进行签名和打包,以及BMC对接收到的升级程序包进行合法性验证的流程示意图,其中示出了对BMC程序文件进行签名和打包的流程。
该BMC获取到的编译后的升级程序包,在开发人员通过web页面上传升级程序包前,需要经过对BMC固件升级程序文件进行签名和打包。
该BMC固件升级程序包为一个压缩文件包,压缩文件包中包含签名文件和升级文件,其中,该升级文件为编译后的升级程序包中包含的用于BMC固件升级的文件,该签名文件为对编译后的程序文件进行摘要计算,得到第一摘要后,再通过密钥对中的私钥对每个第一摘要进行签名得到的文件。
该对BMC固件升级程序文件进行签名和打包的具体方法包括:
S301:对编译后的升级文件进行摘要计算,得到每个升级文件的第一摘要;
具体地,该对编译后的升级文件进行摘要计算,得到每个升级文件的第一摘要由发送端完成,发送端可以为BMC服务厂商的开发平台,也可以为合法管理员用户的BMC的开发平台。编译后的升级程序包一般包含多个文件,如可执行文件appname、配置文件config等。根据具体升级程序的不同,升级程序包中还可能包含其他的文件,对于升级程序包中包含的文件种类和文件数量,在此不做具体限定。发送端的打包程序可以使用OpenSSL工具对编译后的每个升级文件进行摘要计算,得到升级程序包中每个升级文件的第一摘要;
S302:对每个升级文件的第一摘要进行签名,得到对应的签名文件;
具体地,发送端的打包程序使用密钥对中的私钥(private.key)对步骤S301中得到的该摘要分别进行签名,得到签名文件;其中,签名和后续步骤中解签名所用的密钥对使用OpenSSL工具用强算法生成,如采用RSA算法、位长度2048以上生成私钥private.key和公钥public.key。私钥用于对程序文件进行签名,公钥内置在BMC中,用于对接收到的签名文件进行解签。
S303:将升级文件和签名文件打包,生成压缩升级程序包。
具体地,打包程序将升级程序包中的升级文件和步骤S302中得到的签名文件打包,并压缩生成一个新的升级程序包,将升级程序包通过web UI上传到云服务器或待进行固件升级的BMC中。
以升级程序包中包含的文件为APPName文件和config文件为例,打包程序对APPName文件和config文件分别进行签名,该签名过程具体如下:
a):使用OpenSSL工具对Config,AppName进行摘要计算,得到摘要A,B。
b):使用密钥对中的私钥(private.key)对摘要A,B分别进行签名,得到签名文件Config.sign,AppName.sign。
c):将Config,AppName,Config.sign,AppName.sign打包生成一个新的升级程序包AppName.tar。然后发送端将该新升级程序包AppName.tar发送至云服务器中进行存储,或是通过web UI 上传到待升级的BMC中。
作为本发明的第三实施例,提供了第一实施例中的对BMC程序文件进行合法性校验的具体方法。在本发明第一实施例基础上延伸出本发明第三实施例,下面着重叙述第三实施例与第一实施例的不同之处,相同之处不再赘述。图3示出了对BMC程序文件进行合法性校验的流程示意图。
S304:接收升级程序包,对升级程序包进行解压缩,获取压缩包内的签名文件及相应的升级文件;
具体地,BMC对获取到的文件包进行解压缩,获取压缩包内的文件及相应的签名文件;
S305:对签名文件进行解签名,得到第二摘要;
使用BMC内置公钥(public.key)对签名文件分别进行解签名,得到每个签名文件对应的第二摘要;其中,该用于解签名的公钥与步骤S302中的用于签名的私钥为使用OpenSSL工具用强算法生成的一对密钥对。S306:计算与签名文件前缀相同的升级文件的摘要,得到各升级文件的第三摘要;
获取文件包中与签名文件前缀名相同的升级文件,计算每个升级文件的摘要,得到各升级文件的第三摘要。该升级程序包中每个签名文件都有与其文件前缀名称相同的升级文件,计算每个签名文件对应的升级文件的摘要,为第三摘要。例如,配置文件config.sign对应的文件前缀名称为config,则与该配置文件对应的升级文件为config文件,此时计算config文件的摘要,所得的结果为第三摘要。
S307:判断各个签名文件的第二摘要是否等于对应升级文件的第三摘要;
判断各个签名文件的第二摘要是否等于对应升级文件的第三摘要,即比较签名文件解签名所得的摘要是否与对应升级文件的摘要相同;
S308:若每个签名文件的第二摘要均等于对应升级文件的第三摘要相同,则合法性校验通过,
S309:若存在签名文件的第二摘要不等于对应升级文件的第三摘要相同,则合法性校验不通过。
当每个签名文件的第二摘要均等于对应升级文件的第三摘要相同时,说明升级程序包中的每个升级文件都没有经过篡改,都是合法文件;若存在有签名文件的第二摘要与等于对应升级文件的第三摘要不相同,说明该升级文件可能经过篡改或是在传输过程中有数据丢失,此时合法性校验失败,不能用该升级程序包来进行固件升级。
同样以升级程序包中包含的是APPName文件和config文件为例,此时接收到的压缩包中包含文件,Config、AppName、Config.sign、AppName.sign,对签名文件Config.sign、AppName.sign进行解签名,得到对应的摘要A,B。然后计算签名文件Config.sign、AppName.sign对应的原文件Config、AppName的摘要,得到摘要A1,B1。比较A,B和A1,B1,若A=A1,B=B1,则表明升级程序包没有经过任何篡改,在数据传输过程中也没有发生数据丢失,此时合法性校验通过。若A不等于A1,和/或B不等于B1,则表明升级程序包可能已经被篡改,或是在传输过程中发生了数据丢失,此时合法性校验不通过。此时,BMC会反馈状态码至Web界面,以告知开发人员升级程序包校验结果。
作为本发明的第四实施例,提供了第一实施例中的对BMC进行固件升级的具体方法。在本发明第一实施例基础上延伸出本发明第四实施例,下面着重叙述第四实施例与第一实施例的不同之处,相同之处不再赘述。
通常在进行BMC固件升级时,在对BMC固件进行合法性校验时,会校验BMC固件是否是服务厂商或具有升级权限的开发人员上传的原始升级文件,以防止固件是被人篡改过的非法文件,或是在数据传输过程中,发生数据的丢失,导致升级失败。
然而在实际的BMC固件升级过程中,由于本发明所上传的是编译后的单个程序的升级程序包,升级程序包中的文件彼此耦合性并不高,且编译后的数据包内的文件往往数量较大,在对程序进行打包过程中,发生丢失升级文件的概率较高。
因此,发明人发现在利用编译后的升级程序包进行BMC固件升级过程中,存在上传的数据包是经过打包程序打包后的合法数据包,且在数据传输过程中也没有发生数据丢失,但实际上数据包是不完整,导致固件升级失败的问题。为了解决上述技术问题,本发明提供了一种对BMC固件升级程序包进行完整性校验的方法。
图4是本发明一个实施例的BMC固件升级方法的流程示意图。该BMC固件升级方法应用于BMC中,包括步骤S401至步骤S407。如图4所示,该BMC固件升级方法包括如下步骤:
S401:获取编译后的升级程序包,该升级程序包为用于BMC中待升级的模块升级的程序包;
S402:对获取到的升级程序包进行合法性校验,判断是否校验通过;
S403:若合法性校验通过,将获取到的升级程序包中的文件进行替换升级;
在步骤S403之后,跳转到步骤S406。S404:若合法性校验不通过,则删除接收到的升级程序包,并在web页面反馈第一状态码。其中,步骤S401至步骤S404与第二实施例中的步骤S201至S204相同,在此不做重复的叙述。
S405:检查待升级的模块是否升级成功,若升级成功,跳转到步骤S406;若升级不成功,则跳转到步骤S407;
具体地,BMC可以在带升级的模块程序包替换完成后,获取新的程序包中的配置文件,检查配置文件中的版本信息是否发生更新,若发生更新,说明升级成功。
S406:若待升级的模块升级成功,在web页面上反馈对应模块的升级结果。例如,可以在页面上弹窗显示APPName升级成功,该APPName为本次升级的模块所对应的程序名称。也可以通过其他方式在web页面上反馈升级结果,在此不做具体的限定。
若版本信息没有更新,则说明升级不成功,此时跳转到步骤S407。
S407:若待升级的模块升级不成功,对升级程序包进行完整性校验。
BMC在数据包通过合法性校验后,说明接收到的数据包没有被篡改,在传输过程中也没有发生数据丢失,此时若仍然升级不成功,则通过对升级程序包进行完整性校验,来检查是否上传的升级程序包本身不完整或是有文件缺失。
通过对升级程序包进行完整性校验,可以解决打包过程中造成数据包丢失,传输的升级程序包本身不完整造成的BMC固件升级失败的技术问题。
作为本发明的第五实施例,提供了第一实施例中的具体方法。在本发明第四实施例基础上延伸出本发明第五实施例,下面着重叙述第五实施例与第四实施例的不同之处,相同之处不再赘述。
图5示出了对BMC固件升级程序包进行完整性校验的流程示意图。该对BMC固件升级程序包进行完整性校验的方法包括以下步骤:
对于上传BMC固件升级程序包的发送端,在编译完成后,即生成一个文件列表文件,并将对应列表文件与升级程序一起打包上传。具体的,生成文件列表1的步骤包括:
S501:对编译后的程序文件,获取升级程序包中的文件名称,生成文件列表1;
对于编译后的升级程序包,发送端获取升级程序包中的文件名称,根据文件名称,生成一个文件列表1。文件列表1可以为1个BMC可读的表格或是配置文件,该文件列表1中包含该升级程序包中所有的文件的完整名称以及文件的数量。
S502:将文件列表1与升级程序一起打包上传。
该文件列表1包含在升级程序包中,文件列表1中包含其他的文件名称和其他的文件的数量,该其他文件为升级程序包中除列表文件1外的升级文件。该对升级程序包打包上传的具体步骤与第一实施例中程序包固件上传的步骤相同,在此不做赘述。
BMC接收到升级程序包后,对升级程序包进行解压缩,并根据接收到的文件生成文件列表2。具体的,生成文件列表2的步骤包括:
S503:根据接收到的升级文件,生成文件列表2;
BMC接收到升级程序包后,对升级程序包进行解压缩,获取解压后的升级程序包中的所有升级文件名称,根据文件名称,生成一个文件列表2。具体的,该升级文件为用于替换待升级程序的文件,不包含文件包中的签名文件。文件列表2可以为1个BMC可读的表格或是配置文件,该文件列表2中包含该升级程序包中所有的文件的完整名称以及文件的数量。
S504:比对文件列表2和文件列表1,判断二者是否相同;
对文件列表2和文件列表1进行解析。首先比对文件列表2和文件列表1的文件数量是否相同,若文件数量不同,则完整性校验不通过。例如,若文件列表1中文件数量为5,说明编译后的升级程序应当包含5个文件,然而BMC实际接收到的文件列表2中的文件数量为3,说明打包过程中丢失了文件。若文件列表2和文件列表1的文件数量相同,则再具体比对二者所包含的文件名称是否相同。若二者所包含的文件名称完全相同,则完整性校验通过。若文件列表2和文件列表1中包含的文件有所不同,则完整性校验失败。
S505:若文件列表2和文件列表1相同,则完整性校验通过,利用接收到的升级程序包进行替换升级。
完整性校验通过时,BMC再次利用接收到的升级程序包替换待升级程序的文件,从而实现对BMC进行固件升级。
作为本发明的第六实施例,提供了第五实施例中完整性校验不通过时的具体处理方法。在本发明第五实施例基础上延伸出本发明第六实施例,下面着重叙述第五实施例与第四实施例的不同之处,相同之处不再赘述。
若步骤S504中,文件列表2和文件列表1不同,则完整性校验无法通过;此时,可以判断上传的升级程序包中本身缺失了升级文件,根据文件列表2和文件列表1的比对结果,确定所缺失的升级文件具体是什么文件,要求重新上传所缺失的升级文件,并根据升级后的文件进行固件升级。具体步骤包括:
S506:若文件列表2和文件列表1不同,则完整性校验失败,则根据文件列表2和文件列表1比对结果,确定所缺失的升级文件。
优选的,可以在web界面上反馈文件列表2相对于文件列表1所缺失的升级文件;
若完整性校验失败,则根据文件列表2和文件列表1中所文件名称的比对结果,确定所缺失的文件。例如,文件列表1中包含的文件名称为X1、X2、X3、X4、X5,然而文件列表2中包含的文件名称为X1、X3、X4,通过将文件列表2和文件列表1进行对比,确定此时缺失文件X2、X5。此时,在web界面上反馈有文件缺失,缺失的文件为X2和X5;
S507:获取待补全文件,该待补全文件为所确定的缺失的升级文件;
优选的,可以由BMC向存储有升级程序包的云服务器发送请求,获取步骤S505中确定的所缺失的升级文件。云服务器接收到BMC发送的请求后,重新上传BMC所确定的缺失的文件,例如步骤S505中确定缺失的文件为X2和X5,则重新通过web UI上传文件X2和X5。在上传前,云服务器的打包程序同样对X2和X5进行签名和打包。具体的签名和打包方式与第一实施例中的签名和打包方式相同,在此不做赘述。
优选的,也可以由开发人员根据步骤S506中在web界面上的反馈的结果,通过打包程序将待补全文件进行签名和打包后,通过web UI上传到BMC中。
S508:对获取的待补全文件进行合法性校验,判断是否校验通过;
获取到待补全文件X2和X5后,BMC对文件进行解签名,并通过摘要比对的方式,对文件进行合法性校验。具体的合法性校验方式与第一实施例中的合法性校验方式相同,在此不做赘述。
S509:若合法性校验通过,则利用待补全文件进行替换升级。
若合法性校验通过,则接收到的待补全文件是合法文件,BMC利用待补全文件替换原待升级程序中的文件,以实现固件升级;
S510,若合法性校验不通过,则删除待补全文件,在web界面上反馈合法性校验结果。
若合法性校验通过,则BMC将缺失的文件与同一程序的其他升级文件存储在同一存储路径下,重新利用该升级程序包进行固件升级。若合法性校验不通过,则删除重新上传的文件X2和X5,并在WEB页面反馈合法性校验结果。
作为本发明的第七实施例,提供了第一实施例中的具体实现装置。
参照图6,本申请还提供了一种基板管理控制器的结构示意图,该基板管理控制器包含以下功能模块:
获取模块601,用于获取编译后的升级程序包,该升级程序包为用于BMC中待升级的模块升级的程序包;
优选的,获取模块可将获取到的升级程序包存储到BMC的可读写分区或SD卡中;在完整性校验失败时,获取模块还可以用于获取升级程序包中所缺失的升级文件。
在一些实施例中,BMC还包含列表生成模块602,可以根据获取到的升级程序包中的升级文件,生成文件列表。
合法性校验模块603,用于对获取到的升级程序包进行合法性校验;
升级模块604,用于判断是否校验成功,若升级程序包通过合法性校验,将获取到的升级程序包中的文件进行替换升级程序包。
检查模块605,用于在升级完成后,检查升级后的程序的版本信息,比对该版本信息是否得到了更新,以确认是否升级成功。
删除模块606,用于若合法性校验不成功时,删除获取到的升级程序包,在web页面反馈第一状态码。
完整性校验模块607,用于检查模块检查结果为更新不成功时,则对升级程序包进行完整性校验。
需要说明的是:上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置和方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请还公开一种计算机可读存储介质,该计算机可读存储介质存储有指令,当该指令被执行时,执行如上述的任一项方法步骤。
本申请还公开一种电子设备。参照图7,图7是本申请实施例的公开的一种电子设备的结构示意图。该电子设备700可以包括:至少一个处理器701,至少一个网络接口704,用户接口703,存储器702,至少一个通信总线705,至少一个基板管理控制器706。
其中,通信总线705用于实现这些组件之间的连接通信。
其中,用户接口703可以包括显示屏(Display)、摄像头(Camera),可选用户接口703还可以包括标准的有线接口、无线接口。
其中,网络接口704可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,基板管理控制器706可以采用高级精简指令集处理器(Advanced RISCMachines,ARM)硬件形式来实现。
其中,处理器701可以包括一个或者多个处理核心。该处理器可以为BMC芯片。处理器701利用各种接口和线路连接整个服务器内的各个部分,通过运行或执行存储在存储器702内的指令、程序、代码集或指令集,以及调用存储在存储器702内的数据,执行服务器的各种功能和处理数据。可选的,处理器701可以采用数字信号处理(Digital SignalProcessing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器701可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics ProcessingUnit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器701中,单独通过一块芯片进行实现。
其中,存储器702可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器702包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器702可用于存储指令、程序、代码、代码集或指令集。存储器702可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及的数据等。存储器702可选的还可以是至少一个位于远离前述处理器701的存储装置。参照图7,作为一种计算机存储介质的存储器702中可以包括操作系统、网络通信模块、用户接口模块以及一种BMC固件升级的应用程序。
在图7所示的电子设备700中,用户接口703主要用于为用户提供输入的接口,获取用户输入的数据;而处理器701可以用于调用存储器702中存储一种BMC固件升级的应用程序,当由一个或多个处理器701执行时,使得电子设备700执行如上述实施例中一个或多个该的方法。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必需的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几种实施方式中,应该理解到,所披露的装置,可通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其他的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上该者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践真理的公开后,将容易想到本公开的其他实施方案。
本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。

Claims (10)

1.一种固件升级方法,所述方法应用于BMC中,其特征在于,包括:
获取编译后的升级程序包,所述升级程序包为用于BMC中待升级的模块升级的程序包;
对获取到的升级程序包进行合法性校验,判断是否校验通过;
若合法性校验通过,将获取到的升级程序包中的升级文件进行替换升级;
若合法性校验不通过,则删除接收到的升级程序包,并在web页面反馈第一状态码。
2.根据权利要求1所述的一种固件升级方法,其特征在于,
所述编译后的升级程序包为一个压缩文件包,压缩文件包中包含签名文件和升级文件,其中,所述升级文件为编译后的升级程序包中包含的用于BMC固件升级的文件,所述签名文件为对编译后的程序文件进行摘要计算,得到第一摘要后,再对每个第一摘要进行签名得到的文件。
3.根据权利要求1所述的一种固件升级方法,其特征在于,所述对获取到的升级程序包进行合法性校验,包括:
对升级程序包进行解压缩,获取压缩包内的签名文件及相应的升级文件;
对升级程序包中签名文件进行解签名,得到第二摘要;
计算与签名文件前缀相同的升级文件的摘要,得到各升级文件的第三摘要;
判断各个签名文件的第二摘要是否等于对应升级文件的第三摘要;
若每个签名文件的第二摘要均等于对应升级文件的第三摘要相同,则合法性校验通过,否则,合法性校验不通过。
4.根据权利要求1所述的一种固件升级方法,其特征在于,所述获取到的升级程序包中的升级文件进行替换升级之后,还包括:
检查待升级的模块是否升级成功;
若待升级的模块升级不成功,对升级程序包进行完整性校验。
5.根据权利要求4所述的一种固件升级方法,其特征在于,
所述升级程序包中包含文件列表1,所述文件列表1根据编译后的升级程序包生成,文件列表1中包含升级程序包中升级文件的名称和升级文件的数量。
6.根据权利要求4所述的一种固件升级方法,其特征在于,所述对升级程序包进行完整性校验包括:
根据接收到的升级文件,生成文件列表2;
比对文件列表2和文件列表1,判断二者是否相同;
若文件列表2和文件列表1相同,则完整性校验通过,利用接收到的升级程序包进行替换升级。
7.根据权利要求6所述的一种固件升级方法,其特征在于,所述对升级程序包进行完整性校验还包括:
若文件列表2和文件列表1不同,则完整性校验失败,则根据文件列表2和文件列表1比对结果,确定所缺失的升级文件;
获取待补全文件,所述待补全文件为所确定的缺失的升级文件;
对获取的待补全文件进行合法性校验,判断是否校验通过;
若合法性校验通过,则利用待补全文件进行替换升级;
若合法性校验不通过,则删除待补全文件,在web界面上反馈合法性校验结果。
8.一种基板管理控制器,其特征在于,所述基板管理控制器包括:
获取模块,用于获取编译后的升级程序包,所述升级程序包为用于待升级的模块升级的程序包;
合法性校验模块,用于对获取到的升级程序包进行合法性校验;
升级模块,用于判断是否校验成功,若升级程序包通过合法性校验,将获取到的升级程序包中的文件进行替换升级;
检查模块,用于在升级完成后,检查升级后的程序的版本信息,比对该版本信息是否得到了更新,以确认是否升级成功;
删除模块,用于若合法性校验不成功时,删除获取到的升级程序包,在web页面反馈第一状态码;
完整性校验模块,用于检查模块检查结果为升级不成功时,对升级程序包进行完整性校验。
9.一种电子设备,其特征在于,包括处理器、存储器、用户接口及网络接口、基板管理控制器,所述存储器用于存储指令,所述用户接口和网络接口用于给其他设备通信,所述处理器和基板管理控制器用于执行所述存储器中存储的指令,以使所述电子设备执行如权利要求1-7任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,执行如权利要求1-7任意一项所述的方法步骤。
CN202310321355.XA 2023-03-29 2023-03-29 一种固件升级方法、电子设备 Pending CN116339780A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310321355.XA CN116339780A (zh) 2023-03-29 2023-03-29 一种固件升级方法、电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310321355.XA CN116339780A (zh) 2023-03-29 2023-03-29 一种固件升级方法、电子设备

Publications (1)

Publication Number Publication Date
CN116339780A true CN116339780A (zh) 2023-06-27

Family

ID=86883663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310321355.XA Pending CN116339780A (zh) 2023-03-29 2023-03-29 一种固件升级方法、电子设备

Country Status (1)

Country Link
CN (1) CN116339780A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112001A (zh) * 2023-10-24 2023-11-24 北京傲星科技有限公司 一种板卡中软件升级方法及装置
CN117978853A (zh) * 2024-03-29 2024-05-03 成都智邦科技有限公司 一种充电桩的远程升级控制方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112001A (zh) * 2023-10-24 2023-11-24 北京傲星科技有限公司 一种板卡中软件升级方法及装置
CN117978853A (zh) * 2024-03-29 2024-05-03 成都智邦科技有限公司 一种充电桩的远程升级控制方法

Similar Documents

Publication Publication Date Title
CN107346252B (zh) 应用更新方法和装置
CN116339780A (zh) 一种固件升级方法、电子设备
CN105262627B (zh) 一种固件升级方法、装置及系统
CN111880740B (zh) 数据处理方法、装置、计算机系统及可读存储介质
CN106294102B (zh) 应用程序的测试方法、客户端、服务器及系统
CN111538517B (zh) 一种服务器固件升级方法、系统及电子设备和存储介质
CN107066300B (zh) 一种存储设备的固件升级方法和存储设备
CN111880826A (zh) 云业务应用升级方法、装置、电子设备和存储介质
WO2015070777A1 (zh) 软件升级方法、客户端、服务器及系统、存储介质
CN112087647B (zh) 一种广告监测方法、装置、电子设备及介质
CN110633092A (zh) 用于ota升级的服务端及嵌入式设备升级方法及装置
CN112035144A (zh) 区块链系统的升级方法、装置、计算机设备及存储介质
CN114116305A (zh) 基于pfr的bios固件恢复方法、系统、终端及存储介质
CN113986296A (zh) 一种固件升级方法、装置、电子设备和存储介质
CN114371859A (zh) 应用软件rasp程序更新方法、服务器、电子设备及存储介质
CN111176685A (zh) 一种升级方法及装置
CN111984287A (zh) 设备升级方法及系统
CN112286565A (zh) 一种基于存储容器的嵌入式系统差分升级方法
CN111400771A (zh) 目标分区的校验方法及装置、存储介质、计算机设备
JP2011159011A (ja) ジョブ監視システム及びジョブ監視プログラム
CN116450391A (zh) 一种故障定位方法、装置、设备及介质
CN115883533A (zh) 文件同步方法、装置、计算机设备及存储介质
CN115129509B (zh) 一种数据传输方法、装置、介质
CN111090442A (zh) 一种应用更新方法、装置和存储介质
CN115495129A (zh) 一种固件升级方法、装置、设备、介质和产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination