CN113377425A - Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 - Google Patents

Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 Download PDF

Info

Publication number
CN113377425A
CN113377425A CN202110729478.8A CN202110729478A CN113377425A CN 113377425 A CN113377425 A CN 113377425A CN 202110729478 A CN202110729478 A CN 202110729478A CN 113377425 A CN113377425 A CN 113377425A
Authority
CN
China
Prior art keywords
partition
program
header information
abstract
partitions
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.)
Granted
Application number
CN202110729478.8A
Other languages
English (en)
Other versions
CN113377425B (zh
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.)
Nanchang Huaqin Electronic Technology Co ltd
Original Assignee
Nanchang Huaqin Electronic Technology 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 Nanchang Huaqin Electronic Technology Co ltd filed Critical Nanchang Huaqin Electronic Technology Co ltd
Priority to CN202110729478.8A priority Critical patent/CN113377425B/zh
Publication of CN113377425A publication Critical patent/CN113377425A/zh
Application granted granted Critical
Publication of CN113377425B publication Critical patent/CN113377425B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例涉及服务器技术领域,公开了一种BMC固件生成方法,在分别为多个程序模块中每个程序模块配置一个闪存内存地址以得到多个程序分区之后,还获取每个程序分区的程序分区头信息并配置闪存内存地址以形成摘要分区,摘要分区中存储有校验信息,校验信息包括对应多个程序分区的多个程序分区头信息、以及对应摘要分区的摘要分区头信息。本发明中BMC固件生成方法和装置、BMC启动方法和装置及存储介质,为BMC固件的完整性校验提供条件,可有效避免BMC固件不完整而导致内核无限重启的情况发生。

Description

