CN116932006A - 一种bmc的固件更新运行方法及系统 - Google Patents
一种bmc的固件更新运行方法及系统 Download PDFInfo
- Publication number
- CN116932006A CN116932006A CN202311109220.3A CN202311109220A CN116932006A CN 116932006 A CN116932006 A CN 116932006A CN 202311109220 A CN202311109220 A CN 202311109220A CN 116932006 A CN116932006 A CN 116932006A
- Authority
- CN
- China
- Prior art keywords
- firmware
- bmc
- preset
- check
- current
- 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
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种BMC的固件更新运行方法及系统,方法包括将BMC固件存储介质进行存储区间的划分;当检测到非当前版本的新固件时,用户更新操作指令;其中,用户更新操作指令根据BMC固件更新需求确定;读取服务器中BMC的当前的启动标志,确定当前运行的存储区间,得到第一存储区间;通过预设的接收方式,更新接收新固件,将新固件存储至第二存储区间;根据预设的循环冗余校验或哈希校验,将新固件进行功能特性校验,若校验通过,则将当前的启动标志设置于第二存储区间;若校验不通过或者接收新固件的过程失败,则将启动标志设置于第一存储区间;根据BMC的启动标志,运行BMC的固件。本实施例实现了快速更新BMC固件,提高BMC固件更新的稳定性和用户体验。
Description
技术领域
本发明涉及BMC固件更新领域,尤其涉及一种BMC的固件更新运行方法及系统。
背景技术
在服务器的使用过程中,其内部的BMC(Baseboard Management Controller,基板管理控制器)发挥着重要作用,管理服务器上的硬件,监控服务器的运行环境和安全状态,不仅负责对服务器硬件的管理,还提供远程访问与管理服务器硬件的功能,还可以对服务器进行BIOS升降级,BMC是一个嵌入式Linux系统,为了获得更好的体验、提升业务和更高的稳定性,有时需要对BMC的固件进行更新。只要有更新就必然会存在发生故障的可能,比如更新过程中断电导致更新失败,在这种情况下,由于BMC固件出现了问题,BMC无法正常工作,服务器也就无法正常启动。
在现有技术中,为了恢复BMC的故障,通常是使用芯片烧录器将固件重新烧录到BMC中,然而,这种方法需要对服务器进行拆机处理,非常耗时耗力,而且麻烦繁杂,无法做到每一次升级后BMC固件正常使用,导致BMC固件更新的稳定性低。同时,服务器经不起这种耗时的修复工作,无法快速完成BMC固件更新,使得服务器不能正常运行,导致正常业务受阻,影响用户体验。
发明内容
本发明提供了一种BMC的固件更新运行方法及系统,实现快速更新BMC固件,提高BMC固件更新的稳定性和用户体验。
为了解决上述技术问题,本发明实施例提供了一种BMC的固件更新运行方法,包括:
读取服务器中BMC的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间,得到第一存储区间;
通过预设的接收方式,接收新固件,将新固件存储至第二存储区间;
根据预设的校验方式,将新固件进行功能特性校验,若校验通过,则将当前的启动标志设置于第二存储区间;其中,校验方式包括循环冗余校验和哈希校验中的至少一种;若校验不通过或者接收新固件的过程失败,则将启动标志设置于第一存储区间;
根据BMC的启动标志,运行BMC的固件。
实施本发明实施例,读取服务器中BMC的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间(第一存储区间),通过预设的接收方式,更新接收新固件,将新固件存储至非当前运行的存储区间(第二存储区间),在BMC固件更新成功及校验通过后,设置启动标志到新固件的存储区间,BMC重启时bootloader读取启动标志,根据读取的启动标志,就可以直接运行BMC的新固件,且能在接收新固件的过程失败(BMC固件更新失败)或校验不通过时,重启时bootloader读取的启动标志依然是老固件,还能够启动老固件,而无需进行拆机重新烧录BMC固件,从而能顺利启动操作系统,通过启动标志快速更新并启动BMC固件,拥有更好的用户体验,在不拆机的情况下做到稳定升级BMC固件,提高BMC固件更新的稳定性。
作为优选方案,通过预设的接收方式,更新接收新固件,具体为:
启动BMC的Bootloader,初始化Flash控制器,通过Flash控制器读取当前的固件;
若当前的固件为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件;
若当前的固件不为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件,将当前的固件更新为新固件。
作为优选方案,根据预设的校验方式,将新固件进行功能特性校验,具体为:
当预设的校验方式为循环冗余校验时,获取第一预设校验数据的全部数据字节;
初始化校验变量,并将第一个数据字节添加至校验变量中;
根据第一预设规则,将各数据字节进行校验变换操作,获得各校验数据字节,并将各校验数据字节添加至校验变量中;其中,校验变换操作包括移位操作和异或操作
将完成添加后的校验变量的值除以预设多项式,得到第一CRC校验码;
通过新固件,将第一CRC校验码和第一预设校验数据传输至第一接收方,使第一接收方根据预设多项式和第一预设校验数据,计算第二CRC校验码,并将第一CRC校验码与第二CRC校验码进行比较,若相等,则校验通过,若不相等,则校验不通过。
实施本发明实施例,通过CRC校验码的方式进行循环冗余校验,校验BMC固件中数据的完整程度和正确程度,使得数据完整性和正确性得到保证。
作为优选方案,根据预设的校验方式,将新固件进行功能特性校验,具体为:
当预设的校验方式为哈希校验时,获取第二预设校验数据;
根据第二预设规则,将第二预设校验数据进行哈希计算,得到第一哈希值;
通过新固件,将第一哈希值和第二预设校验数据传输至第二接收方,使第二接收方根据第二预设规则,将第二预设校验数据进行哈希计算,得到第二哈希值,并将第一哈希值与第二哈希值进行比较,若相等,则校验通过,若不相等,则校验不通过。
实施本发明实施例,通过哈希计算进行哈希校验,保证在BMC固件更新后数据的完整性和正确性。
作为优选方案,根据BMC的启动标志,运行BMC的固件,具体为:
当重启运行BMC时,读取BMC的启动标志,确定读取的启动标志对应的存储区间,在启动标志对应的存储区间中运行BMC的固件。
作为优选方案,在读取BMC的当前的启动标志之前,还包括:
将BMC固件存储介质进行存储区间的划分;
当检测到非当前版本的新固件时,响应用户更新操作指令;其中,用户更新操作指令根据BMC固件更新需求确定;BMC固件更新需求包括选择最新版本的BMC固件、选择历史某一版本的BMC固件和选择特定版本的BMC固件中的一种。
作为优选方案,将BMC固件存储介质进行存储区间的划分,包括:
判断BMC固件存储介质的数量是否为1个;
若否,则将不同的存储介质对应划分为不同的存储区间;
若是,则根据BMC固件的大小和当前的存储介质的存储空间,将当前的存储介质划分为第三存储区间、第四存储区间和第五存储区间。
为了解决相同的技术问题,本发明实施例还提供了一种BMC的固件更新运行系统,包括:读取启动标志模块、接收新固件模块、校验模块和运行模块;
其中,读取启动标志模块用于读取服务器中BMC的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间,得到第一存储区间;
接收新固件模块用于通过预设的接收方式,更新接收新固件,将新固件存储至第二存储区间;
校验模块用于根据预设的校验方式,将新固件进行功能特性校验,若校验通过,则将当前的启动标志设置于第二存储区间;其中,校验方式包括循环冗余校验和哈希校验中的至少一种;若校验不通过或者接收新固件的过程失败,则将启动标志设置于第一存储区间;
运行模块用于根据BMC的启动标志,运行BMC的固件。
作为优选方案,接收新固件模块包括初始化Flash单元、新固件接收单元和固件更新单元;
初始化Flash单元用于启动BMC的Bootloader,初始化Flash控制器,通过Flash控制器读取当前的固件;
新固件接收单元用于若当前的固件为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件;
固件更新单元用于若当前的固件不为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件,将当前的固件更新为新固件。
作为优选方案,校验模块包括循环冗余校验单元;
循环冗余校验单元用于当预设的校验方式为循环冗余校验时,获取第一预设校验数据的全部数据字节;初始化校验变量,并将第一个数据字节添加至校验变量中;根据第一预设规则,将各数据字节进行校验变换操作,获得各校验数据字节,并将各校验数据字节添加至校验变量中;其中,校验变换操作包括移位操作和异或操作;将完成添加后的校验变量的值除以预设多项式,得到第一CRC校验码;通过新固件,将第一CRC校验码和第一预设校验数据传输至第一接收方,使第一接收方根据预设多项式和第一预设校验数据,计算第二CRC校验码,并将第一CRC校验码与第二CRC校验码进行比较,若相等,则校验通过,若不相等,则校验不通过。
附图说明
图1:为本发明提供的一种BMC的固件更新运行方法的一种实施例的流程示意图;
图2:为本发明提供的一种BMC的固件更新运行方法的一种实施例的固件更新的简化流程示意图;
图3:为本发明提供的一种BMC的固件更新运行系统的一种实施例的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
请参照图1,为本发明实施例提供的一种BMC的固件更新运行方法的流程示意图。本实施例通过启动标志快速更新并启动BMC固件,提高BMC固件更新的稳定性和用户体验。该BMC的固件更新运行方法包括步骤101至步骤105,各步骤具体如下:
步骤101:将BMC固件存储介质进行存储区间的划分;当检测到非当前版本的新固件时,响应用户更新操作指令;其中,用户更新操作指令根据BMC固件更新需求确定;BMC固件更新需求包括选择最新版本的BMC固件、选择历史某一版本的BMC固件和选择特定版本的BMC固件中的一种。
需要说明的是,Baseboard Management Controller(BMC),基板管理控制器,用来管理服务器上的硬件,它可以在机器未开机的状态下,对机器进行固件升级和查看机器设备等一系列操作,并且还提供了远程管理服务器硬件的功能。固件(Firmware)的主要功能是为计算机提供最底层的、最直接的硬件设置和控制,此外,固件还负责初始化一些必要的硬件,同时向操作系统提供一些系统参数,引导操作系统启动。
可选的,步骤101具体包括步骤1011至步骤1012,各步骤具体如下:
步骤1011:判断BMC固件存储介质的数量是否为1个;若否,则将不同的存储介质对应划分为不同的存储区间;若是,则根据BMC固件的大小和当前的存储介质的存储空间,将当前的存储介质划分为第三存储区间、第四存储区间和第五存储区间。
在本实施例中,BMC固件的存储介质一般为Flash,若BMC固件中存在多个存储介质,则每个存储介质是一个存储区间,如:BMC固件中存在两个存储介质,则每块存储介质是一个存储区间,若BMC固件中仅存1个存储介质,则根据固件的大小和存储介质的存储空间,将该存储介质进行划分,在BMC固件的存储介质中划分出三块区间,两块区间A(第三存储区间)和B(第四存储区间)用于存储固件,另一块区间C(第五存储区间)存储启动标志等其他信息。
作为本实施例的一种举例,当BMC固件存储介质的数量仅为1个时,假设BMC固件的大小为size,则需要的Flash的存储空间至少为2*size+16,0~(size-1)为A区,size~(2*size-1)为B区,剩余16byte为C区,C区存储启动标志等其他信息。在进行固件更新过程中,假设初始状态,BMC运行的固件存储在A区间,当需要进行更新固件时,将固件更新到B区间,而不是直接覆盖A区间,这样就不至于更新失败时破坏A区间的老固件,当更新成功时,设置启动标志到B区间,这样重启时就运行B区间的新固件,当更新失败时,比如断电导致的失败,那启动标志依然是A区间,这时重启时还是运行A区间的固件。
步骤1012:当检测到非当前版本的新固件时,响应用户更新操作指令;其中,用户更新操作指令根据BMC固件更新需求确定;BMC固件更新需求包括选择最新版本的BMC固件、选择历史某一版本的BMC固件和选择特定版本的BMC固件中的一种。
在本实施例中,当BMC检测到有新固件时,用户可以选择不同版本的BMC固件进行更新BMC,或者用户想烧录一个特定版本的BMC固件时,也可以进行BMC固件的更新,因此根据BMC固件更新需求确定用户更新操作指令,并对用户更新操作指令做出响应进行下一步的固件更新动作。
步骤102:读取服务器中BMC的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间,得到第一存储区间。
在本实施例中,固件更新的简化流程,如图2所示,读取存储的启动标志,可以判断当前是从哪一存储区间启动,即时从A区启动还是从B区启动,目的是为了后面更新固件时,将新固件存储到另一个存储区间,而不覆盖当前启动的存储区间。
步骤103:通过预设的接收方式,更新接收新固件,将新固件存储至第二存储区间;
可选的,其中,第二存储区间是根据第一存储区间(当前运行的存储区间),确定的非当前运行的存储区间。
可选的,通过预设的接收方式,更新接收新固件,具体为:
启动BMC的Bootloader,初始化Flash控制器,通过Flash控制器读取当前的固件;
若当前的固件为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件;
若当前的固件不为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件,将当前的固件更新为新固件。
在本实施例中,BMC的Bootloader启动后,将初始化Flash控制器,再从Flash上读取BMC固件,如果Flash上没有固件,就初始化以太网控制器,从网络接收BMC固件(新固件),将其存储到对应的存储空间中。
步骤104:根据预设的校验方式,将新固件进行功能特性校验,若校验通过,则将当前的启动标志设置于第二存储区间;其中,校验方式包括循环冗余校验和哈希校验中的至少一种;若校验不通过或者接收新固件的过程失败,则将启动标志设置于第一存储区间。
在本实施例中,更新过程中,会校验BMC固件的完整性和正确性(如:哈希校验和循环冗余校验等),校验通过就表示更新成功,再更新启动标志至的存储新固件的存储区间;如果校验不通过,则不更新启动标志。特别地,当出现接收新固件过程失败的情况时(如:更新过程中出现断电、网络中断、Flash控制器故障和以太网故障等情况),则启动标志也不会更新。
可选的,当预设的校验方式为循环冗余校验时,通过循环冗余校验(CRC)校验BMC固件的完整性和正确性,具体包括步骤S1至步骤S5,各步骤具体如下:
S1:获取第一预设校验数据的全部数据字节。
S2:初始化校验变量,并将第一个数据字节添加至校验变量中;
在本实施例中,初始化校验变量,即定义一个初始值为0的变量,将第一个数据字节加入校验变量中。
S3:根据第一预设规则,将各数据字节进行校验变换操作,获得各校验数据字节,并将各校验数据字节添加至校验变量中;其中,校验变换操作包括移位操作和异或操作。
在本实施例中,对于每个数据字节,将其按照一定规则(第一预设规则)进行移位和异或操作,然后将其加入校验变量中。
S4:将完成添加后的校验变量的值除以预设多项式,得到第一CRC校验码。
在本实施例中,预设多项式即为选择一个适当的多项式,如CRC-32。将完成添加后的校验变量的值除以预设多项式,得到一个余数,即CRC校验码(第一CRC校验码)。
S5:通过新固件,将第一CRC校验码和第一预设校验数据传输至第一接收方,使第一接收方根据预设多项式和第一预设校验数据,计算第二CRC校验码,并将第一CRC校验码与第二CRC校验码进行比较,若相等,则校验通过,若不相等,则校验不通过。
在本实施例中,利用新固件,将第一CRC校验码与预设校验数据一起传输,接收方按照相同的多项式计算CRC校验码(第二CRC校验码),并与接收到的CRC校验码(第一CRC校验码)进行比较,如果相等,则校验通过,说明数据完整性和正确性得到了保证,如果不相等,则校验不通过,说明数据不完整或者不正确。
实施本发明实施例,通过CRC校验码的方式进行循环冗余校验,校验BMC固件中数据的完整程度和正确程度,使得数据完整性和正确性得到保证。
可选的,当预设的校验方式为哈希校验时,获取第二预设校验数据;
根据第二预设规则,将第二预设校验数据进行哈希计算,得到第一哈希值;
通过新固件,将第一哈希值和第二预设校验数据传输至第二接收方,使第二接收方根据第二预设规则,将第二预设校验数据进行哈希计算,得到第二哈希值,并将第一哈希值与第二哈希值进行比较,若相等,则校验通过,若不相等,则校验不通过。
在本实施例中,通过哈希校验(哈希算法Hash Algorithm)校验BMC固件的完整性和正确性的具体实现流程为:(1)选择哈希算法,如:SHA-256哈希算法;(2)将预设校验数据按照一定规则(预设规则)进行哈希计算,得到一个固定长度的哈希值(第一哈希值)。(3)将第一哈希值与预设校验数据一起传输。(4)接收方按照相同的方法计算哈希值(第二哈希值),并与接收到的第一哈希值进行比较,如果相等,则校验通过,说明数据完整性和正确性得到了保证,如果不相等,则校验不通过,说明数据不完整或者不正确。
实施本发明实施例,通过哈希计算进行哈希校验,保证在BMC固件更新后数据的完整性和正确性。
步骤105:根据BMC的启动标志,运行BMC的固件。
可选的,步骤105具体为:当重启运行BMC时,读取BMC的启动标志,确定读取的启动标志对应的存储区间,在启动标志对应的存储区间中运行BMC的固件。
实施本发明实施例,读取服务器中BMC的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间(第一存储区间),通过预设的接收方式,更新接收新固件,将新固件存储至非当前运行的存储区间(第二存储区间),在BMC固件更新成功及校验通过后,已设置启动标志到新固件的存储区间,BMC重启时bootloader读取启动标志,根据读取的启动标志,就可以直接运行BMC的新固件,在BMC固件更新失败或校验不通过后,并未改动启动标志的存储区间,重启时bootloader读取的启动标志依然是老固件,还能够启动老固件,而无需进行拆机重新烧录BMC固件,从而能顺利启动操作系统,通过启动标志快速更新并启动BMC固件,拥有更好的用户体验,在不拆机的情况下做到稳定升级BMC固件,提高BMC固件更新的稳定性。
实施例二
相应地,参见图3,图3是本发明提供的一种BMC的固件更新运行系统的实施例二的结构示意图。如图3所示,BMC的固件更新运行系统包括区间划分模块300、响应模块301、读取启动标志模块302、接收新固件模块303、校验模块304和运行模块305;
区间划分模块300用于将BMC固件存储介质进行存储区间的划分;
区间划分模块300包括判断单元3001、第一划分单元3002和第二划分单元3003;
判断单元3001用于判断BMC固件存储介质的数量是否为1个;
第一划分单元3002用于若BMC固件存储介质的数量不为1个,则将不同的存储介质对应划分为不同的存储区间;
第二划分单元3003用于若BMC固件存储介质的数量为1个,则根据BMC固件的大小和当前的存储介质的存储空间,将当前的存储介质划分为第三存储区间、第四存储区间和第五存储区间。
响应模块301用于当检测到非当前版本的新固件时,响应用户更新操作指令;其中,用户更新操作指令根据BMC固件更新需求确定;BMC固件更新需求包括选择最新版本的BMC固件、选择历史某一版本的BMC固件和选择特定版本的BMC固件中的一种。
读取启动标志模块302用于读取服务器中BMC的当前的启动标志,并根据当前的启动标志,确定当前运行的存储区间,得到第一存储区间;
接收新固件模块303用于通过预设的接收方式,更新接收新固件,将新固件存储至第二存储区间;
接收新固件模块303包括初始化Flash单元3031、新固件接收单元3032和固件更新单元3033;
初始化Flash单元3031用于启动BMC的Bootloader,初始化Flash控制器,通过Flash控制器读取当前的固件;
新固件接收单元3032用于若当前的固件为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件;
固件更新单元3033用于若当前的固件不为空值,则初始化以太网控制器,通过以太网控制器,在网络中接收新固件,将当前的固件更新为新固件。
校验模块304用于根据预设的校验方式,将新固件进行功能特性校验,若校验通过,则将当前的启动标志设置于第二存储区间;其中,校验方式包括循环冗余校验和哈希校验中的至少一种;若校验不通过或者接收新固件的过程失败,则将启动标志设置于第一存储区间;
校验模块304包括循环冗余校验单元3041和哈希校验单元3042;
循环冗余校验单元3041用于当预设的校验方式为循环冗余校验时,获取第一预设校验数据的全部数据字节;初始化校验变量,并将第一个数据字节添加至校验变量中;根据第一预设规则,将各数据字节进行校验变换操作,获得各校验数据字节,并将各校验数据字节添加至校验变量中;其中,校验变换操作包括移位操作和异或操作;将完成添加后的校验变量的值除以预设多项式,得到第一CRC校验码;通过新固件,将第一CRC校验码和第一预设校验数据传输至第一接收方,使第一接收方根据预设多项式和第一预设校验数据,计算第二CRC校验码,并将第一CRC校验码与第二CRC校验码进行比较,若相等,则校验通过,若不相等,则校验不通过。
哈希校验单元3042用于当预设的校验方式为哈希校验时,获取第二预设校验数据;根据第二预设规则,将第二预设校验数据进行哈希计算,得到第一哈希值;通过新固件,将第一哈希值和第二预设校验数据传输至第二接收方,使第二接收方根据第二预设规则,将第二预设校验数据进行哈希计算,得到第二哈希值,并将第一哈希值与第二哈希值进行比较,若相等,则校验通过,若不相等,则校验不通过。
运行模块305用于根据BMC的启动标志,运行BMC的固件。
运行模块305包括运行单元3051;
运行单元3051用于当重启运行BMC时,读取BMC的启动标志,确定读取的启动标志对应的存储区间,在启动标志对应的存储区间中运行BMC的固件。
实施本发明实施例,用于BMC的固件更新,可以提高BMC固件更新的稳定性,在不拆机的情况下做到稳定升级BMC固件,在BMC固件更新成功后,直接运行BMC的新固件,且能在BMC固件更新失败后,启动老固件,无需进行拆机重新烧录BMC固件,从而能顺利启动操作系统,有更好的体验和更高的稳定性。
另外,本申请实施例还提供一种计算机设备,计算机设备包括处理器和存储器,存储器用于存储计算机程序,计算机程序被处理器执行时实现上述任意方法实施例中的步骤。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任意方法实施例中的步骤。
上述的一种BMC的固件更新运行系统可实施上述方法实施例的一种BMC的固件更新运行方法。上述方法实施例中的可选项也适用于本实施例,这里不再详述。本申请实施例的其余内容可参照上述方法实施例的内容,在本实施例中,不再进行赘述。
以上的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种BMC的固件更新运行方法,其特征在于,包括:
读取服务器中BMC的当前的启动标志,并根据所述当前的启动标志,确定当前运行的存储区间,得到第一存储区间;
通过预设的接收方式,接收新固件,将所述新固件存储至第二存储区间;
根据预设的校验方式,将所述新固件进行功能特性校验,若校验通过,则将所述当前的启动标志设置于所述第二存储区间;其中,所述校验方式包括循环冗余校验和哈希校验中的至少一种;若校验不通过或者接收所述新固件的过程失败,则将所述启动标志设置于所述第一存储区间;
根据所述BMC的启动标志,运行所述BMC的固件。
2.如权利要求1所述的BMC的固件更新运行方法,其特征在于,所述通过预设的接收方式,更新接收新固件,具体为:
启动所述BMC的Bootloader,初始化Flash控制器,通过所述Flash控制器读取当前的固件;
若所述当前的固件为空值,则初始化以太网控制器,通过所述以太网控制器,在网络中接收所述新固件;
若所述当前的固件不为所述空值,则初始化所述以太网控制器,通过所述以太网控制器,在网络中接收所述新固件,将所述当前的固件更新为所述新固件。
3.如权利要求1所述的BMC的固件更新运行方法,其特征在于,所述根据预设的校验方式,将所述新固件进行功能特性校验,具体为:
当所述预设的校验方式为所述循环冗余校验时,获取第一预设校验数据的全部数据字节;
初始化校验变量,并将第一个数据字节添加至所述校验变量中;
根据第一预设规则,将各所述数据字节进行校验变换操作,获得各校验数据字节,并将各所述校验数据字节添加至所述校验变量中;其中,所述校验变换操作包括移位操作和异或操作
将完成添加后的校验变量的值除以预设多项式,得到第一CRC校验码;
通过所述新固件,将所述第一CRC校验码和所述第一预设校验数据传输至第一接收方,使所述第一接收方根据所述预设多项式和所述第一预设校验数据,计算第二CRC校验码,并将所述第一CRC校验码与所述第二CRC校验码进行比较,若相等,则校验通过,若不相等,则校验不通过。
4.如权利要求1所述的BMC的固件更新运行方法,其特征在于,所述根据预设的校验方式,将所述新固件进行功能特性校验,具体为:
当所述预设的校验方式为所述哈希校验时,获取第二预设校验数据;
根据第二预设规则,将所述第二预设校验数据进行哈希计算,得到第一哈希值;
通过所述新固件,将所述第一哈希值和所述第二预设校验数据传输至第二接收方,使所述第二接收方根据所述第二预设规则,将所述第二预设校验数据进行哈希计算,得到第二哈希值,并将所述第一哈希值与所述第二哈希值进行比较,若相等,则校验通过,若不相等,则校验不通过。
5.如权利要求1所述的BMC的固件更新运行方法,其特征在于,所述根据所述BMC的启动标志,运行所述BMC的固件,具体为:
当重启运行所述BMC时,读取所述BMC的启动标志,确定读取的启动标志对应的存储区间,在所述启动标志对应的存储区间中运行所述BMC的固件。
6.如权利要求1所述的BMC的固件更新运行方法,其特征在于,在所述读取BMC的当前的启动标志之前,还包括:
将BMC固件存储介质进行存储区间的划分;
当检测到非当前版本的新固件时,响应用户更新操作指令;其中,所述用户更新操作指令根据BMC固件更新需求确定;所述BMC固件更新需求包括选择最新版本的BMC固件、选择历史某一版本的BMC固件和选择特定版本的BMC固件中的一种。
7.如权利要求6所述的BMC的固件更新运行方法,其特征在于,所述将BMC固件存储介质进行存储区间的划分,包括:
判断所述BMC固件存储介质的数量是否为1个;
若否,则将不同的存储介质对应划分为不同的存储区间;
若是,则根据所述BMC固件的大小和当前的存储介质的存储空间,将所述当前的存储介质划分为第三存储区间、第四存储区间和第五存储区间。
8.一种BMC的固件更新运行系统,其特征在于,包括:读取启动标志模块、接收新固件模块、校验模块和运行模块;
其中,所述读取启动标志模块用于读取服务器中BMC的当前的启动标志,并根据所述当前的启动标志,确定当前运行的存储区间,得到第一存储区间;
所述接收新固件模块用于通过预设的接收方式,接收新固件,将所述新固件存储至第二存储区间;
所述校验模块用于根据预设的校验方式,将所述新固件进行功能特性校验,若校验通过,则将所述当前的启动标志设置于所述第二存储区间;其中,所述校验方式包括循环冗余校验和哈希校验中的至少一种;若校验不通过或者接收所述新固件的过程失败,则将所述启动标志设置于所述第一存储区间;
所述运行模块用于根据所述BMC的启动标志,运行所述BMC的固件。
9.如权利要求8所述的BMC的固件更新运行系统,其特征在于,所述接收新固件模块包括初始化Flash单元、新固件接收单元和固件更新单元;
所述初始化Flash单元用于启动所述BMC的Bootloader,初始化Flash控制器,通过所述Flash控制器读取当前的固件;
所述新固件接收单元用于若所述当前的固件为空值,则初始化以太网控制器,通过所述以太网控制器,在网络中接收所述新固件;
所述固件更新单元用于若所述当前的固件不为所述空值,则初始化所述以太网控制器,通过所述以太网控制器,在网络中接收所述新固件,将所述当前的固件更新为所述新固件。
10.如权利要求8所述的BMC的固件更新运行系统,其特征在于,所述校验模块包括循环冗余校验单元;
所述循环冗余校验单元用于当所述预设的校验方式为所述循环冗余校验时,获取第一预设校验数据的全部数据字节;初始化校验变量,并将第一个数据字节添加至所述校验变量中;根据第一预设规则,将各所述数据字节进行校验变换操作,获得各校验数据字节,并将各所述校验数据字节添加至所述校验变量中;其中,所述校验变换操作包括移位操作和异或操作;将完成添加后的校验变量的值除以预设多项式,得到第一CRC校验码;通过所述新固件,将所述第一CRC校验码和所述第一预设校验数据传输至第一接收方,使所述第一接收方根据所述预设多项式和所述第一预设校验数据,计算第二CRC校验码,并将所述第一CRC校验码与所述第二CRC校验码进行比较,若相等,则校验通过,若不相等,则校验不通过。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311109220.3A CN116932006A (zh) | 2023-08-30 | 2023-08-30 | 一种bmc的固件更新运行方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311109220.3A CN116932006A (zh) | 2023-08-30 | 2023-08-30 | 一种bmc的固件更新运行方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116932006A true CN116932006A (zh) | 2023-10-24 |
Family
ID=88379257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311109220.3A Pending CN116932006A (zh) | 2023-08-30 | 2023-08-30 | 一种bmc的固件更新运行方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932006A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190079748A1 (en) * | 2017-09-12 | 2019-03-14 | Mitac Computing Technology Corporation | Server with double-firmware storage space and firmware update method therefor |
CN111324366A (zh) * | 2020-02-14 | 2020-06-23 | 苏州浪潮智能科技有限公司 | 一种bmc启动固件回滚方法、装置、bmc及存储介质 |
CN116301963A (zh) * | 2023-01-09 | 2023-06-23 | 上海加糖科技有限公司 | 系统固件的升级方法、装置、设备及存储介质 |
-
2023
- 2023-08-30 CN CN202311109220.3A patent/CN116932006A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190079748A1 (en) * | 2017-09-12 | 2019-03-14 | Mitac Computing Technology Corporation | Server with double-firmware storage space and firmware update method therefor |
CN111324366A (zh) * | 2020-02-14 | 2020-06-23 | 苏州浪潮智能科技有限公司 | 一种bmc启动固件回滚方法、装置、bmc及存储介质 |
CN116301963A (zh) * | 2023-01-09 | 2023-06-23 | 上海加糖科技有限公司 | 系统固件的升级方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
温子祺等: "《ARM Cortex-M4 微控制器原理与实践》", 29 February 2016, 北京航空航天大学出版社, pages: 304 - 309 * |
陈泽茂等: "《信息系统安全》", 30 April 2014, 武汉大学出版社, pages: 237 - 239 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858066B2 (en) | Updating firmware of a hardware component | |
CN101436138B (zh) | 一种用于软件升级且动态回滚的控制装置以及控制方法 | |
CN102023908B (zh) | 一种引导程序备份方法及装置 | |
US11163886B2 (en) | Information handling system firmware bit error detection and correction | |
CN101807152B (zh) | 自我验证选择只读存储器的基本输出入系统及其验证方法 | |
TWI778811B (zh) | 升級方法,電腦系統和遠端升級設備 | |
US7689981B1 (en) | Mobile handset with efficient interruption point detection during a multiple-pass update process | |
CN113157304B (zh) | 一种基于usb存储设备的服务器固件更新装置及方法 | |
CN118151977B (zh) | 控制器芯片的固件升级方法及系统 | |
CN114840242A (zh) | 一种电子设备的系统升级方法、装置及可读存储介质 | |
CN114265603A (zh) | 基于不对称分区的系统升级方法、装置和电子设备 | |
CN105677409A (zh) | 一种系统升级方法及装置 | |
JP6861739B2 (ja) | 組み込み装置及びファームウェア更新方法 | |
CN115061704A (zh) | 一种固件升级方法和电子设备 | |
CN116932006A (zh) | 一种bmc的固件更新运行方法及系统 | |
WO2021184712A1 (zh) | 一种软件升级方法及装置 | |
CN113377425B (zh) | Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 | |
TWI716969B (zh) | 經由資料塊段之復原影像下載技術 | |
CN114327535A (zh) | 一种bmc固件更新保护方法及相关组件 | |
CN112667444A (zh) | 一种系统升级方法、存储介质及终端设备 | |
CN118259949B (zh) | 电子设备固件升级方法、装置及电子设备 | |
US20240338198A1 (en) | Method of performing full firmware update procedure on embedded electronic device and related embedded electronic device | |
CN118939289A (zh) | 一种双主板升级方法、装置、设备及介质 | |
JP2004054421A (ja) | メモリ、情報処理装置、記憶方法および情報処理方法 | |
CN113064608A (zh) | 一种ota升级方法、装置、设备和介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20231024 |