程序启动方法、装置、服务器及非易失性存储介质转让专利

申请号 : CN202310617100.8

文献号 : CN116340957B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 叶笑夕王兴隆

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请实施例提供了一种程序启动方法、装置、服务器及非易失性存储介质,其中,该方法包括:基板管理控制器向处理器发送启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于确定目标程序的启动过程中是否存在故障;在确定启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程。通过本申请,解决了相关技术中BIOS程序的启动过程独立运行导致在BIOS程序启动故障时无法快速准确定位发生故障的具体阶段的问题,达到在BIOS程序启动故障时快速定位故障阶段的效果。

权利要求 :

1.一种程序启动方法,其特征在于,包括:

基板管理控制器向处理器发送启动指示信息,其中,所述基板管理控制器中存储有目标程序的镜像文件,所述启动指示信息用于指示所述处理器依据所述镜像文件启动所述目标程序,基板管理控制器向处理器发送启动指示信息包括:确定目标开关的开关状态,其中,所述开关状态包括第一状态和第二状态,所述第一状态用于指示由所述基板管理控制器和所述处理器共同完成所述目标程序的启动过程,所述第二状态用于指示由所述处理器单独完成所述目标程序的启动过程;依据所述开关状态向所述处理器发送所述启动指示信息,依据所述开关状态向所述处理器发送所述启动指示信息包括:在确定所述开关状态为所述第一状态的情况下,所述基板管理控制器向所述处理器发送所述启动指示信息;在确定所述开关状态为所述第二状态的情况下,不向所述处理器发送所述启动指示信息;

在所述处理器启动所述目标程序的启动过程中,接收所述处理器发送的第一验证信息,其中,所述第一验证信息用于确定所述目标程序的启动过程中是否存在故障;

在确定所述启动过程中不存在故障的情况下,发送所述镜像文件到所述处理器,直到所述处理器完成所述启动过程。

2.根据权利要求1所述的程序启动方法,其特征在于,所述启动过程包括多个启动阶段,所述第一验证信息为所述处理器完成第一启动阶段后生成的验证信息,所述第一启动阶段为所述多个启动阶段中除最后一个启动阶段外的任意启动阶段,并且不同的启动阶段对应的所述第一验证信息不同。

3.根据权利要求2所述的程序启动方法,其特征在于,接收所述处理器发送的第一验证信息后,所述程序启动方法还包括:确定与所述第一启动阶段对应的第二验证信息,其中,所述第二验证信息为预存储在所述基板管理控制器中的验证信息;

比较所述第一验证信息和所述第二验证信息,并在所述第一验证信息和所述第二验证信息一致的情况下,确定所述第一启动阶段无故障。

4.根据权利要求3所述的程序启动方法,其特征在于,发送所述镜像文件到所述处理器包括:在确定所述第一启动阶段无故障后,向所述处理器发送第二启动阶段对应的镜像文件,其中,所述第二启动阶段为所述多个启动阶段中启动顺序在所述第一启动阶段之后并且与所述第一启动阶段相邻的启动阶段。

5.根据权利要求3所述的程序启动方法,其特征在于,在确定所述第一启动阶段无故障后,所述程序启动方法还包括:生成与所述第一启动阶段对应的第一日志文件,其中,所述第一日志文件用于记载所述第一启动阶段启动成功。

6.根据权利要求3所述的程序启动方法,其特征在于,比较所述第一验证信息和所述第二验证信息之后,所述程序启动方法还包括:在所述第一验证信息与所述第二验证信息不一致的情况下,确定所述第一启动阶段启动失败;

生成与所述第一启动阶段对应的第二日志文件,其中,所述第二日志文件用于记载所述第一启动阶段的标识信息,以及所述第一启动阶段对应的第一验证信息和第二验证信息;

发送所述第二日志文件至目标设备,其中,所述目标设备用于确定所述目标程序是否启动成功。

7.根据权利要求1所述的程序启动方法,其特征在于,依据所述开关状态向所述处理器发送所述启动指示信息后,所述程序启动方法还包括:在确定所述开关状态为所述第二状态的情况下,在所述处理器独立完成所述目标程序的启动过程的情况下,接收所述处理器发送的所述第一验证信息;

依据所述第一验证信息生成第三日志文件,其中,所述第三日志文件用于记载所述启动过程的过程信息。

8.根据权利要求1所述的程序启动方法,其特征在于,基板管理控制器向处理器发送启动指示信息前,所述程序启动方法还包括:获取所述目标程序的镜像文件;

获取第二验证信息,以及所述第二验证信息和启动阶段的对应关系,并将所述第二验证信息存储到所述镜像文件的预设字节位中。

9.一种程序启动方法,其特征在于,包括:

确定目标开关的开关状态,其中,所述开关状态包括第一状态和第二状态,所述第一状态用于指示由基板管理控制器和处理器共同完成目标程序的启动过程,所述第二状态用于指示由所述处理器单独完成所述目标程序的启动过程;

在确定所述开关状态为所述第一状态的情况下,处理器接收所述基板管理控制器发送的启动指示信息,其中,所述基板管理控制器中存储有目标程序的镜像文件,所述启动指示信息用于指示所述处理器依据所述镜像文件启动所述目标程序;在确定所述开关状态为所述第二状态的情况下,直接执行所述目标程序的启动过程;

