本发明涉及bmc固件更新领域,尤其涉及一种bmc的固件更新运行方法及系统。
背景技术:
1、在服务器的使用过程中,其内部的bmc(baseboard management controller,基板管理控制器)发挥着重要作用,管理服务器上的硬件,监控服务器的运行环境和安全状态,不仅负责对服务器硬件的管理,还提供远程访问与管理服务器硬件的功能,还可以对服务器进行bios升降级,bmc是一个嵌入式linux系统,为了获得更好的体验、提升业务和更高的稳定性,有时需要对bmc的固件进行更新。只要有更新就必然会存在发生故障的可能,比如更新过程中断电导致更新失败,在这种情况下,由于bmc固件出现了问题,bmc无法正常工作,服务器也就无法正常启动。
2、在现有技术中,为了恢复bmc的故障,通常是使用芯片烧录器将固件重新烧录到bmc中,然而,这种方法需要对服务器进行拆机处理,非常耗时耗力,而且麻烦繁杂,无法做到每一次升级后bmc固件正常使用,导致bmc固件更新的稳定性低。同时,服务器经不起这种耗时的修复工作,无法快速完成bmc固件更新,使得服务器不能正常运行,导致正常业务受阻,影响用户体验。
技术实现思路
1、本发明提供了一种bmc的固件更新运行方法及系统,实现快速更新bmc固件,提高bmc固件更新的稳定性和用户体验。
2、为了解决上述技术问题,本发明实施例提供了一种bmc的固件更新运行方法,包括:
3、读取服务器中bmc的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间,得到第一存储区间;
4、通过预设的接收方式,接收新固件,将新固件存储至第二存储区间;
5、根据预设的校验方式,将新固件进行功能特性校验,若校验通过,则将当前的启动标志设置于第二存储区间;其中,校验方式包括循环冗余校验和哈希校验中的至少一种;若校验不通过或者接收新固件的过程失败,则将启动标志设置于第一存储区间;
6、根据bmc的启动标志,运行bmc的固件。
7、实施本发明实施例,读取服务器中bmc的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间(第一存储区间),通过预设的接收方式,更新接收新固件,将新固件存储至非当前运行的存储区间(第二存储区间),在bmc固件更新成功及校验通过后,设置启动标志到新固件的存储区间,bmc重启时bootloader读取启动标志,根据读取的启动标志,就可以直接运行bmc的新固件,且能在接收新固件的过程失败(bmc固件更新失败)或校验不通过时,重启时bootloader读取的启动标志依然是老固件,还能够启动老固件,而无需进行拆机重新烧录bmc固件,从而能顺利启动操作系统,通过启动标志快速更新并启动bmc固件,拥有更好的用户体验,在不拆机的情况下做到稳定升级bmc固件,提高bmc固件更新的稳定性。
8、作为优选方案,通过预设的接收方式,更新接收新固件,具体为:
9、启动bmc的bootloader,初始化flash控制器,通过flash控制器读取当前的固件;
10、若当前的固件为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件;
11、若当前的固件不为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件,将当前的固件更新为新固件。
12、作为优选方案,根据预设的校验方式,将新固件进行功能特性校验,具体为:
13、当预设的校验方式为循环冗余校验时,获取第一预设校验数据的全部数据字节;
14、初始化校验变量,并将第一个数据字节添加至校验变量中;
15、根据第一预设规则,将各数据字节进行校验变换操作,获得各校验数据字节,并将各校验数据字节添加至校验变量中;其中,校验变换操作包括移位操作和异或操作
16、将完成添加后的校验变量的值除以预设多项式,得到第一crc校验码;
17、通过新固件,将第一crc校验码和第一预设校验数据传输至第一接收方,使第一接收方根据预设多项式和第一预设校验数据,计算第二crc校验码,并将第一crc校验码与第二crc校验码进行比较,若相等,则校验通过,若不相等,则校验不通过。
18、实施本发明实施例,通过crc校验码的方式进行循环冗余校验,校验bmc固件中数据的完整程度和正确程度,使得数据完整性和正确性得到保证。
19、作为优选方案,根据预设的校验方式,将新固件进行功能特性校验,具体为:
20、当预设的校验方式为哈希校验时,获取第二预设校验数据;
21、根据第二预设规则,将第二预设校验数据进行哈希计算,得到第一哈希值;
22、通过新固件,将第一哈希值和第二预设校验数据传输至第二接收方,使第二接收方根据第二预设规则,将第二预设校验数据进行哈希计算,得到第二哈希值,并将第一哈希值与第二哈希值进行比较,若相等,则校验通过,若不相等,则校验不通过。
23、实施本发明实施例,通过哈希计算进行哈希校验,保证在bmc固件更新后数据的完整性和正确性。
24、作为优选方案,根据bmc的启动标志,运行bmc的固件,具体为:
25、当重启运行bmc时,读取bmc的启动标志,确定读取的启动标志对应的存储区间,在启动标志对应的存储区间中运行bmc的固件。
26、作为优选方案,在读取bmc的当前的启动标志之前,还包括:
27、将bmc固件存储介质进行存储区间的划分;
28、当检测到非当前版本的新固件时,响应用户更新操作指令;其中,用户更新操作指令根据bmc固件更新需求确定;bmc固件更新需求包括选择最新版本的bmc固件、选择历史某一版本的bmc固件和选择特定版本的bmc固件中的一种。
29、作为优选方案,将bmc固件存储介质进行存储区间的划分,包括:
30、判断bmc固件存储介质的数量是否为1个;
31、若否,则将不同的存储介质对应划分为不同的存储区间;
32、若是,则根据bmc固件的大小和当前的存储介质的存储空间,将当前的存储介质划分为第三存储区间、第四存储区间和第五存储区间。
33、为了解决相同的技术问题,本发明实施例还提供了一种bmc的固件更新运行系统,包括:读取启动标志模块、接收新固件模块、校验模块和运行模块;
34、其中,读取启动标志模块用于读取服务器中bmc的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间,得到第一存储区间;
35、接收新固件模块用于通过预设的接收方式,更新接收新固件,将新固件存储至第二存储区间;
36、校验模块用于根据预设的校验方式,将新固件进行功能特性校验,若校验通过,则将当前的启动标志设置于第二存储区间;其中,校验方式包括循环冗余校验和哈希校验中的至少一种;若校验不通过或者接收新固件的过程失败,则将启动标志设置于第一存储区间;
37、运行模块用于根据bmc的启动标志,运行bmc的固件。
38、作为优选方案,接收新固件模块包括初始化flash单元、新固件接收单元和固件更新单元;
39、初始化flash单元用于启动bmc的bootloader,初始化flash控制器,通过flash控制器读取当前的固件;
40、新固件接收单元用于若当前的固件为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件;
41、固件更新单元用于若当前的固件不为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件,将当前的固件更新为新固件。
42、作为优选方案,校验模块包括循环冗余校验单元;
43、循环冗余校验单元用于当预设的校验方式为循环冗余校验时,获取第一预设校验数据的全部数据字节;初始化校验变量,并将第一个数据字节添加至校验变量中;根据第一预设规则,将各数据字节进行校验变换操作,获得各校验数据字节,并将各校验数据字节添加至校验变量中;其中,校验变换操作包括移位操作和异或操作;将完成添加后的校验变量的值除以预设多项式,得到第一crc校验码;通过新固件,将第一crc校验码和第一预设校验数据传输至第一接收方,使第一接收方根据预设多项式和第一预设校验数据,计算第二crc校验码,并将第一crc校验码与第二crc校验码进行比较,若相等,则校验通过,若不相等,则校验不通过。