BMC固件生成方法和装置、BMC启动方法和装置及存储介质
技术领域
本发明实施例涉及服务器技术领域,特别涉及一种BMC固件生成方法和装置、BMC启动方法和装置及存储介质。
背景技术
随着用户对服务器性能要求的提高,用户对服务器计算节点的需求数量也越来越多,更多的用户选择将大量的服务器集中安置在远程机房或数据中心,通过服务器监控管理模块(BMC,Baseboard Management Controller)来进行远程管理。
BMC目前已广泛应用于服务器领域,其利用虚拟的键盘、界面、鼠标、电源等为服务器提供远程管理功能。在BMC启动时需要运行uboot程序(universal boot),uboot是遵循GPL条款的开放源码项目,作用是系统引导。
现有技术中,BMC程序跑飞后需要外部看门狗进行置位重启BMC,但不是所有的问题都是重启可以解决的,这时,就需要硬件支持双Flash来实现备用Flash切换。在常规设计中,BMC需要在启动时打开看门狗,在预设定的时间内BMC启动完成后关闭看门狗。但是有一种情况看门狗还是无法避免的——BMC固件升级不完整导致内核触发的无限重启,且这种情况下,BMC是无法切换到备用Flash的,也无法在uboot下自动启动升级恢复功能。
发明内容
本发明实施方式的目的在于提供一种BMC固件生成方法和装置、BMC启动方法和装置及存储介质,为BMC固件的完整性校验提供条件,可有效避免BMC固件不完整而导致内核无限重启的情况发生。
为解决上述技术问题,本发明的实施方式提供了一种BMC固件生成方法,包括:
获取多个程序模块,所述多个程序模块包括:引导加载程序模块、内核模块、文件系统模块和应用程序模块;
分别为所述多个程序模块中每个所述程序模块配置一个闪存内存地址以得到多个程序分区,所述多个程序分区包括:引导加载程序分区、内核分区、文件系统分区、应用程序分区,每个所述程序分区还包括与所述程序分区唯一对应的程序分区头信息;
获取每个所述程序分区的所述程序分区头信息并配置闪存内存地址以形成摘要分区,所述摘要分区还包括摘要分区头信息,其中,所述摘要分区存储有校验信息,所述校验信息包括对应所述多个程序分区的多个程序分区头信息、以及对应所述摘要分区的摘要分区头信息;
根据所述多个程序分区与所述摘要分区形成所述BMC固件。
另外,在所述获取每个所述程序分区的所述程序分区头信息并配置闪存内存地址以形成摘要分区之后,且根据所述多个程序分区与所述摘要分区形成所述BMC固件之前,还包括:获取每个所述程序分区的所述程序分区头信息、以及所述摘要分区的所述摘要分区头信息;将每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述校验信息进行比对,以判断所述多个程序分区的文件和所述摘要分区的文件是否均完整;若判定所述多个程序分区的文件和所述摘要分区的文件均完整,则根据所述多个程序分区与所述摘要分区形成所述BMC固件。该方案中在生成BMC固件之前,进行完整性校验,可避免生成的BMC固件不完整。
另外,所述程序分区头信息包括:所述程序分区的版本号;所述摘要分区头信息包括:所述摘要分区的版本号;在所述将每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述校验信息进行比对,以判断所述多个程序分区以及所述摘要分区的文件是否完整之前,还包括:判断所述多个程序分区中所有所述程序分区的版本号以及所述摘要分区的版本号是否均相同;若相同,则将每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述校验信息进行比对,以判断所述多个程序分区以及所述摘要分区的文件是否完整的步骤。该方案中在进行完整性校验之前,需先确保各个分区的版本号一致,可避免生成的BMC固件中各部分的版本不一致。
本发明的实施方式还提供了一种BMC启动方法,包括:
当接收到BMC启动请求时,获取BMC固件文件,所述BMC固件文件包括多个程序分区,所述多个程序分区包括引导加载程序分区、内核分区、文件系统分区、应用程序分区以及摘要分区,所述摘要分区存储有校验信息,所述校验信息包括对应所述多个程序分区的多个程序分区头信息、以及对应所述摘要分区的摘要分区头信息;
调用所述引导加载程序分区内存储的引导加载程序,以读取所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区的摘要分区头信息;
将所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述摘要分区内存储的所述校验信息进行比对,以判断所述BMC固件文件是否完整;
若判定所述BMC固件文件完整,则调用所述内核分区的内核启动。
本发明的实施方式还提供了一种BMC固件生成装置,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的BMC固件生成方法。
另外,所述将所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述摘要分区内存储的所述校验信息进行比对,以判断所述BMC固件文件是否完整,包括:将所述BMC固件文件中所述摘要分区和所有所述程序分区的总数目与所述校验信息中的信息总数目进行比对,并比对每个所述程序分区的程序分区头信息与所述校验信息中的程序分区头信息、以及所述摘要分区的摘要分区头信息与所述校验信息中的所述摘要分区头信息;若所述BMC固件文件中所述摘要分区和所有所述程序分区的总数目与所述校验信息中的信息总数目相同,且每个所述程序分区的程序分区头信息与所述校验信息中的程序分区头信息保持一致、所述摘要分区的摘要分区头信息与所述校验信息中的所述摘要分区头信息保持一致,则判定所述BMC固件文件完整;若所述BMC固件文件中所述摘要分区和所有所述程序分区的总数目与所述校验信息中的信息总数目不同,或者,任意一个程序分区的程序分区头信息与所述校验信息中的程序分区头信息不一致,或者,所述摘要分区的摘要分区头信息与所述校验信息中的所述摘要分区头信息不一致,则判定所述BMC固件文件不完整。该方案中给出了具体如何判定BMC固件是否完整的实现方式。
另外,所述程序分区头信息包括:所述程序分区的签名;所述比对每个所述程序分区的程序分区头信息与所述校验信息中的程序分区头信息,包括:将所述每个所述程序分区的签名与所述校验信息中的对应所述程序分区的签名进行比对,若均相同,则确认每个所述程序分区的程序分区头信息与所述校验信息中的程序分区头信息保持一致;若任意一个程序分区的签名与所述校验信息中的对应所述程序分区的签名不相同,则确认任意一个程序分区的程序分区头信息与所述校验信息中的程序分区头信息不一致。该方案中给出了具体如何判定分区头信息是否一致的实现方式。
另外,所述程序分区头信息包括:所述程序分区的版本号;所述摘要分区头信息包括:所述摘要分区的版本号;在所述将所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述摘要分区内存储的所述校验信息进行比对,以判断所述BMC固件文件是否完整之前,还包括:判断所述BMC固件文件中所述多个程序分区中所有所述程序分区的版本号以及所述摘要分区的版本号是否均相同;若相同,则再执行所述将所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述摘要分区内存储的所述校验信息进行比对,以判断所述BMC固件文件是否完整的步骤。该方案中,在进行完整性校验之前,需先确保述BMC固件文件中各个分区的版本号一致,可避免BMC固件中各分区版本不一致而导致启动失败。
本发明的实施方式还提供了一种BMC启动装置,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的BMC启动方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的BMC固件生成方法,或者,上述的BMC启动方法。
本发明实施方式提供了一种BMC固件生成方法,相对于现有方案中的BMC固件生成方法本实施例中在分别为多个程序模块中每个程序模块配置一个闪存内存地址以得到多个程序分区之后,还获取每个程序分区的程序分区头信息并配置闪存内存地址以形成摘要分区,摘要分区中存储有校验信息,校验信息包括对应多个程序分区的多个程序分区头信息、以及对应摘要分区的摘要分区头信息。利用本实施例中的BMC固件生成方法所得到的BMC固件包括摘要分区,如此,可通过将程序分区的程序分区头信息和摘要分区的摘要分区头信息与摘要分区内存储的校验信息进行比对,便可确定BMC固件是否完整,从而为BMC固件的完整性校验提供条件。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式的BMC固件生成方法的流程示意图;
图2是根据本发明第一实施方式的BMC固件分区设计的数据结构示意图;
图3是根据本发明第一实施方式的BMC固件摘要分区的具体数据结构示意图;
图4是根据本发明第三实施方式的BMC启动方法的流程示意图;
图5是根据本发明第四实施方式的BMC固件生成装置的结构示意图。
图6是根据本发明第五实施方式的BMC启动装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种BMC固件生成方法,本实施方式的核心在于包括:获取多个程序模块,所述多个程序模块包括:引导加载程序模块、内核模块、文件系统模块和应用程序模块;分别为所述多个程序模块中每个所述程序模块配置一个闪存内存地址以得到多个程序分区,所述多个程序分区包括:引导加载程序分区、内核分区、文件系统分区、应用程序分区,每个所述程序分区还包括与所述程序分区唯一对应的程序分区头信息;获取每个所述程序分区的所述程序分区头信息并配置闪存内存地址以形成摘要分区,所述摘要分区还包括摘要分区头信息,其中,所述摘要分区存储有校验信息,所述校验信息包括对应所述多个程序分区的多个程序分区头信息、以及对应所述摘要分区的摘要分区头信息;根据所述多个程序分区与所述摘要分区形成所述BMC固件。
相对于现有方案中的BMC固件生成方法本实施例中在分别为多个程序模块中每个程序模块配置一个闪存内存地址以得到多个程序分区之后,还获取每个程序分区的程序分区头信息并配置闪存内存地址以形成摘要分区,摘要分区中存储有校验信息,校验信息包括对应多个程序分区的多个程序分区头信息、以及对应摘要分区的摘要分区头信息。利用本实施例中的BMC固件生成方法所得到的BMC固件包括摘要分区,如此,可通过将程序分区的程序分区头信息和摘要分区的摘要分区头信息与摘要分区内存储的校验信息进行比对,便可确定BMC固件是否完整,从而为BMC固件的完整性校验提供条件。
下面对本实施方式的BMC固件生成方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施方式中的BMC固件生成方法的流程示意图如图1所示:
步骤101:获取多个程序模块,多个程序模块包括:引导加载程序模块、内核模块、文件系统模块和应用程序模块。
具体地说,一个系统从软件角度看可以分为四个部分:引导加载程序、内核、文件系统和应用程序,因此,要生成系统的BMC固件首先需要获取这几个程序模块,其中引导加载程序模块对应引导加载程序,内核模块对应内核,文件系统模块对应文件系统,应用程序模块对应应用程序。
下面以嵌入式Linux系统为例对这四个模块进行详细说明:
引导加载程序模块Uboot对应Linux系统的引导加载程序。当系统首次引导时,或系统被重置时,处理器会执行一个位于Flash/ROM中的已知位置处的代码,Uboot就是这第一段代码。它主要用来初始化处理器及外设,然后调用Linux内核。内核模块对应Linux内核。Linux内核在完成系统的初始化之后需要挂载某个文件系统作为根文件系统(RootFile System),然后加载必要的内核模块,启动应用程序。这就是嵌入式Linux系统启动过程Linux引导的整个过程。
文件系统模块对应文件系统。文件系统是Linux系统的核心组成部分,它可以作为Linux系统中文件和数据的存储区域,通常它还包括系统配置文件和运行应用软件所需要的库。应用程序模块对应应用程序。应用程序可以说是嵌入式系统的“灵魂”,它所实现的功能通常就是设计该嵌入式系统所要达到的目标。如果没有应用程序的支持,任何硬件上设计精良的嵌入式系统都没有实用意义。
步骤102:分别为多个程序模块中每个程序模块配置一个闪存内存地址以得到多个程序分区,每个程序分区还包括与程序分区唯一对应的程序分区头信息。
具体地说,如图2所示,多个程序分区大致如下:用于存放BMC固件的闪存flash按照64MB来算,其存在1024个块block,其中,分区1为引导加载程序分区,大致在500KB以内;分区2为文件系统分区,大致为30M;分区3为内核分区,大致在5M以内;分区4为应用程序分区。其他分区例如:WEB分区、虚拟媒体分区、配置分区、版本分区等不在此赘述。需要说明的是,分区1之后的其他分区的顺序可以按照实际情况进行调整,并不以附图2中所示为限。
每个程序分区还包括与程序分区唯一对应的程序分区头信息,该程序分区头信息包括:分区类别、分区起始地址、分区大小、分区版本号、分区签名校验等信息。本实施例中程序分区头信息必需包括与程序分区唯一对应的分区签名,如此,才能够使得程序分区与程序分区头信息唯一对应。
步骤103:获取每个程序分区的程序分区头信息并配置闪存内存地址以形成摘要分区,摘要分区还包括摘要分区头信息,其中,摘要分区存储有校验信息,校验信息包括对应多个程序分区的多个程序分区头信息、以及对应摘要分区的摘要分区头信息。
具体地说,获取每个程序分区的程序分区头信息并配置闪存内存地址以形成摘要分区。分区N为摘要分区,大致为64KB。如图2所示,摘要分区采用自定义数据结构,用于存放所有程序分区的程序分区头信息,还存储自身的摘要分区头信息。其中,分区N(摘要分区)必须存放于闪存flash的最后一个块block中,这样确保分区N在升级过程中最后被擦写,从而保证保证在分区N(摘要分区)中能够被写入上述各个程序分区的程序分区头信息。
分区N(摘要分区)的具体数据结构如图3所示:分区N(摘要分区)包括头信息、数据格式版本号、总共分区数、固件文件大小、自定义区分厂商字段、数据头信息数据校验、校验信息(各分区信息)、数据签名校验等。其中,校验信息(各分区信息)包括:各个程序分区的程序分区头信息和分区N(摘要分区)的摘要分区头信息。
程序分区头信息和摘要分区头信息的数据结构均可包括:分区类别、分区起始地址、分区大小、分区版本号、分区签名校验等信息。摘要分区头信息中还包括自定义的分区编号以将多个程序分区和摘要分区进行编号。值得说明的是,本实施例中分区N(摘要分区)的校验信息(各分区信息)中的程序分区头信息必需包括与程序分区唯一对应的分区签名,如此,才能够利用该校验信息对各个程序分区进行校验,且摘要分区头信息必需包括与摘要分区唯一对应的分区签名,如此,才能够利用该校验信息对摘要分区进行校验。
本实施例中利用编译器在生成BMC固件文件时,自动收集各个程序分区的程序分区头信息,并依照上述数据结构进行存放。
步骤104:根据多个程序分区与摘要分区形成BMC固件。
具体地说,根据多个程序分区与摘要分区形成BMC固件的数据结构如图2所示。
相对于现有方案中的BMC固件生成方法,本实施例中的BMC固件生成方法在分别为多个程序模块中每个程序模块配置一个闪存内存地址以得到多个程序分区之后,还获取每个程序分区的程序分区头信息并配置闪存内存地址以形成摘要分区,摘要分区中存储有校验信息,校验信息包括对应多个程序分区的多个程序分区头信息、以及对应摘要分区的摘要分区头信息。利用本实施例中的BMC固件生成方法所得到的BMC固件包括摘要分区,如此,可通过将程序分区的程序分区头信息和摘要分区的摘要分区头信息与摘要分区内存储的校验信息进行比对,便可确定BMC固件是否完整,从而为BMC固件的完整性校验提供条件。
在一些例子中,BMC升级过程中会概率性出现写入Flash的BMC固件文件损坏现象(Flash写文件造成),若BMC固件文件损坏则会造成BMC启动失败或功能缺失。因此,可将Flash划分成两个部分,升级时将BMC固件文件重复写入两个部分,得到相同的两个BMC固件文件。若任一BMC固件文件损坏不可用,剩余的BMC固件文件还能够继续使用,能够提高固件升级的可靠性。
在另一例子中,在获取每个程序分区的程序分区头信息并配置闪存内存地址以形成摘要分区之后,且根据多个程序分区与摘要分区形成BMC固件之前,还包括:获取每个程序分区的程序分区头信息、以及摘要分区的摘要分区头信息;将每个程序分区的程序分区头信息和摘要分区头信息与校验信息进行比对,以判断多个程序分区的文件和摘要分区的文件是否均完整;若判定多个程序分区的文件和摘要分区的文件均完整,则根据多个程序分区与摘要分区形成BMC固件。
具体地说,在形成分区N(摘要分区)之后,但未形成BMC固件之前,利用分区N(摘要分区)中的校验信息(各分区信息)对多个程序分区和摘要分区分别进行校验,以确定上述各个程序分区和摘要分区的形成步骤均成功,也就是说,各个程序分区的文件和摘要分区的文件均完整,确保形成的BMC固件中必然包括所有的程序模块以及摘要模块。换句话说,本实施例中在生成BMC固件之前,利用摘要分区内的校验信息进行完整性校验,可避免生成的BMC固件不完整。具体的,当某一程序分区的的程序分区头信息中的签名与校验信息(各分区信息)中该程序分区的签名一致时,则确认该程序分区的文件完整。只有每个程序分区的文件完整,且摘要模块的文件完整才能够保证所生成的BMC固件文件完整。
可选地,程序分区头信息包括:程序分区的版本号;摘要分区头信息包括:摘要分区的版本号;在将每个程序分区的程序分区头信息和摘要分区头信息与校验信息进行比对,以判断多个程序分区以及摘要分区的文件是否完整之前,还包括:判断多个程序分区中所有程序分区的版本号以及摘要分区的版本号是否均相同;若相同,则将每个程序分区的程序分区头信息和摘要分区头信息与校验信息进行比对,以判断多个程序分区以及摘要分区的文件是否完整的步骤。
具体地说,上述例子中,在进行完整性校验之前,先判断多个程序分区中所有程序分区的版本号以及摘要分区的版本号是否均相同,在确保多个程序分区中所有程序分区的版本号以及摘要分区的版本号均相同的情况下再进行完整性校验,从而避免生成的BMC固件中各部分的版本号不一致而导致生成的BMC固件文件不完整。具体的,校验信息中还包括:程序分区的版本号和摘要分区的版本号。在确认版本号是否一致时,可获取多个程序分区中所有程序分区的版本号以及摘要分区的版本号,并获取校验信息中的版本号,当全部一致时,才能够保证所生成的BMC固件文件完整。
与相关技术相比,本发明实施方式中提供的BMC固件生成方法存在以下优势:
(1)方案设计基于模块化,通用性比较好,可以适用于多种BMC平台方案。
(2)自定义摘要分区的数据结构,既可以支持BMC启动时进行完整性校验,也可以在编译过程中、自动部署时加入完整性校验机制,充分确保BMC固件刷写的可靠性。本发明的BMC固件的分区设计能有效解决编译、发布、刷写、启动阶段的BMC固件文件完整性校验问题。
本发明的第二实施方式涉及一种BMC启动方法,本实施方式中的BMC启动方法的流程示意图如图4所示,具体包括:
步骤201:当接收到BMC启动请求时,获取BMC固件文件,BMC固件文件包括多个程序分区和摘要分区,摘要分区存储有校验信息,校验信息包括对应多个程序分区的多个程序分区头信息、以及对应摘要分区的摘要分区头信息。
具体地说,本实施例中BMC固件文件为利用上述BMC固件生成方法所得到的。因此,BMC固件文件的数据结构可参考附图2和附图3,本实施例中不再赘述。
步骤202:调用引导加载程序分区内存储的引导加载程序,以读取BMC固件文件中每个程序分区的程序分区头信息和摘要分区的摘要分区头信息。
步骤203:将BMC固件文件中每个程序分区的程序分区头信息和摘要分区头信息与摘要分区内存储的校验信息进行比对,以判断BMC固件文件是否完整。若判定为是,则进入步骤204;若判定为否,则进入步骤205。
步骤204:调用内核分区的内核启动。
步骤205:切换至备用闪存地址,利用备用闪存地址的备份BMC固件文件重新启动。
针对上述步骤202和步骤206具体地说,引导加载程序Uboot在启动时,会读取每个程序分区的程序分区头信息、摘要分区的摘要分区头信息,也就是说,读取分区1至分区N的头信息。并将各个程序分区的程序头信息(主要是签名校验)和摘要分区头信息与分区N(摘要分区)内校验信息进行比对、以判断BMC固件文件是否完整。
当BMC固件文件完整时,Uboot会正常往下启动,跳转到内核继续启动;当BMC固件文件不完整时,Uboot会调用看门狗等方式切换至备用闪存flash,利用备用闪存地址的备份BMC固件文件重新启动。
可选地,将BMC固件文件中每个程序分区的程序分区头信息和摘要分区头信息与摘要分区内存储的校验信息进行比对,以判断BMC固件文件是否完整,包括:将BMC固件文件中摘要分区和所有程序分区的总数目与校验信息中的信息总数目进行比对,并比对每个程序分区的程序分区头信息与校验信息中的程序分区头信息、以及摘要分区的摘要分区头信息与校验信息中的摘要分区头信息。
若BMC固件文件中摘要分区和所有程序分区的总数目与校验信息中的信息总数目相同,且每个程序分区的程序分区头信息与校验信息中的程序分区头信息保持一致、摘要分区的摘要分区头信息与校验信息中的摘要分区头信息保持一致,则判定BMC固件文件完整。
若BMC固件文件中摘要分区和所有程序分区的总数目与校验信息中的信息总数目不同,或者,任意一个程序分区的程序分区头信息与校验信息中的程序分区头信息不一致,或者,摘要分区的摘要分区头信息与校验信息中的摘要分区头信息不一致,则判定BMC固件文件不完整。
具体地说,本实施例中首先判定BMC固件文件中摘要分区和所有程序分区的总数目与校验信息中的信息总数目是否相同,若总数目首先都不相同,则可直接判定BMC固件文件不完整,无需执行其他步骤。
当判定BMC固件文件中摘要分区和所有程序分区的总数目与校验信息中的信息总数目相同时,还需执行头信息校验步骤,具体如下:
(1)若BMC固件文件不完整(例如由BMC发生升级终端导致),且位置处于分区N(摘要分区)前任意一块位置,分区N(摘要分区)校验信息中存储的所有程序分区的头信息肯定保持原有数据,与BMC固件文件中一部分程序分区的头信息不一致。也就是说,若任意一个程序分区的程序分区头信息与校验信息中的程序分区头信息不一致,可判定BMC固件文件不完整。
(2)若BMC固件文件不完整(例如由BMC发生升级终端导致),且位置处于分区N(摘要分区),虽然该摘要分区升级失败机率为0.098%。此时,所有程序分区中的头信息与校验信息中存储的程序分区头信息一致,如果摘要分区的头信息与校验信息中存储的摘要分区头信息仍然保持一致时,此时若摘要分区中校验信息升级成功,即使摘要分区中其他信息(例如附图3所示的自定义分区厂商字段、固件文件大小等)未升级成功,由于分区N(摘要分区)仅起到校验作用,不会对其他功能造成影响,因此,可确定此时BMC固件文件完整。也就是说,若摘要分区的摘要分区头信息与校验信息中的摘要分区头信息不一致,则判定BMC固件文件不完整。只有BMC固件文件中摘要分区和所有程序分区的总数目与校验信息中的信息总数目相同,且在每个程序分区的程序分区头信息与校验信息中的程序分区头信息保持一致、摘要分区的摘要分区头信息与校验信息中的摘要分区头信息保持一致,才能够判定BMC固件文件完整。
可选地,程序分区头信息包括:程序分区的签名;比对每个程序分区的程序分区头信息与校验信息中的程序分区头信息,包括:将每个程序分区的签名与校验信息中的对应程序分区的签名进行比对,若均相同,则确认每个程序分区的程序分区头信息与校验信息中的程序分区头信息保持一致;若任意一个程序分区的签名与校验信息中的对应程序分区的签名不相同,则确认任意一个程序分区的程序分区头信息与校验信息中的程序分区头信息不一致。
具体地说,本实施例中可通过比对程序分区头信息的签名和校验信息、来判定每个程序分区的签名与校验信息中的对应程序分区的签名是否一致。相应地,摘要分区头信息包括摘要分区的签名,可通过比对摘要分区头信息的签名和校验信息、来判定摘要分区的摘要分区头信息与校验信息中的摘要分区头信息是否保持一致。
进一步地,程序分区头信息包括:程序分区的版本号;摘要分区头信息包括:摘要分区的版本号;在将BMC固件文件中每个程序分区的程序分区头信息和摘要分区头信息与摘要分区内存储的校验信息进行比对,以判断BMC固件文件是否完整之前,还包括:判断BMC固件文件中多个程序分区中所有程序分区的版本号以及摘要分区的版本号是否均相同;若相同,则再执行将BMC固件文件中每个程序分区的程序分区头信息和摘要分区头信息与摘要分区内存储的校验信息进行比对,以判断BMC固件文件是否完整的步骤。
具体地说,上述例子中,在进行完整性校验之前,先判断多个程序分区中所有程序分区的版本号以及摘要分区的版本号是否均相同,在确保多个程序分区中所有程序分区的版本号以及摘要分区的版本号均相同的情况下再进行完整性校验,从而避免BMC固件文件中摘要分区和各程序分区的版本不一致而导致无线重启。具体的,校验信息中还包括:程序分区的版本号和摘要分区的版本号。在确认版本号是否一致时,可获取多个程序分区中所有程序分区的版本号以及摘要分区的版本号,并获取校验信息中的版本号,当全部一致时,才能够保证BMC固件文件完整。
与相关技术相比,本发明实施方式中提供的BMC启动方法存在以下优势:
(1)横向与纵向结合的双重校验机制,单个分区的信息一致性检查与所有分区版本号一致性检查,以共同保证BMC固件文件完整。解决了BMC固件升级不完整导致的内核触发的无限重启的问题,使得双flash以及其他恢复机制能正常运行。
(2)BMC仅需检查各分区的关键属性的完整性及匹配性,方案简单有效,不会因为增加过多复杂处理而导致BMC正常启动慢、系统启动慢的情况发生。固件文件完整性校验方法相对精简、可靠,不会影响BMC启动时间。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明三实施方式涉及一种BMC固件生成装置,如图5所示,包括至少一个处理器301;以及,与至少一个处理器301通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够执行上述的BMC固件生成方法。
其中,存储器302和处理器301采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器301和存储器302的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器301处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器301。
处理器301负责管理总线和通常的处理,还可以提供各种功能,包括定时、外围接口、电压调节、电源管理以及其他控制功能。而存储器302可以被用于存储处理器301在执行操作时所使用的数据。
本发明四实施方式涉及一种BMC启动装置,如图6所示,包括至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述的BMC启动方法。
其中,存储器402和处理器401采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器401和存储器402的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器401处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器401。
处理器401负责管理总线和通常的处理,还可以提供各种功能,包括定时、外围接口、电压调节、电源管理以及其他控制功能。而存储器402可以被用于存储处理器401在执行操作时所使用的数据。
上述BMC固件生成装置和上述BMC启动装置均可为服务器。
本发明的第五实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述BMC启动方法或BMC固件生成方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (10)