在所述开关状态为所述第一状态的情况下,在所述处理器启动所述目标程序的启动过程中,向所述基板管理控制器发送第一验证信息,其中,所述第一验证信息用于指示所述目标程序的启动过程中是否存在故障;

接收所述基板管理控制器依据所述第一验证信息确定所述启动过程不存在故障时发送的所述镜像文件,并依据所述镜像文件完成所述启动过程。

10.根据权利要求9所述的程序启动方法,其特征在于,所述启动过程包括多个启动阶段,所述第一验证信息为所述处理器完成第一启动阶段后生成的验证信息,所述第一启动阶段为所述多个启动阶段中除最后一个启动阶段外的任意启动阶段,并且不同的启动阶段对应的所述第一验证信息不同。

11.根据权利要求10所述的程序启动方法,其特征在于,所述基板管理控制器中存储有与所述第一启动阶段对应的第二验证信息,并在所述第一验证信息与所述第二验证信息一致的情况下,确定所述第一启动阶段无故障。

12.根据权利要求10所述的程序启动方法,其特征在于,直接执行所述目标程序的启动过程包括:在完成任意一个所述启动阶段后,向所述基板管理控制器发送所述第一验证信息,并继续执行所述启动过程,直到完成全部所述启动阶段。

13.一种服务器,其特征在于,包括基板管理控制器,处理器,目标开关,其中,所述基板管理控制器,用于存储目标程序的镜像文件;

所述处理器,用于完成所述目标程序的启动过程;

所述目标开关的开关状态包括第一状态和第二状态,所述第一状态用于指示由所述基板管理控制器和所述处理器共同完成所述目标程序的启动过程,所述第二状态用于指示由所述处理器单独完成所述目标程序的启动过程;

所述基板管理控制器,还用于在所述开关状态为第一状态的情况下,向所述处理器发送启动指示信息,其中,所述启动指示信息用于指示所述处理器依据所述镜像文件启动所述目标程序;在所述处理器启动所述目标程序的启动过程中,接收所述处理器发送的第一验证信息,其中,所述第一验证信息用于指示所述目标程序的启动过程中是否存在故障;在依据所述第一验证信息确定所述目标程序的启动过程中不存在故障的情况下,发送所述镜像文件到所述处理器,直到所述处理器完成所述启动过程。

14.根据权利要求13所提供的服务器,其特征在于,在所述开关状态为第二状态的情况下,所述处理器独立完成所述目标程序的启动过程,并在所述启动过程中向所述基板管理控制器发送所述第一验证信息;

所述基板管理控制器,用于依据所述第一验证信息生成用于记载所述启动过程的过程信息的日志文件。

15.根据权利要求14所提供的服务器,其特征在于,所述基板管理控制器中包括存储模块,所述存储模块用于存储所述目标程序的镜像文件,以及在所述目标程序的镜像文件的预设字节位中存储第二验证信息,其中,所述第二验证信息用于与所述第一验证信息共同指示所述启动过程是否存在故障。

16.根据权利要求15所提供的服务器,其特征在于,在所述开关状态为第一状态的情况下,所述基板管理控制器还用于依据所述第一验证信息和所述第二验证信息生成用于记载所述启动过程是否故障的日志文件。

17.根据权利要求13所提供的服务器,其特征在于,所述服务器中还包括警报装置,其中,所述警报装置,与所述基板管理控制器连接,在所述基板管理控制器确定所述目标程序的启动过程中存在故障后,所述警报装置用于在所述目标程序的控制下生成警报信息。

18.根据权利要求13所提供的服务器,其特征在于,所述基板管理控制器和所述处理器之间通过有线通信链路连接。

19.一种程序启动装置,适用于基板管理控制器中,其特征在于,包括:

第一处理模块,用于向处理器发送启动指示信息,其中,所述基板管理控制器中存储有目标程序的镜像文件,所述启动指示信息用于指示所述处理器依据所述镜像文件启动所述目标程序,基板管理控制器向处理器发送启动指示信息包括:确定目标开关的开关状态,其中,所述开关状态包括第一状态和第二状态,所述第一状态用于指示由所述基板管理控制器和所述处理器共同完成所述目标程序的启动过程,所述第二状态用于指示由所述处理器单独完成所述目标程序的启动过程;依据所述开关状态向所述处理器发送所述启动指示信息,依据所述开关状态向所述处理器发送所述启动指示信息包括:在确定所述开关状态为所述第一状态的情况下,所述基板管理控制器向所述处理器发送所述启动指示信息;在确定所述开关状态为所述第二状态的情况下,不向所述处理器发送所述启动指示信息;

第二处理模块,用于在所述处理器执行所述目标程序的启动过程中,接收所述处理器发送的第一验证信息,其中,所述第一验证信息用于确定所述目标程序的启动过程中是否存在故障;

第三处理模块,用于在确定所述启动过程中不存在故障的情况下,发送所述镜像文件到所述处理器,直到所述处理器完成所述启动过程。

20.一种非易失性存储介质,其特征在于,所述非易失性存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至8任一项中所述的方法的步骤,或者实现权利要求9‑12任一项中所述的方法的步骤。

21.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至

8任一项中所述的方法的步骤,或者实现权利要求9‑12任一项中所述的方法的步骤。

说明书 :

程序启动方法、装置、服务器及非易失性存储介质

技术领域

[0001] 本申请实施例涉及计算机领域,具体而言,涉及一种程序启动方法、装置、服务器及非易失性存储介质。

背景技术

[0002] 在相关技术中,BIOS程序的启动过程通常只需要standby电压即可启动,并且在启动过程中,其他设备无法监控到BIOS程序的启动过程中是否存在异常,导致在BIOS启动失败时,无法快速准确确定BIOS具体是在哪一步发生故障导致启动失败。

发明内容

[0003] 本申请实施例提供了一种程序启动方法、装置、服务器及非易失性存储介质,以至少解决相关技术中BIOS程序的启动过程独立运行导致在BIOS程序启动故障时无法快速准确定位发生故障的具体阶段的问题。
[0004] 根据本申请的一个实施例,提供了一种程序启动方法,包括:基板管理控制器向处理器发送启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于确定目标程序的启动过程中是否存在故障;在确定启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程。
[0005] 在一些示例性实施例中,启动过程包括多个启动阶段,第一验证信息为处理器完成第一启动阶段后生成的验证信息,第一启动阶段为多个启动阶段中除最后一个启动阶段外的任意启动阶段,并且不同的启动阶段对应的第一验证信息不同。
[0006] 在一些示例性实施例中,接收处理器发送的第一验证信息后,程序启动方法还包括:确定与第一启动阶段对应的第二验证信息,其中,第二验证信息为预存储在基板管理控制器中的验证信息;比较第一验证信息和第二验证信息,并在第一验证信息和第二验证信息一致的情况下,确定第一启动阶段无故障。
[0007] 在一些示例性实施例中,发送镜像文件到处理器包括:在确定第一启动阶段无故障后,向处理器发送第二启动阶段对应的镜像文件,其中,第二启动阶段为多个启动阶段中启动顺序在第一启动阶段之后并且与第一启动阶段相邻的启动阶段。
[0008] 在一些示例性实施例中,在确定第一启动阶段无故障后,程序启动方法还包括:生成与第一启动阶段对应的第一日志文件,其中,第一日志文件用于记载第一启动阶段启动成功。
[0009] 在一些示例性实施例中,比较第一验证信息和第二验证信息之后,程序启动方法还包括:在第一验证信息与第二验证信息不一致的情况下,确定第一启动阶段启动失败;生成与第一启动阶段对应的第二日志文件,其中,第二日志文件用于记载第一启动阶段的标识信息,以及第一启动阶段对应的第一验证信息和第二验证信息;发送第二日志文件至目标设备,其中,目标设备用于确定目标程序是否启动成功。
[0010] 在一些示例性实施例中,基板管理控制器向处理器发送启动指示信息包括:确定目标开关的开关状态,其中,开关状态包括第一状态和第二状态,第一状态用于指示由基板管理控制器和处理器共同完成目标程序的启动过程,第二状态用于指示由处理器单独完成目标程序的启动过程;依据开关状态向处理器发送启动指示信息。
[0011] 在一些示例性实施例中,依据开关状态向处理器发送启动指示信息包括:在确定开关状态为第一状态的情况下,基板管理控制器向处理器发送启动指示信息;在确定开关状态为第二状态的情况下,不向处理器发送启动指示信息,并在处理器独立完成目标程序的启动过程的情况下,接收处理器发送的第一验证信息;依据第一验证信息生成第三日志文件,其中,第三日志文件用于记载启动过程的过程信息。
[0012] 在一些示例性实施例中,基板管理控制器向处理器发送启动指示信息前,程序启动方法还包括:获取目标程序的镜像文件;获取第二验证信息,以及第二验证信息和启动阶段的对应关系,并将第二验证信息存储到镜像文件的预设字节位中。
[0013] 根据本申请的另一个实施例,提供了一种程序启动方法,包括:处理器接收基板管理控制器发送的启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,向基板管理控制器发送第一验证信息,其中,第一验证信息用于指示目标程序的启动过程中是否存在故障;接收基板管理控制器依据第一验证信息发送的镜像文件,并依据镜像文件完成启动过程。
[0014] 在一些示例性实施例中,启动过程包括多个启动阶段,第一验证信息为处理器完成第一启动阶段后生成的验证信息,第一启动阶段为多个启动阶段中除最后一个启动阶段外的任意启动阶段,并且不同的启动阶段对应的第一验证信息不同。
[0015] 在一些示例性实施例中,基板管理控制器中存储有与第一启动阶段对应的第二验证信息,并在第一验证信息与第二验证信息一致的情况下,确定第一启动阶段无故障。
[0016] 在一些示例性实施例中,处理器接收基板管理控制器发送的启动指示信息前,程序启动方法还包括:确定目标开关的开关状态,其中,开关状态包括第一状态和第二状态,第一状态用于指示由基板管理控制器和处理器共同完成目标程序的启动过程,第二状态用于指示由处理器单独完成目标程序的启动过程;在确定开关状态为第一状态的情况下,接收基板管理控制器发送的启动指示信息;在确定开关状态为第二状态的情况下,直接执行目标程序的启动过程。
[0017] 在一些示例性实施例中,直接执行目标程序的启动过程包括:在完成任意一个启动阶段后,向基板管理控制器发送第一验证信息,并继续执行启动过程,直到完成全部启动阶段。
[0018] 根据本申请的又一个实施例,提供了一种服务器,包括:基板管理控制器,处理器,目标开关,其中,基板管理控制器,用于存储目标程序的镜像文件;处理器,用于完成目标程序的启动过程;目标开关的开关状态包括第一状态和第二状态,第一状态用于指示由基板管理控制器和处理器共同完成目标程序的启动过程,第二状态用于指示由处理器单独完成目标程序的启动过程;基板管理控制器,还用于在开关状态为第一状态的情况下,向处理器发送启动指示信息,其中,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于指示目标程序的启动过程中是否存在故障;在依据第一验证信息确定目标程序的启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程。
[0019] 在一些示例性实施例中,在开关状态为第二状态的情况下,处理器独立完成目标程序的启动过程,并在启动过程中向基板管理控制器发送第一验证信息;基板管理控制器,用于依据第一验证信息生成用于记载启动过程的过程信息的日志文件。
[0020] 在一些示例性实施例中,基板管理控制器中包括存储模块,存储模块用于存储目标程序的镜像文件,以及在目标程序的镜像文件的预设字节位中存储第二验证信息,其中,第二验证信息用于与第一验证信息共同指示启动过程是否存在故障。
[0021] 在一些示例性实施例中,在开关状态为第一状态的情况下,基板管理控制器还用于依据第一验证信息和第二验证信息生成用于记载启动过程是否故障的日志文件。
[0022] 在一些示例性实施例中,服务器中还包括警报装置,其中,警报装置,与基板管理控制器连接,在基板管理控制器确定目标程序的启动过程中存在故障后,警报装置用于在目标程序的控制下生成警报信息。
[0023] 在一些示例性实施例中,基板管理控制器和处理器之间通过有线通信链路连接。
[0024] 根据本申请的另一个实施例,提供了一种程序启动装置,包括: 第一处理模块,用于向处理器发送启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;第二处理模块,用于在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于确定目标程序的启动过程中是否存在故障;第三处理模块,用于在依据第一验证信息确定启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程。
[0025] 根据本申请的又一个实施例,还提供了一种非易失性存储介质,非易失性存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0026] 根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0027] 通过本申请,由于在目标程序的启动过程中,处理器需要发送用于确定启动过程是否存在故障的第一验证信息到基板管理控制器,并接收基板管理控制器确定无故障后发送的镜像文件,之后根据镜像文件继续执行启动过程,因此,可以解决相关技术中BIOS程序的启动过程独立运行导致在BIOS程序启动故障时无法快速准确定位发生故障的具体阶段的问题,达到在BIOS程序启动故障时快速定位故障阶段的效果。

附图说明

[0028] 图1是根据本申请实施例的程序启动方法的流程图;
[0029] 图2是根据本申请实施例的一种BIOS程序启动阶段的示意图;
[0030] 图3是根据本申请实施例的一种BIOS程序启动过程的示意图;
[0031] 图4是根据本申请实施例的另一种程序启动方法的流程图;
[0032] 图5是根据本申请实施例的一种服务器的结构框图;
[0033] 图6是根据本申请实施例的一种程序启动装置的结构框图;
[0034] 图7是根据本申请实施例的非易失性存储介质的结构示意图;
[0035] 图8是根据本申请实施例的一种电子设备的结构框图。

具体实施方式

[0036] 下文中将参考附图并结合实施例来详细说明本申请的实施例。显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0037] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0038] 为了更好地理解本申请实施例,以下将本申请实施例中涉及的技术术语解释如下:
[0039] BIOS程序:BIOS(Basic Input Output System)程序是一组固化到计算机内主板上一个ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,可以读写系统设置的具体信息。BIOS程序是OS启动的前路,是服务器或其他电子设备启动的第一步。
[0040] BMC:BMC(Baseboard Manager Controller)也称为基板管理控制器,为服务器的整体监控系统,用于监控服务器的运行状态。可在系统未开机、宕机、运行异常是获取服务器的各种信息并提供给运维人员,从而达到预警和告警的作用。
[0041] 在相关技术中,BIOS程序在启动时通常只需要standby电压即可启动,并且BIOS程序受控于CPLD(Complex Programming logic device,复杂可编程逻辑器件)的电路逻辑,在CPLD接收到POWER_ON信号后就会开始启动,并且整个启动过程中与其他设备或模块,如BMC等无联系,BMC等也无法监控到BIOS的启动情况。如果BIOS在启动过程中遇到故障,导致BIOS启动失败,由于BMC等设备与BIOS程序的启动过程无联系,因此无法快速准确得知BIOS是在启动过程中的哪个启动阶段启动失败的,也无法及时反馈故障情况,必须由运维人员自行查阅日志文件才能确定故障的启动阶段。
[0042] 为了解决上述问题,在本实施例中提供了一种运行于电子设备中的基板管理控制器的程序启动方法,电子设备可以是服务器、终端设备等。图1是根据本申请实施例的程序启动方法的流程图,如图1所示,该流程包括如下步骤:
[0043] 步骤S102,基板管理控制器向处理器发送启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;
[0044] 需要说明的是,在一些示例性实施例中,基板管理控制器和处理器之间可以采用有线通信链路连接并进行信息交互,从而降低信息传输过程中可能出现的传输故障问题的出现概率。上述有线通信链路可以是eSPI、LPC或I2C等。另外,本申请中的目标程序可以为BIOS程序,也可以为其他任意可分阶段启动的程序,在实施例中为了便于描述,以BIOS程序为例对本申请的具体实施方式进行介绍,但不等于本申请所提供的程序启动方法仅适用于BIOS程序中。
[0045] 在步骤S102所提供的技术方案中,基板管理控制器向处理器发送启动指示信息前,还需要在基板管理控制器中存储目标程序的镜像文件以及目标程序启动过程中的每个启动阶段对应的验证码,具体包括如下步骤:获取目标程序的镜像文件;获取第二验证信息,以及第二验证信息和启动阶段的对应关系,并将第二验证信息存储到镜像文件的预设字节位中。
[0046] 由于启动BIOS程序所需的镜像文件存储在基板管理控制器中,所以基板管理控制器可以实现对BIOS程序的启动过程的监控,并在确定BIOS程序启动异常时,不向处理器提供镜像文件从而避免因BIOS程序启动异常造成更大的损失。
[0047] 具体地,目标程序的镜像文件可以存储在基板管理控制器的ROM(Read Only Memory,只读存储器)中,并在镜像文件的固定字节位存入每个启动阶段完成后处理器会返回的阶段校验码,阶段校验码的形式可根据选择的加密手段来确定,在此不对具体加密方式和验证码的形式进行限定,即任意已知加密手段均可用于本实施例中。另外,基板管理控制器中还会存储每个阶段校验码和对应的启动阶段之间的对应关系,存储形式可以是将阶段校验码所存储的字节位和启动阶段的标识信息作为一组对应的数据。这样在BIOS程序的启动过程中,可以通过上述对应关系快速查询到所需的阶段校验码,或者在发生故障时快速确定故障发生阶段。
[0048] 在一些示例性实施例中,基板管理控制器和处理器还会与一个目标开关连接,该开关可用于控制处理器启动BIOS程序的启动方式。具体地,基板管理控制器向处理器发送启动指示信息时,可以先确定目标开关的开关状态,其中,开关状态包括第一状态和第二状态,第一状态用于指示由基板管理控制器和处理器共同完成目标程序的启动过程,第二状态用于指示由处理器单独完成目标程序的启动过程;依据开关状态向处理器发送启动指示信息。
[0049] 上述第一状态可以为开关闭合状态,第二状态可以为开关断开状态,或者上述第一状态可以为开关断开状态,第二状态可以为开关闭合状态。
[0050] 具体地,依据开关状态向处理器发送启动指示信息包括:在确定开关状态为第一状态的情况下,基板管理控制器向处理器发送启动指示信息;在确定开关状态为第二状态的情况下,不向处理器发送启动指示信息,并在处理器独立完成目标程序的启动过程的情况下,接收处理器发送的第一验证信息;依据第一验证信息生成第三日志文件,其中,第三日志文件用于记载启动过程的过程信息。
[0051] 步骤S104,在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于确定目标程序的启动过程中是否存在故障;
[0052] 在一些实例性实施例中,如图2所示,BIOS程序的启动过程包括多个启动阶段,例如SEC(Security Phase,安全)阶段、PEI(Pre‑EFI Initialization,预先EFI初始化)阶段、DXE(driver execution environment,驱动执行环境)阶段、BDS(Boot Device Selection,启动设备选择)阶段、RT(Run Time,OS环境执行时期)阶段和AL(After Life,灾难恢复)阶段。第一验证信息为处理器完成第一启动阶段后生成的验证信息,第一启动阶段为多个启动阶段中除最后一个启动阶段外的任意启动阶段,并且不同的启动阶段对应的第一验证信息不同。需要注意的是,图2中所示的启动阶段仅做示意用,不代表使用本申请所提供方法来启动的程序的启动过程必须为上述启动阶段,对于包含的启动阶段与图2部分不同或完全不同的程序而言,本申请仍然适用。
[0053] 作为一种可选地实施方式,当处理器在预设时长内没有完成当前启动阶段时,可认为该启动阶段存在异常,并向基板管理控制器发送内容为空或预设信息的第一验证信息。
[0054] 在一些示例性实施例中,当目标开关的状态为第一状态时,BIOS程序的启动过程如图3所示,整个启动过程需要基板管理控制器和处理器共同完成。从图3中可以看出,基板管理控制器在接收处理器发送的第一验证信息后,会确定与第一启动阶段对应的第二验证信息,其中,第二验证信息为预存储在基板管理控制器中的验证信息;比较第一验证信息和第二验证信息,并在第一验证信息和第二验证信息一致的情况下,确定第一启动阶段无故障。也就是说,在第一状态下,除了自启动的SEC阶段外,剩下的每个启动阶段都需要基板管理控制器验证完成并确定第一验证信息和第二验证信息一致后,处理器采能从基板管理控制器中获得该文件并依据获取的镜像文件继续完成镜像文件对应的启动阶段。
[0055] 通过在完成每个启动阶段后均需要通过验证信息来确定该启动阶段是否异常,并在确定无异常后再将下一阶段的镜像文件发送到处理器,不但可以准确定位发生故障的启动阶段,还可以在BIOS程序启动异常时及时终止启动过程,避免造成更大损失。
[0056] 作为一种可选地实施方式,在BIOS程序的启动过程中,处理器每完成一个启动阶段,会发送一个对应的第一校验码到基板管理控制器中,基板管理控制器在接收到第一校验码后,可以在ROM中存储的全部第二校验码中确定是否有与第一校验码相同的校验码,并在确定存在的情况下,依据第二校验码确定当前已完成的启动阶段,并将下一启动阶段的镜像文件发送给处理器。在未找到与第一校验码相同的校验码时,可以确定在本次启动过程中,最近一次匹配完成并且验证结果为通过的第二校验码,以及根据最近一次匹配完成的第二校验码本身或其对应的固定字节位来确定该第二校验码对应的启动阶段,并确定该启动阶段的下一启动阶段为发生故障的阶段。
[0057] 为了进一步提高启动过程的安全性,避免验证码泄露,可按照预设的调整规律周期性调整存储在BMC中的第二校验码所对应的存储位置,例如可为每个第二校验码提供多个备选的存储字节位,并每间隔一定时间或经过N次启动过程后将每个第二校验码从当前的存储字节位转移到任意一个备选的存储字节位中。
[0058] 作为一种可选地实施方式,在确定第一启动阶段无故障后,程序启动方法还包括:生成与第一启动阶段对应的第一日志文件,其中,第一日志文件用于记载第一启动阶段启动成功。
[0059] 具体地,在第一校验码(第一验证信息)和第二校验码(第二验证信息)一致后,基板管理控制器确认第一启动阶段启动成功,并生成用于记录“XX阶段校验码匹配成功”的信息,并允许处理器获取下一阶段的镜像文件。
[0060] 在本申请的一些示例性实施例中,基板管理控制器在第一验证信息与第二验证信息不一致的情况下,会确定第一启动阶段启动失败,并生成与第一启动阶段对应的第二日志文件,其中,第二日志文件用于记载第一启动阶段的标识信息,以及第一启动阶段对应的第一验证信息和第二验证信息;发送第二日志文件至目标设备,其中,目标设备用于确定目标程序是否启动成功。
[0061] 上述目标设备为运维人员使用的终端设备或监控设备,目标设备在接收到第二日志文件后,会生成警示信息提醒运维人员BIOS程序启动故障,并根据第二日志文件的内容确定发生故障的具体启动阶段。可以看出,通过让基板管理控制器在BIOS程序的启动过程的每个启动阶段完成后均进行校验,并根据校验结果生成日志文件来记录校验结果的方式,在BIOS程序启动失败时,可以快速准确地确定故障发生阶段,无需运维人员查阅可能记载有大量无关数据的日志文件。
[0062] 在一些示例性实施例中,当开关状态为第二状态时,由处理器独立完成BIOS程序的启动过程,并且在整个启动过程中,基板管理控制器无法控制BIOS程序的启动过程,只能被动地从处理器获取第一验证信息,并根据第一验证信息和第二验证信息生成日志文件。也就是说,当开关状态为第二状态时,基板管理控制器只能起到记录作用,无法切断BIOS程序的启动过程。
[0063] 步骤S106,在确定启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程。
[0064] 在步骤S106所提供的技术方案中,发送镜像文件到处理器的步骤包括:在确定第一启动阶段无故障后,向处理器发送第二启动阶段对应的镜像文件,其中,第二启动阶段为多个启动阶段中启动顺序在第一启动阶段之后并且与第一启动阶段相邻的启动阶段。
[0065] 由于BIOS程序在第一启动阶段启动完成并且第一验证信息和第二验证信息一致时,处理器才可以从基板管理控制器中获取下一阶段的镜像文件,这样在BIOS程序被木马程序等攻击时,可以通过验证信息及时发现异常,并不再向处理器发送下一阶段的镜像文件,从而避免的BIOS程序的镜像文件的泄露,保护了服务器的安全性。
[0066] 通过基板管理控制器向处理器发送启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于确定目标程序的启动过程中是否存在故障;在确定启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程,解决了相关技术中BIOS程序的启动过程独立运行导致在BIOS程序启动故障时无法快速准确定位发生故障的具体阶段的问题,达到在BIOS程序启动故障时快速定位故障阶段的效果。
[0067] 其中,上述步骤的执行主体可以为服务器、终端等电子设备中的基板管理控制器,但不限于此。
[0068] 在本实施例中提供了一种运行于电子设备中用于运行目标程序的处理器的程序启动方法,电子设备可以是服务器、终端设备等。图4是根据本申请实施例的程序启动方法的流程图,如图4所示,该流程包括如下步骤:
[0069] 步骤S402,处理器接收基板管理控制器发送的启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;
[0070] 在步骤S402所提供的技术方案中,处理器接收基板管理控制器发送的启动指示信息前,程序启动方法还包括:确定目标开关的开关状态,其中,开关状态包括第一状态和第二状态,第一状态用于指示由基板管理控制器和处理器共同完成目标程序的启动过程,第二状态用于指示由处理器单独完成目标程序的启动过程;在确定开关状态为第一状态的情况下,接收基板管理控制器发送的启动指示信息;在确定开关状态为第二状态的情况下,直接执行目标程序的启动过程。
[0071] 在本申请的一些实施例中,直接执行目标程序的启动过程包括:在完成任意一个启动阶段后,向基板管理控制器发送第一验证信息,并继续执行启动过程,直到完成全部启动阶段。
[0072] 步骤S404,在处理器启动目标程序的启动过程中,向基板管理控制器发送第一验证信息,其中,第一验证信息用于指示目标程序的启动过程中是否存在故障;
[0073] 在步骤S404所提供的技术方案中,启动过程包括多个启动阶段,第一验证信息为处理器完成第一启动阶段后生成的验证信息,第一启动阶段为多个启动阶段中除最后一个启动阶段外的任意启动阶段,并且不同的启动阶段对应的第一验证信息不同。
[0074] 作为一种可选地实施方式,基板管理控制器中存储有与第一启动阶段对应的第二验证信息,并在第一验证信息与第二验证信息一致的情况下,确定第一启动阶段无故障。
[0075] 步骤S406,接收基板管理控制器依据第一验证信息发送的镜像文件,并依据镜像文件完成启动过程。
[0076] 通过处理器接收基板管理控制器发送的启动指示信息前,程序启动方法还包括:确定目标开关的开关状态,其中,开关状态包括第一状态和第二状态,第一状态用于指示由基板管理控制器和处理器共同完成目标程序的启动过程,第二状态用于指示由处理器单独完成目标程序的启动过程;在确定开关状态为第一状态的情况下,接收基板管理控制器发送的启动指示信息;在确定开关状态为第二状态的情况下,直接执行目标程序的启动过程,解决了相关技术中BIOS程序的启动过程独立运行导致在BIOS程序启动故障时无法快速准确定位发生故障的具体阶段的问题,达到在BIOS程序启动故障时快速定位故障阶段的效果。
[0077] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
[0078] 在本实施例中还提供了一种服务器,该服务器用于实现上述实施例及实施方式,已经进行过说明的不再赘述。图5是根据本申请实施例的服务器的结构框图,如图5所示,该服务器包括基板管理控制器50,处理器52,目标开关54,其中,基板管理控制器50,用于存储目标程序的镜像文件;处理器52,用于完成目标程序的启动过程;目标开关54的开关状态包括第一状态和第二状态,第一状态用于指示由基板管理控制器50和处理器52共同完成目标程序的启动过程,第二状态用于指示由处理器52单独完成目标程序的启动过程;基板管理控制器50,还用于在开关状态为第一状态的情况下,向处理器52发送启动指示信息,其中,启动指示信息用于指示处理器52依据镜像文件启动目标程序;在处理器52启动目标程序的启动过程中,接收处理器52发送的第一验证信息,其中,第一验证信息用于指示目标程序的启动过程中是否存在故障;在依据第一验证信息确定目标程序的启动过程中不存在故障的情况下,发送镜像文件到处理器52,直到处理器52完成启动过程。
[0079] 在一些示例性实施例中,在开关状态为第二状态的情况下,处理器52独立完成目标程序的启动过程,并在启动过程中向基板管理控制器50发送第一验证信息;基板管理控制器50,用于依据第一验证信息生成用于记载启动过程的过程信息的日志文件。
[0080] 在一些示例性实施例中,基板管理控制器50中包括存储模块,存储模块用于存储目标程序的镜像文件,以及在目标程序的镜像文件的预设字节位中存储第二验证信息,其中,第二验证信息用于与第一验证信息共同指示启动过程是否存在故障。
[0081] 在一些示例性实施例中,在开关状态为第一状态的情况下,基板管理控制器50还用于依据第一验证信息和第二验证信息生成用于记载启动过程是否故障的日志文件。
[0082] 在一些示例性实施例中,服务器中还包括警报装置,其中,警报装置,与基板管理控制器50连接,在基板管理控制器确定目标程序的启动过程中存在故障后,警报装置用于在目标程序的控制下生成警报信息。
[0083] 在一些示例性实施例中,基板管理控制器50和处理器52之间通过有线通信链路连接。
[0084] 在本实施例中还提供了一种程序启动装置,该装置用于实现上述实施例及实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0085] 图6是根据本申请实施例的程序启动装置的结构框图,如图6所示,该装置包括第一处理模块60,用于向处理器发送启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;第二处理模块62,用于在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于确定目标程序的启动过程中是否存在故障;第三处理模块64,用于在依据第一验证信息确定启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程。
[0086] 在一些示例性实施例中,基板管理控制器向处理器发送启动指示信息前,第一处理模块60还用于:获取目标程序的镜像文件;获取第二验证信息,以及第二验证信息和启动阶段的对应关系,并将第二验证信息存储到镜像文件的预设字节位中。
[0087] 在一些示例性实施例中,基板管理控制器中的第一处理模块60向处理器发送启动指示信息包括:确定目标开关的开关状态,其中,开关状态包括第一状态和第二状态,第一状态用于指示由基板管理控制器和处理器共同完成目标程序的启动过程,第二状态用于指示由处理器单独完成目标程序的启动过程;依据开关状态向处理器发送启动指示信息。
[0088] 在本申请的一些实施例中,第一处理模块60依据开关状态向处理器发送启动指示信息包括:在确定开关状态为第一状态的情况下,基板管理控制器向处理器发送启动指示信息;在确定开关状态为第二状态的情况下,不向处理器发送启动指示信息,并在处理器独立完成目标程序的启动过程的情况下,接收处理器发送的第一验证信息;依据第一验证信息生成第三日志文件,其中,第三日志文件用于记载启动过程的过程信息。
[0089] 在本申请的一些实施例中,启动过程包括多个启动阶段,第一验证信息为处理器完成第一启动阶段后生成的验证信息,第一启动阶段为多个启动阶段中除最后一个启动阶段外的任意启动阶段,并且不同的启动阶段对应的第一验证信息不同。
[0090] 在本申请的一些实施例中,接收处理器发送的第一验证信息后,第二处理模块62还用于:确定与第一启动阶段对应的第二验证信息,其中,第二验证信息为预存储在基板管理控制器中的验证信息;比较第一验证信息和第二验证信息,并在第一验证信息和第二验证信息一致的情况下,确定第一启动阶段无故障。
[0091] 在本申请的一些实施例中,在确定第一启动阶段无故障后,第二处理模块62还用于:生成与第一启动阶段对应的第一日志文件,其中,第一日志文件用于记载第一启动阶段启动成功。
[0092] 在本申请的一些实施例中,比较第一验证信息和第二验证信息之后,第二处理模块62:在第一验证信息与第二验证信息不一致的情况下,确定第一启动阶段启动失败;生成与第一启动阶段对应的第二日志文件,其中,第二日志文件用于记载第一启动阶段的标识信息,以及第一启动阶段对应的第一验证信息和第二验证信息;发送第二日志文件至目标设备,其中,目标设备用于确定目标程序是否启动成功。
[0093] 在一些示例性实施例中,第三处理模块64发送镜像文件到处理器的步骤包括:在确定第一启动阶段无故障后,向处理器发送第二启动阶段对应的镜像文件,其中,第二启动阶段为多个启动阶段中启动顺序在第一启动阶段之后并且与第一启动阶段相邻的启动阶段。
[0094] 需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0095] 本申请的实施例还提供了一种非易失性存储介质,该非易失性存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤,例如,可用于执行如下程序启动方法:基板管理控制器向处理器发送启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于确定目标程序的启动过程中是否存在故障;在确定启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程。
[0096] 在一些实施例中,上述计算机程序被执行时还可以执行如下程序启动方法:处理器接收基板管理控制器发送的启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,向基板管理控制器发送第一验证信息,其中,第一验证信息用于指示目标程序的启动过程中是否存在故障;接收基板管理控制器依据第一验证信息发送的镜像文件,并依据镜像文件完成启动过程。
[0097] 在一些示例性实施例中,上述非易失性存储介质可以包括但不限于:U盘、只读存储器(Read‑Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。另外如图7所示,该非易失性存储介质中至少包括读取模块70和存储模块72,其中存储模块用于存储计算机程序等,读取模块用于与其他设备或同一设备中的其他部件之间进行交互,以使得其他设备或其他部件可调用存储模块72中的程序。
[0098] 本申请的实施例还提供了一种电子设备,如图8所示,包括处理器802、和存储器804,该存储器104中存储有计算机程序,该处理器102被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。例如,可运行如下程序启动方法:基板管理控制器向处理器发送启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,接收处理器发送的第一验证信息,其中,第一验证信息用于确定目标程序的启动过程中是否存在故障;在确定启动过程中不存在故障的情况下,发送镜像文件到处理器,直到处理器完成启动过程。
[0099] 在一些实施例中,上述处理器802还可以运行如下程序启动方法:处理器接收基板管理控制器发送的启动指示信息,其中,基板管理控制器中存储有目标程序的镜像文件,启动指示信息用于指示处理器依据镜像文件启动目标程序;在处理器启动目标程序的启动过程中,向基板管理控制器发送第一验证信息,其中,第一验证信息用于指示目标程序的启动过程中是否存在故障;接收基板管理控制器依据第一验证信息发送的镜像文件,并依据镜像文件完成启动过程。
[0100] 在一些示例性实施例中,如图8所示,上述电子设备还可以包括传输设备806以及输入输出设备808,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0101] 本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
[0102] 显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
[0103] 以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。