一种BMC固件升级方法、装置、设备及介质与流程

文档序号:32403628发布日期:2022-12-02 19:50阅读:158来源:国知局
一种BMC固件升级方法、装置、设备及介质与流程
一种bmc固件升级方法、装置、设备及介质
技术领域
1.本技术涉及计算机技术领域,特别是涉及一种bmc固件升级方法、装置、设备及介质。


背景技术:

2.基板管理控制器(baseboard management controller)是执行服务器远端管理的控制器,可以在机器未开机的状态下对机器进行固件升级、查看机器设备及其信息等一些操作。当前的服务器产品都是通过基板管理控制器(baseboard management controller,bmc)的固件(firmware)升级来实现问题修复和功能升级。然而,现有的bmc固件升级过程相对比较耗时,必须将flash里面固件内容全部刷新,并且需要重启bmc才能使新的固件版本生效,不够轻量快捷。
3.鉴于上述问题,如何轻量快捷地实现bmc固件升级,是该领域技术人员亟待解决的问题。


技术实现要素:

4.本技术的目的是提供一种bmc固件升级方法、装置、设备及介质,以轻量快捷地实现bmc固件升级。
5.为解决上述技术问题,本技术提供一种bmc固件升级方法,包括:
6.在bmc固件镜像中创建patch分区;
7.在所述patch分区中创建目标目录并挂载overlayfs文件系统;
8.获取补丁文件;其中,所述补丁文件中包含多个可执行程序;
9.上传各所述可执行程序至所述目标目录中;
10.重启各所述可执行程序中的目标可执行程序,以实现bmc固件升级。
11.优选地,所述在bmc固件镜像中创建patch分区包括:
12.利用mkfs.jffs2工具根据mkfs.jffs2

d/patch

o patch.img命令创建所述patch分区。
13.优选地,所述获取补丁文件包括:
14.通过bmc固件管理的web服务获取所述补丁文件;
15.将所述补丁文件上传至/var路径中。
16.优选地,在所述上传各所述可执行程序至所述目标目录中之前,还包括:
17.根据所述补丁文件的名称和热补丁校验配置文件中的配置选项判断所述补丁文件是否支持热补丁;
18.若是,则进入所述上传各所述可执行程序至所述目标目录中的步骤;
19.若否,则结束。
20.优选地,所述重启各所述可执行程序中的目标可执行程序包括:
21.分别判断各所述可执行程序是否需要常驻;
22.若是,则将常驻的所述可执行程序作为所述目标可执行程序进行重启。
23.优选地,若确定所述可执行程序不需要常驻,还包括:
24.主动运行不需要常驻的所述可执行程序,以实现所述可执行程序的升级。
25.优选地,还包括:
26.通过热补丁结果检查配置文件检查所述补丁文件的热补丁结果。
27.为解决上述技术问题,本技术还提供一种bmc固件升级装置,包括:
28.创建模块,用于在bmc固件镜像中创建patch分区;
29.挂载模块,用于在所述patch分区中创建目标目录并挂载overlayfs文件系统;
30.获取模块,用于获取补丁文件;其中,所述补丁文件中包含多个可执行程序;
31.上传模块,用于上传各所述可执行程序至所述目标目录中;
32.重启模块,用于重启各所述可执行程序中的目标可执行程序,以实现bmc固件升级。
33.优选地,所述创建模块具体利用mkfs.jffs2工具根据mkfs.jffs2

d/patch

o patch.img命令创建所述patch分区。
34.优选地,所述获取模块包括:
35.补丁文件获取模块,用于通过bmc固件管理的web服务获取所述补丁文件;
36.补丁文件上传模块,用于将所述补丁文件上传至/var路径中。
37.优选地,还包括:
38.第一判断模块,用于在所述上传各所述可执行程序至所述目标目录中之前,根据所述补丁文件的名称和热补丁校验配置文件中的配置选项判断所述补丁文件是否支持热补丁;若是,则触发所述上传模块;若否,则结束。
39.优选地,所述重启模块包括:
40.第二判断模块,用于分别判断各所述可执行程序是否需要常驻;
41.若是,则触发目标可执行程序重启模块;
42.所述目标可执行程序重启模块,用于将常驻的所述可执行程序作为所述目标可执行程序进行重启。
43.优选地,还包括:
44.可执行程序运行模块,用于当所述可执行程序不需要常驻时,主动运行不需要常驻的所述可执行程序,以实现所述可执行程序的升级。
45.优选地,还包括:
46.检查模块,用于通过热补丁结果检查配置文件检查所述补丁文件的热补丁结果。
47.为解决上述技术问题,本技术还提供一种bmc固件升级设备,包括:
48.存储器,用于存储计算机程序;
49.处理器,用于执行所述计算机程序时实现上述的bmc固件升级方法的步骤。
50.为解决上述技术问题,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的bmc固件升级方法的步骤。
51.本技术所提供的bmc固件升级方法,通过在bmc固件镜像中创建patch分区;在patch分区中创建目标目录并挂载overlayfs文件系统;获取补丁文件;其中,补丁文件中包
system version2,jffs2)文件系统,主要用于存放日志;root分区采用squashfs文件系统,主要用于存放库函数、文件系统以及大部分的可执行程序;media分区采用jffs2文件系统,用于媒体服务相关。在具体实施中,为了实现bmc固件的热补丁升级,首先在bmc固件镜像中创建patch分区,用以存放固件升级所需的热补丁文件。
65.需要注意的是,jffs2文件系统的功能是管理在内存技术设备(memory technology device,mtd)上实现的日志型文件系统。其在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用。而squashfs文件系统是一套基于linux内核使用的压缩只读文件系统,可以将整个文件系统或者某个单一的目录压缩在一起,存放在某个设备、某个分区或者普通的文件中。
66.需要说明的是,squashfs文件系统是一种只读的文件系统,其主要优势是会压缩镜像文件,减少存储空间的占用,所以也就无法对该分区里面的内容进行修改。jffs2文件系统是可以读写的文件系统,不会压缩该分区里面的内容。因此在patch分区的具体创建过程中,为了实现bmc固件升级过程中可执行程序的替换,应使用可读写的jffs2文件系统新建patch分区,用以存放固件升级所需的热补丁文件,以便后续的bmc固件升级。本实施例中对于patch分区的创建过程不做限制,根据具体的实施情况而定。
67.s11:在patch分区中创建目标目录并挂载overlayfs文件系统。
68.进一步地,在patch分区中创建目标目录,并为目录挂载overlayfs文件系统。overlayfs文件系统是一个面向linux的文件系统服务,是一种堆叠文件系统,它依赖并建立在其它的文件系统之上,并不直接参与磁盘空间结构的划分,仅仅将原来底层文件系统中不同的目录进行“合并”,然后向用户呈现。
69.图3为本技术实施例提供的overlayfs文件系统的示意图。如图3所示,overlayfs文件系统主要包含三个角色:lowerdir、upperdir和merged。其中,lowerdir是只读层,用户不能修改本层的文件;upperdir是可读写层,用户能够修改本层的文件;而merged是合并层,能够把lowerdir层和upperdir层的文件合并展示。当upperdir层和lowerdir层两个目录存在同名文件时,lowerdir的文件将会被隐藏,用户只能看见来自upperdir的文件。
70.可以理解的是,bmc固件镜像的root分区里面包含了bmc固件里面大部分可执行程序,但是root分区使用的是squashfs文件系统,无法通过替换里面的程序来达到热补丁的功能。因此使用可读写的jffs2文件系统新建的patch分区,并且在分区中创建目标目录供overlayfs文件系统使用。具体通过如下linux命令挂载overlay文件系统:mount-t overlay overlay-o lowerdir=/usr,upperdir=/patch/upper,workdir=/patch/work/usr。
71.需要注意的是,在具体实施中可在patch分区中创建/patch/upper目录和/patch/work目录两个目录,其中,图3中lowerdir对应的/usr目录里面主要存放的是待更新或者替换的原始的可执行程序;upperdir对应的/patch/upper目录里面主要存放更新过后的新的同名字的可执行文件,因此/patch/upper目录即为目标目录;workdir对应的/patch/work目录,其主要功能是overlayfs文件系统用于存放临时文件。
72.s12:获取补丁文件,补丁文件中包含多个可执行程序。
73.在创建patch分区并为patch分区中的目录挂载overlayfs文件系统之后,进一步获取补丁文件。可以理解的是,补丁文件中包含着多个升级的可执行程序,例如ipmimain、
libusb.so、cpldflasher和peciapp等。
74.本实施例中对于补丁文件的获取方式不做限制,根据具体的实施情况而定。
75.s13:上传各可执行程序至目标目录中。
76.s14:重启各可执行程序中的目标可执行程序,以实现bmc固件升级。
77.进一步地,上传补丁文件的各可执行程序至目标目录中,并重启各可执行程序中的目标可执行程序,以实现bmc固件升级。需要注意的是,补丁文件中,部分各可执行程序并不需要立即替换原始对应的可执行程序,可由用户选择其启动的时刻,以完成升级。因此在本实施例中进行重启替换的可执行程序是全部可执行程序中的目标可执行程序,目标可执行程序一般是指需要持续运行的可执行程序,必须立即完成升级;本实施例中对于目标可执行程序不做限制,根据具体的实施情况而定。
78.本实施例中,通过在bmc固件镜像中创建patch分区;在patch分区中创建目标目录并挂载overlayfs文件系统;获取补丁文件;其中,补丁文件中包含多个可执行程序;上传各可执行程序至目标目录中;重启各可执行程序中的目标可执行程序,以实现bmc固件升级。由此可知,上述方案通过创建patch分区及目标目录用于bmc的热补丁文件的存储,目标目录挂载了overlayfs文件系统,实现对于只读分区里面的可执行程序的替换,进而实现了热补丁功能,使得bmc固件升级轻量快捷,不需要重启bmc即可进行问题修复和功能更新,提高了升级效率。
79.在上述实施例的基础上,作为一种优选的实施例,在bmc固件镜像中创建patch分区包括:
80.利用mkfs.jffs2工具根据mkfs.jffs2

d/patch

o patch.img命令创建patch分区。
81.在具体实施中,具体通过mkfs.jffs2工具实现bmc固件镜像中patch分区的创建。
82.mkfs.jffs2是制作jffs2文件系统分区镜像的常用工具。基于mkfs.jffs2工具,通过mkfs.jffs2

d/patch

o patch.img命令实现了bmc固件镜像中patch分区的创建,以便于存放需要替换更新的可执行程序和后续的bmc固件升级。
83.在上述实施例的基础上,作为一种优选的实施例,获取补丁文件包括:
84.通过bmc固件管理的web服务获取补丁文件;
85.将补丁文件上传至/var路径中。
86.在具体实施中,为获取bmc固件升级的补丁文件,作为一种优选的实施例,具体通过bmc固件管理的web服务获取补丁文件。通过bmc固件管理的web服务,能够十分快捷地获取升级所需的补丁文件。
87.此外,将补丁文件上传至/var路径中。/var路径是一个公用存放临时文件的目录,通过/var路径能够实现补丁文件的缓存,以便于在后续基于/var路径将补丁文件中的各可执行程序上传至目标目录中。
88.作为一种优选的实施例,为了确定获取的补丁文件能够支持热补丁,在上传各可执行程序至目标目录中之前,还包括:
89.根据补丁文件的名称和热补丁校验配置文件中的配置选项判断补丁文件是否支持热补丁;
90.若是,则进入上传各可执行程序至目标目录中的步骤;
91.若否,则结束。
92.在具体实施中,根据补丁文件的名称和热补丁校验配置文件中的配置选项判断补丁文件是否支持热补丁。其中,热补丁校验配置文件中包含各可执行程序的相关信息;具体地,在热补丁校验配置文件中,compname表示可执行程序的名称,supportpatch表示是否支持打补丁,deamon表示是否常驻可执行程序。当根据补丁文件的名称进而热补丁校验配置文件中的配置选项确定补丁文件支持热补丁,则上传各可执行程序至目标目录中,具体将/var路径下的补丁文件移动到目标目录,即/patch/upper目录下。若确定补丁文件不支持热补丁,则结束。
93.本实施例中,根据补丁文件的名称和热补丁校验配置文件中的配置选项判断补丁文件是否支持热补丁;若是,则上传各可执行程序至目标目录中;若否,则结束,实现了补丁文件是否支持热补丁的判断。
94.在上述实施例的基础上,作为一种优选的实施例,重启各可执行程序中的目标可执行程序包括:
95.分别判断各可执行程序是否需要常驻;
96.若是,则将常驻的可执行程序作为目标可执行程序进行重启。
97.进一步地,在判断是否支持热补丁之后,重启各可执行程序中的目标可执行程序时,需要分别判断各可执行程序是否需要常驻。常驻即为该可执行程序需要持续运行。常驻进程例如可执行程序ipmimain。当判断可执行程序需要常驻,则该可执行程序即为目标可执行程序,对其进行重启,从而使补丁生效。
98.在上述实施例的基础上,作为一种优选的实施例,若确定可执行程序不需要常驻,还包括:
99.主动运行不需要常驻的可执行程序,以实现可执行程序的升级。
100.在具体实施中,当确定可执行程序不需要常驻,例如可执行程序cpldflasher,则需用户主动运行该不需要常驻的可执行程序,运行过程中通过将本身的版本号写入配置文件当中,从而使补丁生效。
101.本实施例中,分别判断各可执行程序是否需要常驻,将常驻的可执行程序作为目标可执行程序进行重启,主动运行不需要常驻的可执行程序,最终实现了可执行程序的升级。
102.在上述实施例的基础上,作为一种优选的实施例,还包括:
103.通过热补丁结果检查配置文件检查补丁文件的热补丁结果。
104.可以理解的是,在将常驻的可执行程序作为目标可执行程序进行重启的过程中,通过写配置文件的方式将当前服务进程的版本号写入配置文件当中。例如ipmimain的初始版本写入的版本号是1.2,当ipmimain的补丁文件被运行之后,会修改热补丁结果检查配置文件,将新的版本号1.3写入文件当中,这样通过检查配置里面的记录即可得知补丁执行的结果。其中,热补丁结果检查配置文件中,originversion表示原始版本,patchversion表示补丁的版本。
105.进一步地,对于不是常驻类型的可执行程序,例如可执行程序cpldflasher,可以主动运行一次可执行程序,运行过程中通过将本身的版本号写入配置文件当中,例如cpldflasher原始版本号是3.1,若未打补丁,则配置文件中补丁版本号为na;若打过补丁,
则配置文件中补丁版本号被改为新的版本号3.2。因此,为了实现热补丁结果的检查,可选择通过热补丁结果检查配置文件检查补丁文件的热补丁结果。
106.在上述实施例中,对于bmc固件升级方法进行了详细描述,本技术还提供bmc固件升级装置对应的实施例。
107.图4为本技术实施例提供的一种bmc固件升级装置的示意图。如图4所示,bmc固件升级装置包括:
108.创建模块10,用于在bmc固件镜像中创建patch分区。
109.挂载模块11,用于在patch分区中创建目标目录并挂载overlayfs文件系统。
110.获取模块12,用于获取补丁文件;其中,补丁文件中包含多个可执行程序。
111.上传模块13,用于上传各可执行程序至目标目录中。
112.重启模块14,用于重启各可执行程序中的目标可执行程序,以实现bmc固件升级。
113.作为一种优选的实施例,创建模块具体利用mkfs.jffs2工具根据mkfs.jffs2

d/patch

o patch.img命令创建patch分区。
114.作为一种优选的实施例,获取模块包括:
115.补丁文件获取模块,用于通过bmc固件管理的web服务获取补丁文件;
116.补丁文件上传模块,用于将补丁文件上传至/var路径中。
117.作为一种优选的实施例,还包括:
118.第一判断模块,用于在上传各可执行程序至目标目录中之前,根据补丁文件的名称和热补丁校验配置文件中的配置选项判断补丁文件是否支持热补丁;若是,则触发上传模块;若否,则结束。
119.作为一种优选的实施例,重启模块包括:
120.第二判断模块,用于分别判断各可执行程序是否需要常驻;
121.若是,则触发目标可执行程序重启模块;
122.目标可执行程序重启模块,用于将常驻的可执行程序作为目标可执行程序进行重启。
123.作为一种优选的实施例,还包括:
124.可执行程序运行模块,用于当可执行程序不需要常驻时,主动运行不需要常驻的可执行程序,以实现可执行程序的升级。
125.作为一种优选的实施例,还包括:
126.检查模块,用于通过热补丁结果检查配置文件检查补丁文件的热补丁结果。
127.本实施例中,bmc固件升级装置包括创建模块、挂载模块、获取模块、上传模块和重启模块。通过在bmc固件镜像中创建patch分区;在patch分区中创建目标目录并挂载overlayfs文件系统;获取补丁文件;其中,补丁文件中包含多个可执行程序;上传各可执行程序至目标目录中;重启各可执行程序中的目标可执行程序,以实现bmc固件升级。由此可知,上述方案通过创建patch分区及目标目录用于bmc的热补丁文件的存储,目标目录挂载了overlayfs文件系统,实现对于只读分区里面的可执行程序的替换,进而实现了热补丁功能,使得bmc固件升级轻量快捷,不需要重启bmc即可进行问题修复和功能更新,提高了升级效率。
128.图5为本技术实施例提供的一种bmc固件升级设备的示意图。如图5所示,bmc固件
升级设备包括:
129.存储器20,用于存储计算机程序。
130.处理器21,用于执行计算机程序时实现如上述实施例中所提到的bmc固件升级方法的步骤。
131.本实施例提供的bmc固件升级设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
132.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图形处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
133.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的bmc固件升级方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于bmc固件升级方法涉及到的数据。
134.在一些实施例中,bmc固件升级设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
135.本领域技术人员可以理解,图5中示出的结构并不构成对bmc固件升级设备的限定,可以包括比图示更多或更少的组件。
136.本实施例中,bmc固件升级设备包括存储器和处理器。存储器用于存储计算机程序;处理器用于执行计算机程序时实现如上述实施例中所提到的bmc固件升级方法的步骤。通过在bmc固件镜像中创建patch分区;在patch分区中创建目标目录并挂载overlayfs文件系统;获取补丁文件;其中,补丁文件中包含多个可执行程序;上传各可执行程序至目标目录中;重启各可执行程序中的目标可执行程序,以实现bmc固件升级。由此可知,上述方案通过创建patch分区及目标目录用于bmc的热补丁文件的存储,目标目录挂载了overlayfs文件系统,实现对于只读分区里面的可执行程序的替换,进而实现了热补丁功能,使得bmc固件升级轻量快捷,不需要重启bmc即可进行问题修复和功能更新,提高了升级效率。
137.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
138.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立
的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
139.本实施例中,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。通过在bmc固件镜像中创建patch分区;在patch分区中创建目标目录并挂载overlayfs文件系统;获取补丁文件;其中,补丁文件中包含多个可执行程序;上传各可执行程序至目标目录中;重启各可执行程序中的目标可执行程序,以实现bmc固件升级。由此可知,上述方案通过创建patch分区及目标目录用于bmc的热补丁文件的存储,目标目录挂载了overlayfs文件系统,实现对于只读分区里面的可执行程序的替换,进而实现了热补丁功能,使得bmc固件升级轻量快捷,不需要重启bmc即可进行问题修复和功能更新,提高了升级效率。
140.以上对本技术所提供的一种bmc固件升级方法、装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
141.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1