1.一种BMC固件生成方法,其特征在于,包括:
获取多个程序模块,所述多个程序模块包括:引导加载程序模块、内核模块、文件系统模块和应用程序模块;
分别为所述多个程序模块中每个所述程序模块配置一个闪存内存地址以得到多个程序分区,所述多个程序分区包括:引导加载程序分区、内核分区、文件系统分区、应用程序分区,每个所述程序分区还包括与所述程序分区唯一对应的程序分区头信息;
获取每个所述程序分区的所述程序分区头信息并配置闪存内存地址以形成摘要分区,所述摘要分区还包括摘要分区头信息,其中,所述摘要分区存储有校验信息,所述校验信息包括对应所述多个程序分区的多个程序分区头信息、以及对应所述摘要分区的摘要分区头信息;
根据所述多个程序分区与所述摘要分区形成所述BMC固件。
2.根据权利要求1所述的BMC固件生成方法,其特征在于,在所述获取每个所述程序分区的所述程序分区头信息并配置闪存内存地址以形成摘要分区之后,且根据所述多个程序分区与所述摘要分区形成所述BMC固件之前,还包括:
获取每个所述程序分区的所述程序分区头信息、以及所述摘要分区的所述摘要分区头信息;
将每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述校验信息进行比对,以判断所述多个程序分区的文件和所述摘要分区的文件是否均完整;
若判定所述多个程序分区的文件和所述摘要分区的文件均完整,则根据所述多个程序分区与所述摘要分区形成所述BMC固件。
3.根据权利要求2所述的BMC固件生成方法,其特征在于,所述程序分区头信息包括:所述程序分区的版本号;所述摘要分区头信息包括:所述摘要分区的版本号;
在所述将每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述校验信息进行比对,以判断所述多个程序分区以及所述摘要分区的文件是否完整之前,还包括:
判断所述多个程序分区中所有所述程序分区的版本号以及所述摘要分区的版本号是否均相同;
若相同,则将每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述校验信息进行比对,以判断所述多个程序分区以及所述摘要分区的文件是否完整的步骤。
4.一种BMC启动方法,其特征在于,包括:
当接收到BMC启动请求时,获取BMC固件文件,所述BMC固件文件包括多个程序分区和摘要分区,所述多个程序分区包括引导加载程序分区、内核分区、文件系统分区、应用程序分区,所述摘要分区存储有校验信息,所述校验信息包括对应所述多个程序分区的多个程序分区头信息、以及对应所述摘要分区的摘要分区头信息;
调用所述引导加载程序分区内存储的引导加载程序,以读取所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区的摘要分区头信息;
将所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述摘要分区内存储的所述校验信息进行比对,以判断所述BMC固件文件是否完整;
若判定所述BMC固件文件完整,则调用所述内核分区的内核启动。
5.根据权利要求4所述的BMC启动方法,其特征在于,所述将所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述摘要分区内存储的所述校验信息进行比对,以判断所述BMC固件文件是否完整,包括:
将所述BMC固件文件中所述摘要分区和所有所述程序分区的总数目与所述校验信息中的信息总数目进行比对,并比对每个所述程序分区的程序分区头信息与所述校验信息中的程序分区头信息、以及所述摘要分区的摘要分区头信息与所述校验信息中的所述摘要分区头信息;
若所述BMC固件文件中所述摘要分区和所有所述程序分区的总数目与所述校验信息中的信息总数目相同,且每个所述程序分区的程序分区头信息与所述校验信息中的程序分区头信息保持一致、所述摘要分区的摘要分区头信息与所述校验信息中的所述摘要分区头信息保持一致,则判定所述BMC固件文件完整;
若所述BMC固件文件中所述摘要分区和所有所述程序分区的总数目与所述校验信息中的信息总数目不同,或者,任意一个程序分区的程序分区头信息与所述校验信息中的程序分区头信息不一致,或者,所述摘要分区的摘要分区头信息与所述校验信息中的所述摘要分区头信息不一致,则判定所述BMC固件文件不完整。
6.根据权利要求5所述的BMC启动方法,其特征在于,所述程序分区头信息包括:所述程序分区的签名;
所述比对每个所述程序分区的程序分区头信息与所述校验信息中的程序分区头信息,包括:
将所述每个所述程序分区的签名与所述校验信息中的对应所述程序分区的签名进行比对,若均相同,则确认每个所述程序分区的程序分区头信息与所述校验信息中的程序分区头信息保持一致;若任意一个程序分区的签名与所述校验信息中的对应所述程序分区的签名不相同,则确认任意一个程序分区的程序分区头信息与所述校验信息中的程序分区头信息不一致。
7.根据权利要求4所述的BMC启动方法,其特征在于,所述程序分区头信息包括:所述程序分区的版本号;所述摘要分区头信息包括:所述摘要分区的版本号;
在所述将所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述摘要分区内存储的所述校验信息进行比对,以判断所述BMC固件文件是否完整之前,还包括:
判断所述BMC固件文件中所述多个程序分区中所有所述程序分区的版本号以及所述摘要分区的版本号是否均相同;
若相同,则再执行所述将所述BMC固件文件中每个所述程序分区的所述程序分区头信息和所述摘要分区头信息与所述摘要分区内存储的所述校验信息进行比对,以判断所述BMC固件文件是否完整的步骤。
8.一种BMC固件生成装置,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至3中任一所述的BMC固件生成方法。
9.一种BMC启动装置,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求4至7中任一所述的BMC启动方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3中任一所述的BMC固件生成方法,或者,如权利要求4至7中任一所述的BMC启动方法。
CN202110729478.8A 2021-06-29 2021-06-29 Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 Active CN113377425B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110729478.8A CN113377425B (zh) 2021-06-29 2021-06-29 Bmc固件生成方法和装置、bmc启动方法和装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110729478.8A CN113377425B (zh) 2021-06-29 2021-06-29 Bmc固件生成方法和装置、bmc启动方法和装置及存储介质

Publications (2)

Publication Number Publication Date
CN113377425A true CN113377425A (zh) 2021-09-10
CN113377425B CN113377425B (zh) 2023-05-30

Family

ID=77579883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110729478.8A Active CN113377425B (zh) 2021-06-29 2021-06-29 Bmc固件生成方法和装置、bmc启动方法和装置及存储介质

Country Status (1)

Country Link
CN (1) CN113377425B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114047958A (zh) * 2021-10-31 2022-02-15 山东云海国创云计算装备产业创新中心有限公司 一种服务器的基板管理控制器的启动方法、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140317612A1 (en) * 2013-04-17 2014-10-23 American Megatrends, Inc. Method of fail safe flashing management device and application of the same
CN106909362A (zh) * 2015-12-23 2017-06-30 研祥智能科技股份有限公司 Bmc固件生成的方法和装置、bmc系统启动的方法和装置
CN109446815A (zh) * 2018-09-30 2019-03-08 华为技术有限公司 基本输入输出系统固件的管理方法、装置和服务器
CN110909394A (zh) * 2019-11-24 2020-03-24 苏州浪潮智能科技有限公司 一种服务器的配置文件监测方法
CN110968477A (zh) * 2019-11-15 2020-04-07 苏州浪潮智能科技有限公司 一种获取备用bmc版本信息的方法、设备及介质
CN110990045A (zh) * 2019-12-20 2020-04-10 苏州浪潮智能科技有限公司 一种双bmc flash升级方法和设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140317612A1 (en) * 2013-04-17 2014-10-23 American Megatrends, Inc. Method of fail safe flashing management device and application of the same
CN106909362A (zh) * 2015-12-23 2017-06-30 研祥智能科技股份有限公司 Bmc固件生成的方法和装置、bmc系统启动的方法和装置
CN109446815A (zh) * 2018-09-30 2019-03-08 华为技术有限公司 基本输入输出系统固件的管理方法、装置和服务器
CN110968477A (zh) * 2019-11-15 2020-04-07 苏州浪潮智能科技有限公司 一种获取备用bmc版本信息的方法、设备及介质
CN110909394A (zh) * 2019-11-24 2020-03-24 苏州浪潮智能科技有限公司 一种服务器的配置文件监测方法
CN110990045A (zh) * 2019-12-20 2020-04-10 苏州浪潮智能科技有限公司 一种双bmc flash升级方法和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
毛亮;叶德建;: "嵌入式Linux下的闪存自动分区与更新系统", 计算机应用与软件 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114047958A (zh) * 2021-10-31 2022-02-15 山东云海国创云计算装备产业创新中心有限公司 一种服务器的基板管理控制器的启动方法、设备及介质
CN114047958B (zh) * 2021-10-31 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种服务器的基板管理控制器的启动方法、设备及介质

Also Published As

Publication number Publication date
CN113377425B (zh) 2023-05-30

Similar Documents

Publication Publication Date Title
US6553490B1 (en) Computer system including local computer with capability to automatically update operating system or application program from network server
US11314665B2 (en) Information processing system, information processing device, BIOS updating method for information processing device, and BIOS updating program for information processing device
US20060036832A1 (en) Virtual computer system and firmware updating method in virtual computer system
KR20170040734A (ko) 업데이트 제어 방법을 갖는 전자 시스템 및 그것의 동작 방법
CN111651304B (zh) 基于双芯智能电表的软件恢复方法、装置和计算机设备
CN110780942A (zh) 系统启动方法、装置、节点设备及计算机可读存储介质
CN109634781A (zh) 一种基于嵌入式程序双区备份映像系统及启动方法
CN113934471A (zh) 计算机系统的基板管理控制器和启动方法
CN112433769A (zh) 一种bmc启动方法、装置、计算机设备及存储介质
CN115454469A (zh) 镜像更新方法、装置、芯片、电子设备及存储介质
CN113377425B (zh) Bmc固件生成方法和装置、bmc启动方法和装置及存储介质
CN117130672A (zh) 服务器启动流程控制方法、系统、终端及存储介质
CN116755749A (zh) 板载mcu的升级方法、板载mcu、板卡及信息处理系统
CN115658152A (zh) 固件升级方法、固件、电子设备和计算机可读存储介质
US11586504B2 (en) Electronic apparatus and boot method thereof
CN112817642A (zh) X86平台使用固件自动切换启动efi操作系统的方法、装置
CN112667444A (zh) 一种系统升级方法、存储介质及终端设备
CN112148531A (zh) 一种双核芯片及其程序备份和恢复的方法
US20210326125A1 (en) Installing application program code on a vehicle control system
CN111176902A (zh) 一种使用BMC Flash备份Controller Device韧体的装置和方法
TWI777664B (zh) 嵌入式系統的開機方法
CN117687663B (zh) 基于ota的分区动态调整方法、装置、设备及存储介质
CN213751050U (zh) 一种双核芯片
CN116661818A (zh) 一种bmc软件系统的升级方法、装置及存储介质
CN114327535A (zh) 一种bmc固件更新保护方法及相关组件

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