CN117608618B - 服务器固件升级方法及装置、存储介质和电子设备 - Google Patents
服务器固件升级方法及装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN117608618B CN117608618B CN202410098517.2A CN202410098517A CN117608618B CN 117608618 B CN117608618 B CN 117608618B CN 202410098517 A CN202410098517 A CN 202410098517A CN 117608618 B CN117608618 B CN 117608618B
- Authority
- CN
- China
- Prior art keywords
- target
- file
- version
- image
- firmware
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000012795 verification Methods 0.000 claims description 119
- 238000004590 computer program Methods 0.000 claims description 16
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 6
- 239000000758 substrate Substances 0.000 claims 8
- 239000000523 sample Substances 0.000 claims 3
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 125000004122 cyclic group Chemical group 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种服务器固件升级方法及装置、存储介质和电子设备,其中,该方法包括:获取固件升级请求;响应于固件升级请求,通过基板管理控制器BMC确定目标固件的版本待升级至的目标版本,并从第一镜像文件中获取目标镜像文件的文件内容;使用目标镜像文件的文件内容,将目标固件的版本升级至目标版本。通过本申请,解决了服务器固件升级效率较低的问题,进而达到了提升服务器固件升级效率的效果。
Description
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种服务器固件升级方法及装置、存储介质和电子设备。
背景技术
相关技术中,在对服务器的固件的版本进行升级的情况下,例如,在对服务器中的Gaudi 2的CPLD(Complex Programmable logic device,复杂可编程逻辑器件)固件进行升级的情况下,用户需要手动确定CPLD固件当前所需要升级至的版本,用户再手动确认需要对固件的版本进行升级时所使用的文件,再对固件进行升级。
可以理解的是,相关技术中,对服务器固件的版本的升级方式,所花费的时间较长,升级效率较低。
发明内容
本申请实施例提供了一种服务器固件升级方法及装置、存储介质和电子设备,以至少解决相关技术中服务器固件升级效率较低的问题。
根据本申请的一个实施例,提供了一种服务器固件升级方法,包括:获取固件升级请求,其中,所述固件升级请求中携带有第一镜像文件,所述第一镜像文件中包括目标镜像头部信息和多个镜像文件中的每个镜像文件的文件内容,所述多个镜像文件中的每个镜像文件的文件内容用于将目标固件的版本升级至对应的版本,所述固件升级请求用于请求对服务器中的目标固件的版本进行升级;响应于所述固件升级请求,通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,其中,所述多个镜像文件包括所述目标镜像文件,所述目标镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本。
在一个示例性实施例中,所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,包括:获取所述第一镜像文件中的所述目标镜像头部信息中包括的目标数量,其中,所述目标数量用于表示所述第一镜像文件中包括的镜像文件的文件内容的数量;根据所述目标数量,确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容。
在一个示例性实施例中,所述根据所述目标数量,确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容,包括:在所述目标数量大于或者等于2的情况下,获取所述目标固件中的目标寄存器中存储的所述目标固件的目标状态值,其中,所述目标状态值用于指示所述目标固件的版本待升级至的所述目标版本;根据所述目标状态值,确定所述目标固件的版本待升级至的所述目标版本,并根据所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容。
在一个示例性实施例中,所述根据所述目标状态值,确定所述目标固件的版本待升级至的所述目标版本,包括:从具有对应关系的状态值和版本标识中确定与所述目标状态值具有对应关系的所述目标固件的所述目标版本的第一标识;所述根据所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容,包括:根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容。
在一个示例性实施例中,所述根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容,包括:确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;从所述目标镜像头部信息中确定与所述第二标识具有对应关系的所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址和目标文件大小,其中,所述目标镜像头部信息中存储有一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小,所述一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小包括具有对应关系的所述第二标识以及所述目标起始偏移地址和所述目标文件大小;在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
在一个示例性实施例中,所述确定与所述第一标识对应的第二标识,包括:从所述目标镜像头部信息中确定与所述第一标识对应的所述第二标识,其中,所述目标镜像头部信息中还存储有一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识,所述一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识包括具有对应关系的所述第一标识和所述第二标识。
在一个示例性实施例中,所述根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容,包括:确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;从所述目标镜像头部信息中确定与所述第二标识具有对应关系的第一起始偏移地址和第一结束偏移地址,以及与所述第二标识具有对应关系的第二起始偏移地址和第二结束偏移地址,其中,所述第一起始偏移地址和所述第一结束偏移地址用于确定所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址,所述第二起始偏移地址和所述第二结束偏移地址用于确定所述目标镜像文件的目标文件大小;根据所述第一起始偏移地址和所述第一结束偏移地址确定所述目标起始偏移地址,并根据所述第二起始偏移地址和所述第二结束偏移地址确定所述目标文件大小;在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
在一个示例性实施例中,所述根据所述第一起始偏移地址和所述第一结束偏移地址确定所述目标起始偏移地址,并根据所述第二起始偏移地址和所述第二结束偏移地址确定所述目标文件大小,包括:从所述第一镜像文件中获取所述第一起始偏移地址至第一结束偏移地址上存储的数据,得到所述目标起始偏移地址,并从所述第一镜像文件中获取所述第二起始偏移地址至第二结束偏移地址上存储的数据,得到所述目标文件大小。
在一个示例性实施例中,所述从所述第一镜像文件中获取所述目标镜像文件的文件内容,还包括:在所述目标数量等于1的情况下,获取所述第一镜像文件的文件内容作为所述目标镜像文件的文件内容。
在一个示例性实施例中,在所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容之前,所述方法还包括:对所述第一镜像文件中的所述目标镜像头部信息进行校验,并对所述第一镜像文件中包括的所述多个镜像文件的文件内容进行校验;所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,包括:在所述目标镜像头部信息和所述多个镜像文件的文件内容均通过校验的情况下,通过所述BMC确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容。
在一个示例性实施例中,所述对所述第一镜像文件中的所述目标镜像头部信息进行校验,包括:获取所述目标镜像头部信息中存储的第一校验值,并获取所述目标镜像头部信息中包括的除所述第一校验值之外的数据,其中,所述第一校验值用于校验所述目标镜像头部信息,所述第一校验值是通过预设的目标校验算法得到的校验值;将获取到的数据作为所述目标校验算法的输入,得到所述目标校验算法输出的第二校验值;在所述第一校验值和所述第二校验值相同的情况下,确定所述目标镜像头部信息通过校验。
在一个示例性实施例中,所述对所述第一镜像文件中包括的所述多个镜像文件的文件内容进行校验,包括:获取所述目标镜像头部信息中存储的第一组校验值,并获取所述第一镜像文件中包括的多个镜像文件中的每个镜像文件的文件内容,得到一组镜像文件的文件内容,其中,所述第一组校验值中的每个校验值用于校验所述一组镜像文件中对应的一个镜像文件的文件内容,所述第一组校验值是通过预设的目标校验算法得到的校验值;将所述一组镜像文件的文件内容分别作为所述目标校验算法的输入,得到所述目标校验算法输出的第二组校验值,其中,在将所述一组镜像文件中的每个镜像文件的文件内容作为所述目标校验算法的输入时,所述目标校验算法的输出包括所述第二组校验值中的一个校验值;在所述第一组校验值中的各个校验值和所述第二组校验值中对应的校验值相同的情况下,确定所述一组镜像文件的文件内容通过校验。
在一个示例性实施例中,所述将所述一组镜像文件的文件内容分别作为所述目标校验算法的输入,得到所述目标校验算法输出的第二组校验值,包括:将N2个镜像文件中的第i2个镜像文件的文件内容作为所述目标校验算法的输入,得到所述目标校验算法输出的N2个校验值中的第i2个校验值,其中,所述一组镜像文件包括所述N2个镜像文件,所述第二组校验值包括所述N2个校验值,N2为正整数,i2为小于或者等于N2的正整数;在所述第一组校验值中的各个校验值和所述第二组校验值中对应的校验值相同的情况下,确定所述一组镜像文件的文件内容通过校验,包括:在N1个校验值中的第i1个校验值和所述N2个校验值中的所述第i2个校验值相同的情况下,确定N1个镜像文件中的第i1个镜像文件的文件内容通过校验,其中,所述第一组校验值包括所述N1个校验值,所述第i1个校验值是所述N1个校验值中与所述第i1个镜像文件的文件内容所对应的校验值,N1为正整数,i1为小于或者等于N1的正整数,N1等于N2,i1等于i2。
在一个示例性实施例中,在所述获取固件升级请求之前,所述方法还包括:获取所述多个镜像文件中的每个镜像文件中包括的镜像头部信息,得到一组镜像头部信息,其中,所述多个镜像文件中的每个镜像文件中包括每个镜像文件的镜像头部信息和所述每个镜像文件的文件内容;将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息。
在一个示例性实施例中,所述将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息,包括:将所述一组镜像头部信息作为目标校验算法的输入,得到第一校验值;并将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息和所述第一校验值。
在一个示例性实施例中,所述将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息,包括:通过执行以下步骤,将M个镜像头部信息中的第j个镜像头部信息和第j+1个镜像头部信息记录在所述目标镜像头部信息中,其中,所述一组镜像头部信息包括所述M个镜像头部信息,所述第j个镜像头部信息是M个镜像文件中第j个镜像文件中包括的镜像头部信息,所述第j+1个镜像头部信息是所述M个镜像文件中第j+1个镜像文件中包括的镜像头部信息,M为大于或者等于2的正整数,j为小于或者等于M-1的正整数:在所述目标镜像头部信息中按顺序记录所述第j个镜像头部信息中包括的第j个镜像文件标识、第j个校验值、第j个起始偏移地址和第j个文件大小、以及所述第j+1个镜像头部信息中包括的第j+1个镜像文件标识、第j+1个校验值、第j+1个起始偏移地址和第j+1个文件大小;其中,所述第j个镜像文件的文件内容用于将所述目标固件的版本升级至第j个版本,所述第j个镜像文件标识是所述第j个镜像文件的标识,所述第j个校验值是通过预设的目标校验算法得到的校验值,所述第j个镜像文件的文件内容包括在所述第一镜像文件中从所述第j个起始偏移地址开始获取到的所述第j个文件大小的数据,所述第j+1个镜像文件的文件内容用于将所述目标固件的版本升级至第j+1个版本,所述第j+1个镜像文件标识是所述第j+1个镜像文件的标识,所述第j+1个校验值是通过所述目标校验算法得到的校验值,所述第j+1个镜像文件的文件内容包括在所述第一镜像文件中从所述第j+1个起始偏移地址开始获取到的所述第j+1个文件大小的数据。
在一个示例性实施例中,所述使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本,包括:使能所述BMC与所述目标固件之间的目标接口,其中,所述BMC和所述目标固件之间通过所述目标接口连接,使能后的所述目标接口被设置为允许对所述目标固件的版本进行升级;通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
在一个示例性实施例中,所述目标接口包括联合测试工作组JTAG接口。
在一个示例性实施例中,在所述使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本之后,所述方法还包括:确定是否成功将所述目标固件的版本升级至所述目标版本;在确定未成功将所述目标固件的版本升级至所述目标版本的情况下,生成目标提示信息,其中,所述目标提示信息用于提示所述目标固件的版本升级失败。
在一个示例性实施例中,在确定未成功将所述目标固件的版本升级至所述目标版本的情况下,所述方法还包括:重新使能所述BMC与所述目标固件之间的目标接口,其中,所述BMC和所述目标固件之间通过所述目标接口连接,使能后的所述目标接口被设置为允许对所述目标固件的版本进行升级;通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本;或者通过使能后的所述目标接口再次将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
在一个示例性实施例中,所述方法还包括:确定所述目标固件的版本升级失败的次数;在所述次数大于或者等于预设的次数阈值的情况下,确定所述第一镜像文件中包括的所述目标镜像文件的文件内容异常,获取所述目标固件的所述目标版本对应的第二镜像文件的文件内容,并将所述第二镜像文件的文件内容记录在所述第一镜像文件中的目标预留区域中,其中,所述第二镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;通过使能后的所述目标接口将所述目标预留区域中的所述目标版本对应的第二镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述第二镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
根据本申请的另一个实施例,提供了一种服务器固件升级装置,包括:第一获取模块,用于获取固件升级请求,其中,所述固件升级请求中携带有第一镜像文件,所述第一镜像文件中包括目标镜像头部信息和多个镜像文件中的每个镜像文件的文件内容,所述多个镜像文件中的每个镜像文件的文件内容用于将目标固件的版本升级至对应的版本,所述固件升级请求用于请求对服务器中的目标固件的版本进行升级;第一确定模块,用于响应于所述固件升级请求,通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,其中,所述多个镜像文件包括所述目标镜像文件,所述目标镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;升级模块,用于使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,在获取到固件升级请求的情况下,可以表明希望对服务器固件的版本进行升级,在这样的情况下,可以通过BMC自动确定固件的版本待升级至的目标版本,并从第一镜像文件中获取用于将固件的版本升级至目标版本的目标镜像文件的文件内容,使用镜像文件的文件内容,将服务器固件的版本升级至目标版本,通过这样的方式,避免了用户手动确认服务器固件待升级至的目标版本,以及手动筛选用于将固件的版本升级至目标版本的目标镜像文件的文件内容,因此,可以解决服务器固件升级较低问题,达到提升服务器固件升级效果。
附图说明
图1是本申请实施例的一种服务器固件升级方法的服务器设备的硬件结构框图;
图2是根据本申请实施例的一种可选的服务器固件升级方法的应用场景示意图;
图3是根据本申请实施例的服务器固件升级方法的流程图;
图4是根据本申请实施例的一种可选的获取目标镜像文件的文件内容的示意图;
图5是根据本申请实施例的一种可选的对目标镜像头部信息和多个镜像文件的文件内容进行校验的示意图;
图6是根据本申请实施例的一种可选的将第二镜像文件的文件内容记录在第一镜像文件中的目标预留区域的示意图;
图7是根据本申请实施例的一种可选的服务器固件升级的示意图;
图8是根据本申请实施例的服务器固件升级装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在服务器设备或者类似的运算装置中执行。以运行在服务器设备上为例,图1是本申请实施例的一种服务器固件升级方法的服务器设备的硬件结构框图。如图1所示,服务器设备可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述服务器设备还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器设备的结构造成限定。例如,服务器设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的服务器固件升级方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器设备的通信供应方提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种服务器固件升级方法,为了更好的理解本申请实施例中的服务器固件升级方法的应用场景,可以但不限于结合可选的实施例,对本申请实施例中的服务器固件升级方法的应用场景进行解释和说明,可以但不限于适用于本申请实施例。
图2是根据本申请实施例的一种可选的服务器固件升级方法的应用场景示意图,如图2所示,可以但不限于以对服务器上的Gaudi 2的CPLD固件的版本进行升级为例,同网段电脑中部署有升级工具,升级工具可以但不限于包括升级应用程序、升级小程序或者升级网址等等,用户通过升级工具(例如,点击开始升级等等)向服务器BMC发起固件升级请求,其中,固件升级请求中携带有第一镜像文件,第一镜像文件中包括目标镜像头部信息和多个镜像文件中的每个镜像文件的文件内容,多个镜像文件中的每个镜像文件的文件内容用于将目标固件的版本升级至对应的版本,固件升级请求用于请求对服务器中的目标固件的版本(例如,Gaudi 2的CPLD固件的版本)进行升级。
在这样的情况下,响应于固件升级请求,通过基板管理控制器BMC确定目标固件的版本(例如,Gaudi 2的CPLD固件的版本)待升级至的目标版本,并从第一镜像文件中获取目标镜像文件的文件内容,其中,多个镜像文件包括目标镜像文件,目标镜像文件的文件内容用于将目标固件的版本升级至目标版本。
使用目标镜像文件的文件内容,将目标固件的版本(例如,Gaudi 2的CPLD固件的版本)升级至目标版本,例如,通过BMC与CPLD的固件之间的JTAG接口将目标固件的版本(例如,Gaudi 2的CPLD固件的版本)升级至目标版本。
相较于相关技术中,需要手动的通过同网段电脑中部署的信息读取工具读取Gaudi 2寄存器信息,用户通过读取到的寄存器信息手动判断Gaudi 2的CPLD固件的版本所需要升级至的版本,然后再根据判断的结果筛选Gaudi 2的CPLD固件的版本所需要升级至的版本所对应的镜像,然后才能打开升级工具,将该固件的版本进行升级(即对应图2中的虚线部分),通过本申请实施例中的服务器固件升级方法,实现了通过BMC自动确定固件的版本待升级至的版本,并且可以自动筛选固件的版本待升级至的版本所对应的镜像文件的内容,提升了固件的版本的升级效率。
在本实施例中提供了一种服务器固件升级方法,图3是根据本申请实施例的服务器固件升级方法的流程图,如图3所示,该流程包括如下步骤:
步骤S302,获取固件升级请求,其中,所述固件升级请求中携带有第一镜像文件,所述第一镜像文件中包括目标镜像头部信息和多个镜像文件中的每个镜像文件的文件内容,所述多个镜像文件中的每个镜像文件的文件内容用于将目标固件的版本升级至对应的版本,所述固件升级请求用于请求对服务器中的目标固件的版本进行升级;
步骤S304,响应于所述固件升级请求,通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,其中,所述多个镜像文件包括所述目标镜像文件,所述目标镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;
步骤S306,使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本。
通过上述步骤,在获取到固件升级请求的情况下,可以表明希望对服务器固件的版本进行升级,在这样的情况下,可以通过BMC自动确定固件的版本待升级至的目标版本,并从第一镜像文件中获取用于将固件的版本升级至目标版本的目标镜像文件的文件内容,使用镜像文件的文件内容,将服务器固件的版本升级至目标版本,通过这样的方式,避免了用户手动确认服务器固件待升级至的目标版本,以及手动筛选用于将固件的版本升级至目标版本的目标镜像文件的文件内容,因此,可以解决服务器固件升级较低问题,达到提升服务器固件升级效果。
在上述步骤S302提供的技术方案中,目标固件可以但不限于包括固化在服务器的硬件(例如,存储器等等)中的一组程序,目标固件的版本可以但不限于包括不同版本的一组程序,目标固件可以但不限于包括服务器的BIOS(Basic input/ Output System,基本输入输出系统)、服务器OS(Operating system,操作系统)、RAM芯片以及处理器(例如,Gaudi2)等等。
可选的,在本实施例中,在第一镜像文件中包括多个镜像文件中的每个镜像文件的文件内容,可以理解的是,多个镜像文件中的每个镜像文件的文件内容均被包括在第一镜像文件中,相较于相关技术中,多个镜像文件是分别独立的镜像文件,通过本申请实施例中的方式,节省了存储多个镜像文件所需的计算机资源,提升了计算机资源的利用率。
可选的,在本实施例中,多个镜像文件中的每个镜像文件的文件内容用于将目标固件的版本升级至的版本是不同的,例如,镜像文件1的文件内容用于将目标固件的版本升级至版本1,镜像文件2的文件内容用于将目标固件的版本升级至版本2,镜像文件3的文件内容用于将目标固件的版本升级至版本3;可以理解的是,多个镜像文件中的每个镜像文件的文件内容均是一个完整的目标固件的版本,多个镜像文件中的各个镜像文件的文件内容可以但不限于用于对目标固件的版本的不同功能进行升级。
通过这样的方式,关于固件的版本具体的筛选和对应的镜像文件的内容的处理都在BMC内部执行,降低现场用户操作复杂度,提高用户的升级效率。简化升级操作步骤,也减少出错的概率,保证升级能够安全、高效的完成。
在一个示范性实施例中,在所述获取固件升级请求之前,所述方法还包括:获取所述多个镜像文件中的每个镜像文件中包括的镜像头部信息,得到一组镜像头部信息,其中,所述多个镜像文件中的每个镜像文件中包括每个镜像文件的镜像头部信息和所述每个镜像文件的文件内容;将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息。
可选的,在本实施例中,为了保证第一镜像文件中的多个镜像文件的文件内容之间的有序性,避免多个镜像文件的文件内容的乱序,可以但不限于获取多个镜像文件中的每个镜像文件中包括的镜像头部信息,将目标镜像头部信息确定为多个镜像文件中的各个镜像文件中包括的镜像头部信息,通过这样的方式,实现了在目标镜像头部信息中统一记录各个镜像文件中的头部信息。
在一个示范性实施例中,可以但不限于通过以下方式将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息:将所述一组镜像头部信息作为目标校验算法的输入,得到第一校验值;并将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息和所述第一校验值。
可选的,在本实施例中,目标校验算法可以但不限于用于根据一组镜像头部信息,生成第一校验值,作为一种可选的示例,目标校验算法可以但不限于包括循环冗余检查算法、纵向冗余校验算法、冗余校验算法、加总异或校验算法、累加和校验算法、以及奇偶校验算法中的一个等等,本申请对目标校验算法不做限制。
可选的,在本实施例中,为了提升目标镜像头部信息的准确性,避免因为错误的镜像头部信息而导致固件的版本升级失败,可以但不限于将一组镜像头部信息作为目标校验算法的输入,可以理解的是,通过目标校验算法根据一组镜像头部信息计算出一个校验值(相当于第一校验值),然后将一组镜像头部信息中的各个镜像头部信息和第一校验值记录在目标镜像头部信息中。
在一个示范性实施例中,可以但不限于通过执行以下步骤,将M个镜像头部信息中的第j个镜像头部信息和第j+1个镜像头部信息记录在所述目标镜像头部信息中,其中,所述一组镜像头部信息包括所述M个镜像头部信息,所述第j个镜像头部信息是M个镜像文件中第j个镜像文件中包括的镜像头部信息,所述第j+1个镜像头部信息是所述M个镜像文件中第j+1个镜像文件中包括的镜像头部信息,M为大于或者等于2的正整数,j为小于或者等于M-1的正整数:在所述目标镜像头部信息中按顺序记录所述第j个镜像头部信息中包括的第j个镜像文件标识、第j个校验值、第j个起始偏移地址和第j个文件大小、以及所述第j+1个镜像头部信息中包括的第j+1个镜像文件标识、第j+1个校验值、第j+1个起始偏移地址和第j+1个文件大小;其中,所述第j个镜像文件的文件内容用于将所述目标固件的版本升级至第j个版本,所述第j个镜像文件标识是所述第j个镜像文件的标识,所述第j个校验值是通过预设的目标校验算法得到的校验值,所述第j个镜像文件的文件内容包括在所述第一镜像文件中从所述第j个起始偏移地址开始获取到的所述第j个文件大小的数据,所述第j+1个镜像文件的文件内容用于将所述目标固件的版本升级至第j+1个版本,所述第j+1个镜像文件标识是所述第j+1个镜像文件的标识,所述第j+1个校验值是通过所述目标校验算法得到的校验值,所述第j+1个镜像文件的文件内容包括在所述第一镜像文件中从所述第j+1个起始偏移地址开始获取到的所述第j+1个文件大小的数据。
可选的,在本实施例中,可以但不限于在目标镜像头部信息中按照预设的顺序记录第j个镜像头部信息中包括的第j个镜像文件标识、第j个校验值、第j个起始偏移地址和第j个文件大小、以及第j+1个镜像头部信息中包括的第j+1个镜像文件标识、第j+1个校验值、第j+1个起始偏移地址和第j+1个文件大小。
可选的,在本实施例中,镜像文件的文件大小可以但不限于用于表示数据的数据量,例如,第j个文件大小可以但不限于用于表示第j个镜像文件的文件内容的数据量,第j+1个文件大小可以但不限于用于表示第j+1个镜像文件的文件内容的数据量等等。
在上述步骤S304提供的技术方案中,可以但不限于响应固件升级请求,通过BMC(Baseboard Management Controller,基板管理控制器)确定目标固件的版本待升级至的目标版本,相较于相关技术中,需要通过手动的方式确定固件的版本待升级至的目标版本,通过本申请实施例中的方式,实现了自动确定固件的版本待升级至的目标版本,提升了确定固件的版本待升级至的目标版本的效率。
可选的,在本实施例中,可以但不限于通过BMC从第一镜像文件中的多个镜像文件的文件内容中获取目标镜像文件的文件内容,可以理解的是,在通过BMC确定了目标固件的版本待升级至的目标版本的情况下,通过BMC自动从第一镜像文件中获取用于将目标固件的版本升级至目标版本的目标镜像文件的文件内容,相较于相关技术中,需要通过手动的方式筛选用于将目标固件的版本升级至目标版本的目标镜像文件的文件内容,通过本申请实施例中的方式,提升了确定用于将目标固件的版本升级至目标版本的目标镜像文件的文件内容的效率。
在一个示范性实施例中,可以但不限于通过以下方式通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本:获取所述第一镜像文件中的所述目标镜像头部信息中包括的目标数量,其中,所述目标数量用于表示所述第一镜像文件中包括的镜像文件的文件内容的数量;根据所述目标数量,确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容。
可选的,在本实施例中,第一镜像文件中的目标镜像头部信息中包括的目标数量可以但不限于用于表示第一镜像文件中包括的镜像文件的文件内容的数量,例如,第一镜像文件中包括镜像文件1的文件内容、镜像文件2的文件内容和镜像文件3的文件内容,那么,第一镜像文件的目标镜像头部信息中包括的目标数量可以但不限于为3。
在一个示范性实施例中,可以但不限于通过以下方式根据所述目标数量,确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容:在所述目标数量大于或者等于2的情况下,获取所述目标固件中的目标寄存器中存储的所述目标固件的目标状态值,其中,所述目标状态值用于指示所述目标固件的版本待升级至的所述目标版本;根据所述目标状态值,确定所述目标固件的版本待升级至的所述目标版本,并根据所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容。
可选的,在本实施例中,在目标数量大于或者等于2的情况下,可以表明第一镜像文件包括至少2个镜像文件的文件内容,在这样的情况下,可以但不限于通过BMC获取目标固件中的目标寄存器中存储的目标固件的目标状态值,目标状态值可以但不限于用于指示目标固件的版本待升级至的目标版本,可以理解的是,目标状态值可以但不限于与目标固件的版本待升级至的目标版本之间具有对应关系。
例如,以目标固件包括服务器中的Gaudi2的CPLD固件为例,在适配Gaudi2的CPLD固件升级时,厂商提供了用于升级的CPLD固件,一般名称上会用fea_pub_cf0,cf0,cf1三个名称进行区分,可以理解的是,第一镜像文件中包括的镜像文件fea_pub_cf0的文件内容用于将CPLD固件的版本升级至版本1,第一镜像文件中包括的镜像文件cf0的文件内容用于将CPLD固件的版本升级至版本2,第一镜像文件中包括的镜像文件cf1的文件内容用于将CPLD固件的版本升级至版本3。
用户升级前,需要先确保固件到位。Gaudi2 CPLD固件刷新前,需要通过BMC接口读取Gaudi2 cpld寄存器(相当于目标寄存器)中的CFG_load_status状态值(相当于目标状态值),CFG_load_status值主要由2个bit(比特)的数值来决定,在CFG_load_status值为0x01的情况下,则代表下次需要将CPLD固件的版本升级至版本3。在CFG_load_status值为0x10的情况下,则代表下次将CPLD固件的版本升级至版本2。在CFG_load_status值为0x11的情况下,则代表下次需要将CPLD固件的版本升级至版本1。
可选的,在本实施例中,目标寄存器中存储的目标固件的目标状态值可以但不限于是动态变化的,例如,在成功将目标固件的版本升级至目标版本的情况下,目标寄存器中存储的目标固件的目标状态值可以但不限于调整为第一状态值,使得下一次需要对目标固件的版本再次进行升级的情况下,可以但不限于根据第一状态值确定目标固件的版本所需要升级至的版本。
在一个示范性实施例中,可以但不限于通过以下方式根据所述目标状态值,确定所述目标固件的版本待升级至的所述目标版本:从具有对应关系的状态值和版本标识中确定与所述目标状态值具有对应关系的所述目标固件的所述目标版本的第一标识;可以但不限于通过以下方式根据所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容:根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容。
可选的,在本实施例中,不同的状态值具有一一对应的版本标识,可以理解的是,不同的状态值所对应的目标固件的版本的标识是不同的。
例如,以目标固件包括服务器中的Gaudi2的CPLD固件为例,第一镜像文件中包括的镜像文件fea_pub_cf0的文件内容用于将CPLD固件的版本升级至版本1,第一镜像文件中包括的镜像文件cf0的文件内容用于将CPLD固件的版本升级至版本2,第一镜像文件中包括的镜像文件cf1的文件内容用于将CPLD固件的版本升级至版本3。
通过BMC接口读取Gaudi2 CPLD寄存器(相当于目标寄存器)中的CFG_load_status状态值(相当于目标状态值),在CFG_load_status值为0x01的情况下,0x01所对应的版本标识为版本3的标识。在CFG_load_status值为0x10的情况下,0x10所对应的版本标识为版本2的标识。在CFG_load_status值为0x11的情况下,0x11所对应的版本标识为版本1的标识。
在一个示范性实施例中,可以但不限于通过以下方式根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容:确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;从所述目标镜像头部信息中确定与所述第二标识具有对应关系的所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址和目标文件大小,其中,所述目标镜像头部信息中存储有一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小,所述一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小包括具有对应关系的所述第二标识以及所述目标起始偏移地址和所述目标文件大小;在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
可选的,在本实施例中,文件大小可以但不限于包括镜像文件的文件内容的数据量,例如,目标文件大小可以但不限于包括目标镜像文件的文件内容的数据量,比如,目标文件大小为200字节,可以理解的是,目标镜像文件的文件内容为200字节。
可选的,在本实施例中,可以但不限于在第一镜像文件中从目标起始偏移地址开始,获取目标文件大小的数据,得到目标镜像文件的文件内容,例如,目标起始偏移地址为13,目标文件大小为200字节,可以但不限于在第一镜像文件中从地址13开始,获取200字节的数据,得到目标镜像文件的文件内容。
在一个示范性实施例中,可以但不限于通过以下方式确定与所述第一标识对应的第二标识:从所述目标镜像头部信息中确定与所述第一标识对应的所述第二标识,其中,所述目标镜像头部信息中还存储有一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识,所述一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识包括具有对应关系的所述第一标识和所述第二标识。
可选的,在本实施例中,可以但不限于在目标镜像头部信息存储的固件版本的标识和镜像文件的标识中确定第一标识所对应的第二标识,例如,第一标识为目标固件的版本1的标识,第二标识为版本1的标识所对应的镜像文件1的标识。
可选的,在本实施例中,第一标识和第二标识可以但不限于包括字母、数字和字符串中的至少一个,或者,第一标识和第二标识可以但不限于包括在对应的进制下的值,例如,十六进制或者二进制等等,本申请对此不作限制。
图4是根据本申请实施例的一种可选的获取目标镜像文件的文件内容的示意图,如图4所示,第一镜像文件中可以但不限于包括目标镜像头部信息和镜像文件1的文件内容、镜像文件2的文件内容和镜像文件3的文件内容以及目标预留区域,作为一种可选的示例,目标镜像头部信息中存储有一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小、以及一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识。
例如,在目标镜像头部信息中存储有具有对应关系的固件版本1的标识1和镜像文件1的标识0x0001,具有对应关系的固件版本2的标识2和镜像文件2的标识0x0002,具有对应关系的固件版本3的标识3和镜像文件3的标识0x0003,在目标镜像头部信息中存储有具有对应关系的镜像文件1的标识0x0001和镜像文件1的文件内容在第一镜像文件中的起始偏移地址13和文件大小50,具有对应关系的镜像文件2的标识0x0002和镜像文件2的文件内容在第一镜像文件中的起始偏移地址63和文件大小40,具有对应关系的镜像文件3的标识0x0003和镜像文件3的文件内容在第一镜像文件中的起始偏移地址103和文件大小45。
例如,在目标固件待升级至的版本为版本2的情况下,在目标镜像头部信息存储的固件版本的标识和镜像文件的标识中确定与第一标识(例如,固件版本2的标识)对应的第二标识(例如,镜像文件2的标识0x0002);从目标镜像头部信息中确定与第二标识(例如,镜像文件2的标识0x0002)具有对应关系的目标镜像文件的文件内容(例如,镜像文件2)在第一镜像文件中的目标起始偏移地址(例如63)和目标文件大小(例如40)。可以但不限于在第一镜像文件中从目标起始偏移地址(例如63)开始,获取目标文件大小(例如40)的数据,得到目标镜像文件(例如,镜像文件2)的文件内容。
在一个示范性实施例中,可以但不限于通过以下方式根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容:确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;从所述目标镜像头部信息中确定与所述第二标识具有对应关系的第一起始偏移地址和第一结束偏移地址,以及与所述第二标识具有对应关系的第二起始偏移地址和第二结束偏移地址,其中,所述第一起始偏移地址和所述第一结束偏移地址用于确定所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址,所述第二起始偏移地址和所述第二结束偏移地址用于确定所述目标镜像文件的目标文件大小;根据所述第一起始偏移地址和所述第一结束偏移地址确定所述目标起始偏移地址,并根据所述第二起始偏移地址和所述第二结束偏移地址确定所述目标文件大小;在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
可选的,在本实施例中,在目标镜像头部信息中存储有第二标识对应的第一组偏移地址和第二组偏移地址,其中,第一组偏移地址包括第一起始偏移地址和第一结束偏移地址,第二组偏移地址中包括第二起始偏移地址和第二结束偏移地址。可以但不限于以第一镜像文件中包括镜像文件1的文件内容、镜像文件2的文件内容和镜像文件3的文件内容为例,对第一镜像文件中的目标镜像头部信息进行解释和说明,目标镜像头部信息如表1所示。
表1
如表1所示,固件版本号可以但不限于在最小固件版本号和最大固件版本号的范围内。镜像文件2的镜像id(相当于第二标识)可以但不限于为0x0002,0x0002具有对应的第一组偏移地址和第二组偏移地址,其中,第一组偏移地址包括镜像偏移地址的起始偏移地址(相当于第一起始偏移地址)和镜像偏移地址的起始偏移地址(相当于第一结束偏移地址),第二组偏移地址中包括镜像大小(相当于目标文件大小)的起始偏移地址(相当于第二起始偏移地址)和结束偏移地址(相当于第二结束偏移地址)。
可选的,在本实施例中,为了提升镜像文件的文件内容的安全性,可以但不限于不在目标镜像头部信息中直接记录镜像文件的文件内容的起始偏移地址和文件大小,而是在目标镜像头部信息中通过在较少的数据中记录镜像文件的文件内容的起始偏移地址和文件大小,通过这样的方式,降低了镜像文件的文件内容出现泄漏的可能性,提升了镜像文件的文件内容的安全性。
在一个示范性实施例中,可以但不限于通过以下方式根据所述第一起始偏移地址和所述第一结束偏移地址确定所述目标起始偏移地址,并根据所述第二起始偏移地址和所述第二结束偏移地址确定所述目标文件大小:从所述第一镜像文件中获取所述第一起始偏移地址至第一结束偏移地址上存储的数据,得到所述目标起始偏移地址,并从所述第一镜像文件中获取所述第二起始偏移地址至第二结束偏移地址上存储的数据,得到所述目标文件大小。
可选的,在本实施例中,可以但不限于从第一镜像文件中获取第一起始偏移地址至第一结束偏移地址上存储的数据,得到目标起始偏移地址,例如,第一起始偏移地址为15,第一结束偏移地址为17,在这样的情况下,可以但不限于从地址15开始,读取地址15至17上存储的数据,得到目标起始偏移地址为40。
可选的,在本实施例中,可以但不限于从第一镜像文件中获取第二起始偏移地址至第二结束偏移地址上存储的数据,得到目标文件大小,例如,第二起始偏移地址为18,第一结束偏移地址为21,在这样的情况下,可以但不限于从地址18开始,读取地址18至21上存储的数据,得到目标文件大小为100字节。
在一个示范性实施例中,可以但不限于通过以下方式从第一镜像文件中获取所述目标镜像文件的文件内容:在所述目标数量等于1的情况下,获取所述第一镜像文件的文件内容作为所述目标镜像文件的文件内容。
可选的,在本实施例中,在目标数量等于1的情况下,可以理解的是,第一镜像文件中仅包括一个镜像文件的文件内容,在这样的情况下,无需对第一镜像文件中包括的镜像文件的内容进行筛选,而是直接获取第一镜像文件中包括的镜像文件的文件内容作为目标镜像文件的文件内容。
在一个示范性实施例中,在所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容之前,上述方法还包括:对所述第一镜像文件中的所述目标镜像头部信息进行校验,并对所述第一镜像文件中包括的所述多个镜像文件的文件内容进行校验;所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,包括:在所述目标镜像头部信息和所述多个镜像文件的文件内容均通过校验的情况下,通过所述BMC确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容。
可选的,在本实施例中,为了提升获取到的目标镜像文件的准确性,避免获取到的错误的镜像文件,或者被修改后的镜像文件,可以但不限于对第一镜像文件中的目标镜像头部信息进行校验,并对第一镜像文件中包括的多个镜像文件的文件内容进行校验。
可选的,在本实施例中,在目标镜像头部信息未通过校验,和/或,多个镜像文件的文件内容中的至少一个镜像文件的文件内容未通过校验的情况下,可以表明第一镜像文件中可能出现了错误,在这样的情况下,继续使用第一镜像文件对目标固件的版本进行升级,可能会导致固件的版本升级失败,或者导致目标固件的版本在升级之后出现崩溃,在这样的情况下,拒绝对目标固件的版本进行升级。
在一个示范性实施例中,可以但不限于通过以下方式对所述第一镜像文件中的所述目标镜像头部信息进行校验:获取所述目标镜像头部信息中存储的第一校验值,并获取所述目标镜像头部信息中包括的除所述第一校验值之外的数据,其中,所述第一校验值用于校验所述目标镜像头部信息,所述第一校验值是通过预设的目标校验算法得到的校验值;将获取到的数据作为所述目标校验算法的输入,得到所述目标校验算法输出的第二校验值;在所述第一校验值和所述第二校验值相同的情况下,确定所述目标镜像头部信息通过校验。
可选的,在本实施例中,在所述第一校验值和所述第二校验值不同的情况下,确定所述目标镜像头部信息未通过校验。
可选的,在本实施例中,第一校验值和第二校验值的生成方式是相同的,例如,第一校验值和第二校验值均是通过预设的目标校验算法得到的校验值。
在一个示范性实施例中,可以但不限于通过以下方式对第一镜像文件中包括的所述多个镜像文件的文件内容进行校验:获取所述目标镜像头部信息中存储的第一组校验值,并获取所述第一镜像文件中包括的多个镜像文件中的每个镜像文件的文件内容,得到一组镜像文件的文件内容,其中,所述第一组校验值中的每个校验值用于校验所述一组镜像文件中对应的一个镜像文件的文件内容,所述第一组校验值是通过预设的目标校验算法得到的校验值;将所述一组镜像文件的文件内容分别作为所述目标校验算法的输入,得到所述目标校验算法输出的第二组校验值,其中,在将所述一组镜像文件中的每个镜像文件的文件内容作为所述目标校验算法的输入时,所述目标校验算法的输出包括所述第二组校验值中的一个校验值;在所述第一组校验值中的各个校验值和所述第二组校验值中对应的校验值相同的情况下,确定所述一组镜像文件的文件内容通过校验。
可选的,在本实施例中,在第一组校验值中至少存在一个校验值和第二组校验值中对应的校验值不同的情况下,确定一组镜像文件的文件内容未通过校验。
可选的,在本实施例中,第一组校验值中的各个校验值和第二组校验值中的各个校验值的生成方式是相同的,例如,第一组校验值中的各个校验值和第二组校验值中的各个校验值均是通过预设的目标校验算法得到的校验值。
在一个示范性实施例中,可以但不限于通过以下方式将所述一组镜像文件的文件内容分别作为所述目标校验算法的输入,得到所述目标校验算法输出的第二组校验值:将N2个镜像文件中的第i2个镜像文件的文件内容作为所述目标校验算法的输入,得到所述目标校验算法输出的N2个校验值中的第i2个校验值,其中,所述一组镜像文件包括所述N2个镜像文件,所述第二组校验值包括所述N2个校验值,N2为正整数,i2为小于或者等于N2的正整数;在所述第一组校验值中的各个校验值和所述第二组校验值中对应的校验值相同的情况下,确定所述一组镜像文件的文件内容通过校验,包括:在N1个校验值中的第i1个校验值和所述N2个校验值中的所述第i2个校验值相同的情况下,确定N1个镜像文件中的第i1个镜像文件的文件内容通过校验,其中,所述第一组校验值包括所述N1个校验值,所述第i1个校验值是所述N1个校验值中与所述第i1个镜像文件的文件内容所对应的校验值,N1为正整数,i1为小于或者等于N1的正整数,N1等于N2,i1等于i2。
可选的,在本实施例中,在N1个校验值中的第i1个校验值和所述N2个校验值中的所述第i2个校验值不同的情况下,确定N1个镜像文件中的第i1个镜像文件的文件内容未通过校验,其中,所述第一组校验值包括所述N1个校验值,所述第i1个校验值是所述N1个校验值中与所述第i1个镜像文件的文件内容所对应的校验值。
为了更好的理解本申请实施例中关于对第一镜像文件中包括的镜像头部信息和镜像文件的文件内容进行校验的过程,下面结合可选的实施例,对本申请实施例的中的对第一镜像文件中包括的镜像头部信息和镜像文件的文件内容进行校验的过程进行解释和说明,可以但不限于适用于本申请实施例。
图5是根据本申请实施例的一种可选的对目标镜像头部信息和多个镜像文件的文件内容进行校验的示意图,如图5所示,镜像安全性检测流程可以但不限于包括以下步骤:
步骤S501,根据约定好大小和位置读取固件镜像头内容(相当于目标镜像头部信息)。可以但不限于根据固件镜像头部的约定规则,将固件镜像头部数据(相当于目标镜像头部信息)取出。
步骤S502,确定该固件中包括的镜像个数(相当于目标数量)。可以但不限于确定本次打包的固件子镜像的个数(相当于目标数量)。
步骤S503,镜像头内容(相当于目标镜像头部信息)做crc(Cyclic RedundancyCheck,循环冗余校验码,目标校验算法的一种示例)校验,实现对镜像头部数据(相当于目标镜像头部信息)进行校验。
步骤S504,计算的校验值与镜像包头校验值(相当于第一校验值)比较,判断是否一致,在判断不一致的情况下,确定镜像非法,镜像包合法性校验结束;在判断一致的情况下,可以表明镜像头部数据是完整准确的,在这样的情况下,执行步骤S505。
步骤S505,判断固件镜像个数是否为1或者3,在判断固件镜像个数不为1或者3的情况下,确定镜像非法,可以理解的是,从镜像头部中读取子镜像个数,只有1个或者3个才能保证使用,其他情况都算异常,直接退出,镜像包合法性校验结束,在判断固件镜像个数为1或者3的情况下,执行步骤S506。
步骤S506,读取镜像id的偏移地址(相当于目标起始偏移地址)和大小(相当于目标文件大小)。
步骤S507,找到镜像内容(相当于镜像文件的文件内容),计算crc(作为目标校验算法的一种可选的示例)校验值(相当于第二组校验值)。可以但不限于根据子镜像个数(相当于目标数量),依次从镜像头部(相当于目标镜像头部信息)对应位置中读取各个镜像的起始偏移地址以及长度(相当于文件大小),从而找到具体的子镜像内容(相当于镜像文件的文件内容)。并对子镜像的内容进行校验。
步骤S508,计算的校验值与对应镜像id在固件镜像头(相当于目标镜像头部信息)中的校验值(相当于第一组校验值)比较,判断是否相等,在判断不相等的情况下,确定镜像非法,镜像包合法性校验结束,在判断相等的情况下,则代表子镜像的内容也是完整准确的,只有所有镜像头部数据(相当于目标镜像头部信息)和所有子镜像数据(相当于多个镜像文件的文件内容)都是完整准确的,才判断为合法的镜像,开展升级,否则直接报错,退出升级操作。
在上述步骤S306提供的技术方案中,可以但不限于使用目标镜像文件的文件内容,将目标固件的版本升级至目标版本,通过这样的方式,减少了确定目标固件待升级至的目标版本所需的时间,并且减少了获取用于将目标固件的版本升级至目标版本的目标镜像文件的内容所需的时间,提升了将目标固件的版本升级至目标版本的效率。
在一个示范性实施例中,可以但不限于通过以下方式使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本:使能所述BMC与所述目标固件之间的目标接口,其中,所述BMC和所述目标固件之间通过所述目标接口连接,使能后的所述目标接口被设置为允许对所述目标固件的版本进行升级;通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
可选的,在本实施例中,可以但不限于以下方式之一通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中:
方式一:通过使能后的所述目标接口将所述目标固件中的所述当前版本替换为所述目标镜像文件的文件内容,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标固件中的所述当前版本替换为所述目标镜像文件的文件内容的情况下,删除所述目标固件的所述当前版本。
方式二,通过使能后的所述目标接口将所述目标固件中的所述当前版本替换为所述目标镜像文件的文件内容,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标固件中的所述当前版本替换为所述目标镜像文件的文件内容的情况下,保留所述目标固件的所述当前版本。
在一个示范性实施例中,所述目标接口包括联合测试工作组JTAG接口。
可选的,在本实施例中,目标接口包括联合测试工作组JTAG(Joint Test ActionGroup)接口。使能后的目标接口被设置为允许对目标固件的版本进行升级,可以理解的是,使能前的目标接口被设置为不允许对固件的版本进行升级,或者,使能前的目标接口被设置为不允许对目标固件的版本进行升级、且允许对除目标固件外的其它固件的版本进行升级。
在一个示范性实施例中,在所述使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本之后,上述方法还包括:确定是否成功将所述目标固件的版本升级至所述目标版本;在确定未成功将所述目标固件的版本升级至所述目标版本的情况下,生成目标提示信息,其中,所述目标提示信息用于提示所述目标固件的版本升级失败。
可选的,在本实施例中,在确定成功将所述目标固件的版本升级至所述目标版本的情况下,生成提示信息,其中,所述提示信息用于提示所述目标固件的版本升级成功。通过这样的方式,实现了自动根据目标固件的版本是否升级成功,生成对应的提示信息,实现了及时将升级结果返回至用户。
在一个示范性实施例中,在确定未成功将所述目标固件的版本升级至所述目标版本的情况下,上述方法还包括:重新使能所述BMC与所述目标固件之间的目标接口,其中,所述BMC和所述目标固件之间通过所述目标接口连接,使能后的所述目标接口被设置为允许对所述目标固件的版本进行升级;通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本;或者通过使能后的所述目标接口再次将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
可选的,在本实施例中,确定未成功将目标固件的版本升级至目标版本的情况下,为了提升成功将目标固件的版本升级至目标版本的概率,可以但不限于自动重试将目标固件的版本升级至目标版本。在这样的情况下,可能是目标接口出现了问题,例如,目标接口未使能成功,在这样的情况下,可以但不限于重新使能BMC和目标固件之间的目标接口,再通过使能后的目标接口将目标镜像文件的文件内容写入目标固件中,以使得将目标固件的版本从当前版本升级至目标版本。
可选的,在本实施例中,确定未成功将目标固件的版本升级至目标版本的情况下,可能是连接故障导致的升级失败,在这样的情况下,可以但不限于直接再次通过使能后的目标接口将目标镜像文件的文件内容写入目标固件中,以使得将目标固件的版本从当前版本升级至目标版本。
在一个示范性实施例中,上述方法还包括:确定所述目标固件的版本升级失败的次数;在所述次数大于或者等于预设的次数阈值的情况下,确定所述第一镜像文件中包括的所述目标镜像文件的文件内容异常,获取所述目标固件的所述目标版本对应的第二镜像文件的文件内容,并将所述第二镜像文件的文件内容记录在所述第一镜像文件中的目标预留区域中,其中,所述第二镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;通过使能后的所述目标接口将所述目标预留区域中的所述目标版本对应的第二镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述第二镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
可选的,在本实施例中,在所述次数小于预设的次数阈值的情况下,可以但不限于继续直接再次通过使能后的目标接口将目标镜像文件的文件内容写入目标固件中,以使得将目标固件的版本从当前版本升级至目标版本,或者,重新使能BMC和目标固件之间的目标接口,再通过使能后的目标接口将目标镜像文件的文件内容写入目标固件中,以使得将目标固件的版本从当前版本升级至目标版本。
可选的,在本实施例中,在所述次数大于或者等于预设的次数阈值的情况下,可以确定第一镜像文件中包括的目标镜像文件的文件内容异常,在这样的情况下,可以但不限于重新获取目标固件的目标版本对应的第二镜像文件的文件内容。可以理解的是,第二镜像文件的文件内容和目标镜像文件的文件内容均是用于将目标固件的版本升级至目标版本。
图6是根据本申请实施例的一种可选的将第二镜像文件的文件内容记录在第一镜像文件中的目标预留区域的示意图,如图6所示,第一镜像文件中可以但不限于包括目标镜像头部信息和镜像文件1的文件内容、镜像文件2的文件内容和镜像文件3的文件内容以及目标预留区域,例如,在使用第一镜像文件中的镜像文件2的文件内容将目标固件的版本升级至目标版本(例如,版本2)的情况下,如果目标固件的版本升级失败的次数大于或者等于预设的次数阈值,在这样的情况下,可以但不限于获取镜像文件4的文件内容(相当于第二镜像文件的文件内容),并将镜像文件4的文件内容记录在第一镜像文件中的目标预留区域中,其中,镜像文件4的文件内容用于将目标固件的版本升级至目标版本(例如,版本2)。
为了更好的理解本申请实施例中对服务器固件的版本进行升级的过程,下面结合可选的实施例,对本申请实施例中的服务器固件的版本进行升级的过程进行解释和说明,可以但不限于适用于本申请实施例。
图7是根据本申请实施例的一种可选的服务器固件升级的示意图,如图7所示,可以但不限于以目标固件包括Gaudi 2的CPLD固件为例,可以但不限于包括以下步骤:
步骤S701,判断Gaudi 2升级是否合法,在判断合法的情况下,执行步骤S702,在判断不合法的情况下,将所有Gaudi 2升级置为失败,然后执行步骤708。
步骤S702,使能总的用于Gaudi 2 CPLD升级的JTAG开关。
步骤S703,判断待升级的Gaudi 2设备是否在位,在该Gaudi 2设备不在位的情况下,将该Gaudi 2的升级状态记为失败,在该Gaudi 2设备在位的情况下,执行步骤S704。
步骤S704,根据CFG_load_status的值来选中待升级的固件的版本。
例如,打开对应的升级通道,做好硬件接口的选择后,则需要选择正确的镜像,执行升级操作了。判断本次升级的固件包中镜像文件的个数,如果只有1个镜像文件,则不做寄存器判断,直接开始升级。如果镜像文件个数大于1,则开始读取cpld的FPGA状态寄存器的数值,从而确定其的CFG_load_status的数值,来确定选中的镜像文件。
如果CFG_load_status值(相当于目标状态值)为0x01,则代表下次需要刷新cf1文件,将镜像包中的第2个包取出,执行升级。如果CFG_load_status值为0x02,则代表下次需要刷新cf0文件,将镜像包中的第1个包取出,执行升级。如果CFG_load_status值为0x11,则代表下次需要刷新fea_pub_cf0文件,将镜像包中的第3个包取出,执行升级。其他情况,则报错,退出升级。
步骤S705,使能对应Gaudi 2设备CPLD的JTAG升级功能。
步骤S706,执行设备升级操作。
步骤S707,判断是否升级成功,在判断升级成功的情况下,该Gaudi 2的升级状态记为成功,在判断升级失败的情况下,该Gaudi 2的升级状态记为失败。
步骤S708,检测所有Gaudi 2的CPLD的升级状态,判断是否有一个失败,在所有的Gaudi 2的CPLD的升级成功的情况下,对外提示升级成功,在存在一个Gaudi 2的CPLD的升级失败的情况下,对外提示升级失败。
通过这样的方式,让现场人员在使用时,不再需要对现场的升级文件进行筛选。用户可以简单直接的使用厂商提供的单一固件进行升级,大大简化了用户的操作步骤。而且用户也不需要再对设备内部实现原理关注,大大降低了操作门槛,降低了人力成本。在面对大批量的服务器升级情况下,便捷的操作步骤为升级的批量触发提供了可能性。高效的升级方式,也大大降低了时间成本。部件快速便捷的更新,也有利于业务部门快速的开展优化后的产品使用,提高前端用户的使用效率。步骤的简化也降低了认为操作失误,避免因为升级而带来的直接硬件设备的损坏,从而也减少了直接的设备成本的损失。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种服务器固件升级装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图8是根据本申请实施例的服务器固件升级装置的结构框图,如图8所示,该装置包括:
第一获取模块802,用于获取固件升级请求,其中,所述固件升级请求中携带有第一镜像文件,所述第一镜像文件中包括目标镜像头部信息和多个镜像文件中的每个镜像文件的文件内容,所述多个镜像文件中的每个镜像文件的文件内容用于将目标固件的版本升级至对应的版本,所述固件升级请求用于请求对服务器中的目标固件的版本进行升级;
第一确定模块804,用于响应于所述固件升级请求,通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,其中,所述多个镜像文件包括所述目标镜像文件,所述目标镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;
升级模块806,用于使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本。
通过本申请实施例,在获取到固件升级请求的情况下,可以表明希望对服务器固件的版本进行升级,在这样的情况下,可以通过BMC自动确定固件的版本待升级至的目标版本,并从第一镜像文件中获取用于将固件的版本升级至目标版本的目标镜像文件的文件内容,使用镜像文件的文件内容,将服务器固件的版本升级至目标版本,通过这样的方式,避免了用户手动确认服务器固件待升级至的目标版本,以及手动筛选用于将固件的版本升级至目标版本的目标镜像文件的文件内容,因此,可以解决服务器固件升级较低问题,达到提升服务器固件升级效果。
在一个示范性实施例中,所述第一确定模块,包括:第一获取单元,用于获取所述第一镜像文件中的所述目标镜像头部信息中包括的目标数量,其中,所述目标数量用于表示所述第一镜像文件中包括的镜像文件的文件内容的数量;第一确定单元,用于根据所述目标数量,确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容。
在一个示范性实施例中,所述第一确定单元,用于:在所述目标数量大于或者等于2的情况下,获取所述目标固件中的目标寄存器中存储的所述目标固件的目标状态值,其中,所述目标状态值用于指示所述目标固件的版本待升级至的所述目标版本;根据所述目标状态值,确定所述目标固件的版本待升级至的所述目标版本,并根据所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容。
在一个示范性实施例中,所述第一确定单元,还用于:从具有对应关系的状态值和版本标识中确定与所述目标状态值具有对应关系的所述目标固件的所述目标版本的第一标识;所述第一确定单元,还用于:根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容。
在一个示范性实施例中,所述第一确定单元,还用于:确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;从所述目标镜像头部信息中确定与所述第二标识具有对应关系的所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址和目标文件大小,其中,所述目标镜像头部信息中存储有一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小,所述一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小包括具有对应关系的所述第二标识以及所述目标起始偏移地址和所述目标文件大小;在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
在一个示范性实施例中,所述第一确定单元,还用于:从所述目标镜像头部信息中确定与所述第一标识对应的所述第二标识,其中,所述目标镜像头部信息中还存储有一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识,所述一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识包括具有对应关系的所述第一标识和所述第二标识。
在一个示范性实施例中,所述第一确定单元,用于:确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;从所述目标镜像头部信息中确定与所述第二标识具有对应关系的第一起始偏移地址和第一结束偏移地址,以及与所述第二标识具有对应关系的第二起始偏移地址和第二结束偏移地址,其中,所述第一起始偏移地址和所述第一结束偏移地址用于确定所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址,所述第二起始偏移地址和所述第二结束偏移地址用于确定所述目标镜像文件的目标文件大小;根据所述第一起始偏移地址和所述第一结束偏移地址确定所述目标起始偏移地址,并根据所述第二起始偏移地址和所述第二结束偏移地址确定所述目标文件大小;在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
在一个示范性实施例中,所述第一确定单元,用于:从所述第一镜像文件中获取所述第一起始偏移地址至第一结束偏移地址上存储的数据,得到所述目标起始偏移地址,并从所述第一镜像文件中获取所述第二起始偏移地址至第二结束偏移地址上存储的数据,得到所述目标文件大小。
在一个示范性实施例中,所述第一确定单元,还用于:在所述目标数量等于1的情况下,获取所述第一镜像文件的文件内容作为所述目标镜像文件的文件内容。
在一个示范性实施例中,所述装置还包括:校验模块,用于在所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容之前,对所述第一镜像文件中的所述目标镜像头部信息进行校验,并对所述第一镜像文件中包括的所述多个镜像文件的文件内容进行校验;所述第一确定模块,包括:第二确定单元,用于在所述目标镜像头部信息和所述多个镜像文件的文件内容均通过校验的情况下,通过所述BMC确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容。
在一个示范性实施例中,所述校验模块,包括:第二获取单元,用于获取所述目标镜像头部信息中存储的第一校验值,并获取所述目标镜像头部信息中包括的除所述第一校验值之外的数据,其中,所述第一校验值用于校验所述目标镜像头部信息,所述第一校验值是通过预设的目标校验算法得到的校验值;第一处理单元,用于将获取到的数据作为所述目标校验算法的输入,得到所述目标校验算法输出的第二校验值;第三确定单元,用于在所述第一校验值和所述第二校验值相同的情况下,确定所述目标镜像头部信息通过校验。
在一个示范性实施例中,所述校验模块,包括:第三获取单元,用于获取所述目标镜像头部信息中存储的第一组校验值,并获取所述第一镜像文件中包括的多个镜像文件中的每个镜像文件的文件内容,得到一组镜像文件的文件内容,其中,所述第一组校验值中的每个校验值用于校验所述一组镜像文件中对应的一个镜像文件的文件内容,所述第一组校验值是通过预设的目标校验算法得到的校验值;第二处理单元,用于将所述一组镜像文件的文件内容分别作为所述目标校验算法的输入,得到所述目标校验算法输出的第二组校验值,其中,在将所述一组镜像文件中的每个镜像文件的文件内容作为所述目标校验算法的输入时,所述目标校验算法的输出包括所述第二组校验值中的一个校验值;第四确定单元,用于在所述第一组校验值中的各个校验值和所述第二组校验值中对应的校验值相同的情况下,确定所述一组镜像文件的文件内容通过校验。
在一个示范性实施例中,所述第二处理单元,用于:将N2个镜像文件中的第i2个镜像文件的文件内容作为所述目标校验算法的输入,得到所述目标校验算法输出的N2个校验值中的第i2个校验值,其中,所述一组镜像文件包括所述N2个镜像文件,所述第二组校验值包括所述N2个校验值,N2为正整数,i2为小于或者等于N2的正整数;第四确定单元,用于:在N1个校验值中的第i1个校验值和所述N2个校验值中的所述第i2个校验值相同的情况下,确定N1个镜像文件中的第i1个镜像文件的文件内容通过校验,其中,所述第一组校验值包括所述N1个校验值,所述第i1个校验值是所述N1个校验值中与所述第i1个镜像文件的文件内容所对应的校验值,N1为正整数,i1为小于或者等于N1的正整数,N1等于N2,i1等于i2。
在一个示范性实施例中,所述装置还包括:第二获取模块,用于在所述获取固件升级请求之前,获取所述多个镜像文件中的每个镜像文件中包括的镜像头部信息,得到一组镜像头部信息,其中,所述多个镜像文件中的每个镜像文件中包括每个镜像文件的镜像头部信息和所述每个镜像文件的文件内容;第二确定模块,用于将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息。
在一个示范性实施例中,所述第二确定模块,包括:第三处理单元,用于将所述一组镜像头部信息作为目标校验算法的输入,得到第一校验值;第五确定单元,用于并将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息和所述第一校验值。
在一个示范性实施例中,所述第五确定单元,用于通过执行以下步骤,将M个镜像头部信息中的第j个镜像头部信息和第j+1个镜像头部信息记录在所述目标镜像头部信息中,其中,所述一组镜像头部信息包括所述M个镜像头部信息,所述第j个镜像头部信息是M个镜像文件中第j个镜像文件中包括的镜像头部信息,所述第j+1个镜像头部信息是所述M个镜像文件中第j+1个镜像文件中包括的镜像头部信息,M为大于或者等于2的正整数,j为小于或者等于M-1的正整数:在所述目标镜像头部信息中按顺序记录所述第j个镜像头部信息中包括的第j个镜像文件标识、第j个校验值、第j个起始偏移地址和第j个文件大小、以及所述第j+1个镜像头部信息中包括的第j+1个镜像文件标识、第j+1个校验值、第j+1个起始偏移地址和第j+1个文件大小;其中,所述第j个镜像文件的文件内容用于将所述目标固件的版本升级至第j个版本,所述第j个镜像文件标识是所述第j个镜像文件的标识,所述第j个校验值是通过预设的目标校验算法得到的校验值,所述第j个镜像文件的文件内容包括在所述第一镜像文件中从所述第j个起始偏移地址开始获取到的所述第j个文件大小的数据,所述第j+1个镜像文件的文件内容用于将所述目标固件的版本升级至第j+1个版本,所述第j+1个镜像文件标识是所述第j+1个镜像文件的标识,所述第j+1个校验值是通过所述目标校验算法得到的校验值,所述第j+1个镜像文件的文件内容包括在所述第一镜像文件中从所述第j+1个起始偏移地址开始获取到的所述第j+1个文件大小的数据。
在一个示范性实施例中,所述升级模块,包括:使能单元,用于使能所述BMC与所述目标固件之间的目标接口,其中,所述BMC和所述目标固件之间通过所述目标接口连接,使能后的所述目标接口被设置为允许对所述目标固件的版本进行升级;写入单元,用于通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
在一个示范性实施例中,所述目标接口包括联合测试工作组JTAG接口。
在一个示范性实施例中,所述装置还包括:第三确定模块,用于在所述使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本之后,确定是否成功将所述目标固件的版本升级至所述目标版本;生成模块,用于在确定未成功将所述目标固件的版本升级至所述目标版本的情况下,生成目标提示信息,其中,所述目标提示信息用于提示所述目标固件的版本升级失败。
在一个示范性实施例中,所述装置还包括:使能模块,用于在确定未成功将所述目标固件的版本升级至所述目标版本的情况下,重新使能所述BMC与所述目标固件之间的目标接口,其中,所述BMC和所述目标固件之间通过所述目标接口连接,使能后的所述目标接口被设置为允许对所述目标固件的版本进行升级;通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本;或者第一写入模块,用于通过使能后的所述目标接口再次将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
在一个示范性实施例中,所述装置还包括:第四确定模块,用于确定所述目标固件的版本升级失败的次数;记录模块,用于在所述次数大于或者等于预设的次数阈值的情况下,确定所述第一镜像文件中包括的所述目标镜像文件的文件内容异常,获取所述目标固件的所述目标版本对应的第二镜像文件的文件内容,并将所述第二镜像文件的文件内容记录在所述第一镜像文件中的目标预留区域中,其中,所述第二镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;第二写入模块,用于通过使能后的所述目标接口将所述目标预留区域中的所述目标版本对应的第二镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述第二镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (20)
1.一种服务器固件升级方法,其特征在于,
包括:
获取固件升级请求,其中,所述固件升级请求中携带有第一镜像文件,所述第一镜像文件中包括目标镜像头部信息和多个镜像文件中的每个镜像文件的文件内容,所述多个镜像文件中的每个镜像文件的文件内容用于将目标固件的版本升级至对应的版本,所述固件升级请求用于请求对服务器中的目标固件的版本进行升级;
响应于所述固件升级请求,通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,其中,所述多个镜像文件包括所述目标镜像文件,所述目标镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;
使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本;
其中,所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,包括:
获取所述第一镜像文件中的所述目标镜像头部信息中包括的目标数量,其中,所述目标数量用于表示所述第一镜像文件中包括的镜像文件的文件内容的数量;根据所述目标数量,确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容;
其中,所述根据所述目标数量,确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容,包括:在所述目标数量大于或者等于2的情况下,获取所述目标固件中的目标寄存器中存储的所述目标固件的目标状态值,其中,所述目标状态值用于指示所述目标固件的版本待升级至的所述目标版本;根据所述目标状态值,确定所述目标固件的版本待升级至的所述目标版本,并根据所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容;
其中,所述根据所述目标状态值,确定所述目标固件的版本待升级至的所述目标版本,包括:从具有对应关系的状态值和版本标识中确定与所述目标状态值具有对应关系的所述目标固件的所述目标版本的第一标识;所述根据所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容,包括:根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容;
其中,所述根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容,包括:确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;从所述目标镜像头部信息中确定与所述第二标识具有对应关系的第一起始偏移地址和第一结束偏移地址,以及与所述第二标识具有对应关系的第二起始偏移地址和第二结束偏移地址,其中,所述第一起始偏移地址和所述第一结束偏移地址用于确定所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址,所述第二起始偏移地址和所述第二结束偏移地址用于确定所述目标镜像文件的目标文件大小;根据所述第一起始偏移地址和所述第一结束偏移地址确定所述目标起始偏移地址,并根据所述第二起始偏移地址和所述第二结束偏移地址确定所述目标文件大小;在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
2.根据权利要求1所述的方法,其特征在于,
所述根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容,包括:
确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;
从所述目标镜像头部信息中确定与所述第二标识具有对应关系的所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址和目标文件大小,其中,所述目标镜像头部信息中存储有一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小,所述一组或者多组具有对应关系的镜像文件的标识以及镜像文件的文件内容在所述第一镜像文件中的起始偏移地址和文件大小包括具有对应关系的所述第二标识以及所述目标起始偏移地址和所述目标文件大小;
在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
3.根据权利要求2所述的方法,其特征在于,
所述确定与所述第一标识对应的第二标识,包括:
从所述目标镜像头部信息中确定与所述第一标识对应的所述第二标识,其中,所述目标镜像头部信息中还存储有一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识,所述一组或者多组具有对应关系的固件版本的标识以及镜像文件的标识包括具有对应关系的所述第一标识和所述第二标识。
4.根据权利要求1所述的方法,其特征在于,
所述根据所述第一起始偏移地址和所述第一结束偏移地址确定所述目标起始偏移地址,并根据所述第二起始偏移地址和所述第二结束偏移地址确定所述目标文件大小,包括:
从所述第一镜像文件中获取所述第一起始偏移地址至第一结束偏移地址上存储的数据,得到所述目标起始偏移地址,并从所述第一镜像文件中获取所述第二起始偏移地址至第二结束偏移地址上存储的数据,得到所述目标文件大小。
5.根据权利要求1所述的方法,其特征在于,
所述从所述第一镜像文件中获取所述目标镜像文件的文件内容,还包括:
在所述目标数量等于1的情况下,获取所述第一镜像文件的文件内容作为所述目标镜像文件的文件内容。
6.根据权利要求1所述的方法,其特征在于,
在所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容之前,所述方法还包括:对所述第一镜像文件中的所述目标镜像头部信息进行校验,并对所述第一镜像文件中包括的所述多个镜像文件的文件内容进行校验;
所述通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,包括:在所述目标镜像头部信息和所述多个镜像文件的文件内容均通过校验的情况下,通过所述BMC确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容。
7.根据权利要求6所述的方法,其特征在于,
所述对所述第一镜像文件中的所述目标镜像头部信息进行校验,包括:
获取所述目标镜像头部信息中存储的第一校验值,并获取所述目标镜像头部信息中包括的除所述第一校验值之外的数据,其中,所述第一校验值用于校验所述目标镜像头部信息,所述第一校验值是通过预设的目标校验算法得到的校验值;
将获取到的数据作为所述目标校验算法的输入,得到所述目标校验算法输出的第二校验值;
在所述第一校验值和所述第二校验值相同的情况下,确定所述目标镜像头部信息通过校验。
8.根据权利要求6所述的方法,其特征在于,
所述对所述第一镜像文件中包括的所述多个镜像文件的文件内容进行校验,包括:
获取所述目标镜像头部信息中存储的第一组校验值,并获取所述第一镜像文件中包括的多个镜像文件中的每个镜像文件的文件内容,得到一组镜像文件的文件内容,其中,所述第一组校验值中的每个校验值用于校验所述一组镜像文件中对应的一个镜像文件的文件内容,所述第一组校验值是通过预设的目标校验算法得到的校验值;
将所述一组镜像文件的文件内容分别作为所述目标校验算法的输入,得到所述目标校验算法输出的第二组校验值,其中,在将所述一组镜像文件中的每个镜像文件的文件内容作为所述目标校验算法的输入时,所述目标校验算法的输出包括所述第二组校验值中的一个校验值;
在所述第一组校验值中的各个校验值和所述第二组校验值中对应的校验值相同的情况下,确定所述一组镜像文件的文件内容通过校验。
9.根据权利要求8所述的方法,其特征在于,
所述将所述一组镜像文件的文件内容分别作为所述目标校验算法的输入,得到所述目标校验算法输出的第二组校验值,包括:将N2个镜像文件中的第i2个镜像文件的文件内容作为所述目标校验算法的输入,得到所述目标校验算法输出的N2个校验值中的第i2个校验值,其中,所述一组镜像文件包括所述N2个镜像文件,所述第二组校验值包括所述N2个校验值,N2为正整数,i2为小于或者等于N2的正整数;
在所述第一组校验值中的各个校验值和所述第二组校验值中对应的校验值相同的情况下,确定所述一组镜像文件的文件内容通过校验,包括:在N1个校验值中的第i1个校验值和所述N2个校验值中的所述第i2个校验值相同的情况下,确定N1个镜像文件中的第i1个镜像文件的文件内容通过校验,其中,所述第一组校验值包括所述N1个校验值,所述第i1个校验值是所述N1个校验值中与所述第i1个镜像文件的文件内容所对应的校验值,N1为正整数,i1为小于或者等于N1的正整数,N1等于N2,i1等于i2。
10.根据权利要求1所述的方法,其特征在于,
在所述获取固件升级请求之前,所述方法还包括:
获取所述多个镜像文件中的每个镜像文件中包括的镜像头部信息,得到一组镜像头部信息,其中,所述多个镜像文件中的每个镜像文件中包括每个镜像文件的镜像头部信息和所述每个镜像文件的文件内容;
将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息。
11.根据权利要求10所述的方法,其特征在于,
所述将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息,包括:
将所述一组镜像头部信息作为目标校验算法的输入,得到第一校验值;
并将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息和所述第一校验值。
12.根据权利要求11所述的方法,其特征在于,
所述将所述目标镜像头部信息确定为包括所述一组镜像头部信息中的各个镜像头部信息,包括:
通过执行以下步骤,将M个镜像头部信息中的第j个镜像头部信息和第j+1个镜像头部信息记录在所述目标镜像头部信息中,其中,所述一组镜像头部信息包括所述M个镜像头部信息,所述第j个镜像头部信息是M个镜像文件中第j个镜像文件中包括的镜像头部信息,所述第j+1个镜像头部信息是所述M个镜像文件中第j+1个镜像文件中包括的镜像头部信息,M为大于或者等于2的正整数,j为小于或者等于M-1的正整数:
在所述目标镜像头部信息中按顺序记录所述第j个镜像头部信息中包括的第j个镜像文件标识、第j个校验值、第j个起始偏移地址和第j个文件大小、以及所述第j+1个镜像头部信息中包括的第j+1个镜像文件标识、第j+1个校验值、第j+1个起始偏移地址和第j+1个文件大小;
其中,所述第j个镜像文件的文件内容用于将所述目标固件的版本升级至第j个版本,所述第j个镜像文件标识是所述第j个镜像文件的标识,所述第j个校验值是通过预设的目标校验算法得到的校验值,所述第j个镜像文件的文件内容包括在所述第一镜像文件中从所述第j个起始偏移地址开始获取到的所述第j个文件大小的数据,所述第j+1个镜像文件的文件内容用于将所述目标固件的版本升级至第j+1个版本,所述第j+1个镜像文件标识是所述第j+1个镜像文件的标识,所述第j+1个校验值是通过所述目标校验算法得到的校验值,所述第j+1个镜像文件的文件内容包括在所述第一镜像文件中从所述第j+1个起始偏移地址开始获取到的所述第j+1个文件大小的数据。
13.根据权利要求1所述的方法,其特征在于,
所述使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本,包括:
使能所述BMC与所述目标固件之间的目标接口,其中,所述BMC和所述目标固件之间通过所述目标接口连接,使能后的所述目标接口被设置为允许对所述目标固件的版本进行升级;
通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
14.根据权利要求13所述的方法,其特征在于,
所述目标接口包括联合测试工作组JTAG接口。
15.根据权利要求1所述的方法,其特征在于,
在所述使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本之后,所述方法还包括:
确定是否成功将所述目标固件的版本升级至所述目标版本;
在确定未成功将所述目标固件的版本升级至所述目标版本的情况下,生成目标提示信息,其中,所述目标提示信息用于提示所述目标固件的版本升级失败。
16.根据权利要求15所述的方法,其特征在于,
在确定未成功将所述目标固件的版本升级至所述目标版本的情况下,所述方法还包括:
重新使能所述BMC与所述目标固件之间的目标接口,其中,所述BMC和所述目标固件之间通过所述目标接口连接,使能后的所述目标接口被设置为允许对所述目标固件的版本进行升级;通过使能后的所述目标接口将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本;或者
通过使能后的所述目标接口再次将所述目标镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述目标镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
确定所述目标固件的版本升级失败的次数;
在所述次数大于或者等于预设的次数阈值的情况下,确定所述第一镜像文件中包括的所述目标镜像文件的文件内容异常,获取所述目标固件的所述目标版本对应的第二镜像文件的文件内容,并将所述第二镜像文件的文件内容记录在所述第一镜像文件中的目标预留区域中,其中,所述第二镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;
通过使能后的所述目标接口将所述目标预留区域中的所述目标版本对应的第二镜像文件的文件内容写入所述目标固件中,以使得将所述目标固件的版本从当前版本升级至所述目标版本,并在完成将所述第二镜像文件的文件内容写入所述目标固件中的情况下,删除所述目标固件的所述当前版本。
18.一种服务器固件升级装置,其特征在于,
包括:
第一获取模块,用于获取固件升级请求,其中,所述固件升级请求中携带有第一镜像文件,所述第一镜像文件中包括目标镜像头部信息和多个镜像文件中的每个镜像文件的文件内容,所述多个镜像文件中的每个镜像文件的文件内容用于将目标固件的版本升级至对应的版本,所述固件升级请求用于请求对服务器中的目标固件的版本进行升级;
第一确定模块,用于响应于所述固件升级请求,通过基板管理控制器BMC确定所述目标固件的版本待升级至的目标版本,并从所述第一镜像文件中获取目标镜像文件的文件内容,其中,所述多个镜像文件包括所述目标镜像文件,所述目标镜像文件的文件内容用于将所述目标固件的版本升级至所述目标版本;
升级模块,用于使用所述目标镜像文件的文件内容,将所述目标固件的版本升级至所述目标版本;
所述第一确定模块,包括:第一获取单元,用于获取所述第一镜像文件中的所述目标镜像头部信息中包括的目标数量,其中,所述目标数量用于表示所述第一镜像文件中包括的镜像文件的文件内容的数量;第一确定单元,用于根据所述目标数量,确定所述目标固件的版本待升级至的所述目标版本,并从所述第一镜像文件中获取所述目标镜像文件的文件内容;
所述第一确定单元,用于:在所述目标数量大于或者等于2的情况下,获取所述目标固件中的目标寄存器中存储的所述目标固件的目标状态值,其中,所述目标状态值用于指示所述目标固件的版本待升级至的所述目标版本;根据所述目标状态值,确定所述目标固件的版本待升级至的所述目标版本,并根据所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容;
所述第一确定单元,还用于:从具有对应关系的状态值和版本标识中确定与所述目标状态值具有对应关系的所述目标固件的所述目标版本的第一标识;所述第一确定单元,还用于:根据所述第一标识和所述目标镜像头部信息,从所述第一镜像文件中获取所述目标镜像文件的文件内容;
所述第一确定单元,用于:确定与所述第一标识对应的第二标识,其中,所述第二标识是所述目标镜像文件的标识;从所述目标镜像头部信息中确定与所述第二标识具有对应关系的第一起始偏移地址和第一结束偏移地址,以及与所述第二标识具有对应关系的第二起始偏移地址和第二结束偏移地址,其中,所述第一起始偏移地址和所述第一结束偏移地址用于确定所述目标镜像文件的文件内容在所述第一镜像文件中的目标起始偏移地址,所述第二起始偏移地址和所述第二结束偏移地址用于确定所述目标镜像文件的目标文件大小;根据所述第一起始偏移地址和所述第一结束偏移地址确定所述目标起始偏移地址,并根据所述第二起始偏移地址和所述第二结束偏移地址确定所述目标文件大小;在所述第一镜像文件中从所述目标起始偏移地址开始,获取所述目标文件大小的数据,得到所述目标镜像文件的文件内容。
19.一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至17任一项中所述的方法的步骤。
20.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现所述权利要求1至17任一项中所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410098517.2A CN117608618B (zh) | 2024-01-24 | 2024-01-24 | 服务器固件升级方法及装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410098517.2A CN117608618B (zh) | 2024-01-24 | 2024-01-24 | 服务器固件升级方法及装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117608618A CN117608618A (zh) | 2024-02-27 |
CN117608618B true CN117608618B (zh) | 2024-04-12 |
Family
ID=89956578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410098517.2A Active CN117608618B (zh) | 2024-01-24 | 2024-01-24 | 服务器固件升级方法及装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608618B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110943860A (zh) * | 2019-11-22 | 2020-03-31 | 苏州浪潮智能科技有限公司 | 一种bmc固件更新方法、系统、电子设备及存储介质 |
CN111414174A (zh) * | 2020-03-13 | 2020-07-14 | 苏州浪潮智能科技有限公司 | 一种服务器固件升级方法、装置及其相关设备 |
CN111538517A (zh) * | 2020-04-24 | 2020-08-14 | 苏州浪潮智能科技有限公司 | 一种服务器固件升级方法、系统及电子设备和存储介质 |
CN113127033A (zh) * | 2021-03-30 | 2021-07-16 | 山东英信计算机技术有限公司 | 服务器固件版本升级方法、装置、系统及可读存储介质 |
CN113703823A (zh) * | 2021-10-27 | 2021-11-26 | 苏州浪潮智能科技有限公司 | 一种bmc固件升级方法、装置、电子设备及存储介质 |
CN114115984A (zh) * | 2021-12-10 | 2022-03-01 | 百信信息技术有限公司 | 服务器固件升级的方法、存储设备及终端 |
CN116610336A (zh) * | 2023-04-13 | 2023-08-18 | 苏州浪潮智能科技有限公司 | 一种固件升级方法、系统、装置及可读存储介质 |
CN116610343A (zh) * | 2023-05-31 | 2023-08-18 | 浪潮(山东)计算机科技有限公司 | 一种服务器固件升级方法、装置、设备及存储介质 |
-
2024
- 2024-01-24 CN CN202410098517.2A patent/CN117608618B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110943860A (zh) * | 2019-11-22 | 2020-03-31 | 苏州浪潮智能科技有限公司 | 一种bmc固件更新方法、系统、电子设备及存储介质 |
CN111414174A (zh) * | 2020-03-13 | 2020-07-14 | 苏州浪潮智能科技有限公司 | 一种服务器固件升级方法、装置及其相关设备 |
CN111538517A (zh) * | 2020-04-24 | 2020-08-14 | 苏州浪潮智能科技有限公司 | 一种服务器固件升级方法、系统及电子设备和存储介质 |
CN113127033A (zh) * | 2021-03-30 | 2021-07-16 | 山东英信计算机技术有限公司 | 服务器固件版本升级方法、装置、系统及可读存储介质 |
WO2022206256A1 (zh) * | 2021-03-30 | 2022-10-06 | 山东英信计算机技术有限公司 | 服务器固件版本升级方法、装置、系统及可读存储介质 |
CN113703823A (zh) * | 2021-10-27 | 2021-11-26 | 苏州浪潮智能科技有限公司 | 一种bmc固件升级方法、装置、电子设备及存储介质 |
CN114115984A (zh) * | 2021-12-10 | 2022-03-01 | 百信信息技术有限公司 | 服务器固件升级的方法、存储设备及终端 |
CN116610336A (zh) * | 2023-04-13 | 2023-08-18 | 苏州浪潮智能科技有限公司 | 一种固件升级方法、系统、装置及可读存储介质 |
CN116610343A (zh) * | 2023-05-31 | 2023-08-18 | 浪潮(山东)计算机科技有限公司 | 一种服务器固件升级方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117608618A (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6496790B1 (en) | Management of sensors in computer systems | |
US20090228877A1 (en) | Intelligent terminal and method for managing intelligent terminal system | |
CN107908417B (zh) | 固件升级方法及电子设备 | |
WO2024183334A1 (zh) | 设备运行方法、系统、装置、非易失性可读存储介质及电子设备 | |
CN111694760A (zh) | 服务器系统、快闪存储器模块及更新固件映像文件的方法 | |
CN110209529A (zh) | 射频参数的保护方法及电子设备 | |
CN115129249A (zh) | Sas链路拓扑识别管理方法、系统、终端及存储介质 | |
CN102880478B (zh) | 软件更新方法 | |
CN117608618B (zh) | 服务器固件升级方法及装置、存储介质和电子设备 | |
CN117687695A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN111861858A (zh) | 一种启动图像压缩功能验证的方法、装置及相关设备 | |
CN109491951B (zh) | 一种配置数据的方法以及计算设备 | |
CN116483409A (zh) | 一种远程固件更新的方法、系统、电子设备及存储介质 | |
CN116302502A (zh) | 电子签章方法、装置、设备及存储介质 | |
CN107908418B (zh) | 光纤通道节点卡的逻辑程序升级方法及光纤通道总线设备 | |
CN109359093A (zh) | 一种规则文件更新方法和系统 | |
CN109800565B (zh) | 软件升级方法及终端设备 | |
CN110968456A (zh) | 分布式存储系统中故障磁盘的处理方法及装置 | |
CN115454896A (zh) | 基于smbus的ssd mctp控制消息验证方法、装置、计算机设备及存储介质 | |
CN115098137A (zh) | 电池保护板的升级方法、装置、检测仪、系统及存储介质 | |
CN115373749A (zh) | 一种识别pcie终端设备的方法和计算设备 | |
CN114371860A (zh) | 一种控制器批量升级方法和装置 | |
CN114116289A (zh) | 一种镜像文件修复方法、装置,ap设备及网络系统 | |
CN118484239A (zh) | 智能网卡的fru数据刷新方法及装置 | |
CN107451035B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |