CN115543694A - Flash器件切换方法、装置、计算机设备和存储介质 - Google Patents
Flash器件切换方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115543694A CN115543694A CN202211507724.6A CN202211507724A CN115543694A CN 115543694 A CN115543694 A CN 115543694A CN 202211507724 A CN202211507724 A CN 202211507724A CN 115543694 A CN115543694 A CN 115543694A
- Authority
- CN
- China
- Prior art keywords
- area
- cpld
- flash
- server
- memory device
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000011084 recovery Methods 0.000 claims abstract description 198
- 238000004590 computer program Methods 0.000 claims description 37
- 230000006870 function Effects 0.000 claims description 30
- 238000012795 verification Methods 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1417—Boot up procedures
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- 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)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及一种Flash器件切换方法、装置、计算机设备和存储介质。该方法包括:在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令;根据服务器上电开机命令进行服务器上电开机;在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作;在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。采用本方法能够服务器能够正常运行。
Description
技术领域
本申请涉及硬件技术领域,特别是涉及一种Flash器件切换方法、装置、计算机设备和存储介质。
背景技术
当今时代,科技进步突飞猛进,尤其是服务器产品技术,依靠其强大运算能力、较好的兼容性,较强的安全性可靠的运行稳定性等等优势,使其在科技领域处于领先地位,很多厂家都会在服务器的稳定性及校验安全方面上下功夫,尤其是增加平台固件恢复功能PFR(Platform Firmware Resilence)的服务器,PFR功能因其内部有丰富的校验模块,能够很好的避免了固件被篡改的风险。
但是,目前的PFR服务器只有一个内存器件Flash,当该内存器件Flash出现问题或者损坏时,导致PFR服务器无法正常运行或者宕机情况,导致PFR服务器无法正常启动。
发明内容
基于此,有必要针对上述技术问题,提供一种Flash器件切换方法、装置、计算机设备和存储介质,服务器设置有双内存器件Flash,当其中一个内存器件Flash出现问题时,能够及时切换到另一个内存器件Flash,保证服务器能够正常运行。
一种Flash器件切换方法,该方法应用于服务器,服务器包括复杂可编程逻辑器件CPLD、第一基本输入输出系统BIOS和第二基本输入输出系统BIOS,其中,第一基本输入输出系统BIOS和第二基本输入输出系统BIOS包括对应的内存器件Flash,内存器件Flash包括暂存区域、活动区域和恢复区域,其中:
在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令;
根据服务器上电开机命令进行服务器上电开机;
在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作;
在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
在其中一个实施例中,在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令,包括:
调用复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域是否通过;
当校验通过时,通过复杂可编程逻辑器件CPLD生成服务器上电开启命令。
在其中一个实施例中,调用复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域是否通过,包括:
调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域数据;
调用复杂可编程逻辑器件CPLD根据各区域数据计算得到对应的基准区域哈希值;
调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域哈希值;
调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否通过。
在其中一个实施例中,调用复杂可编程逻辑器件CPLD根据各区域数据计算得到对应的基准区域哈希值,包括:
调用复杂可编程逻辑器件CPLD获取密钥;
调用复杂可编程逻辑器件CPLD根据密钥和各区域数据进行计算,得到对应的基准区域哈希值。
在其中一个实施例中,调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域哈希值,包括:
调用第一内存器件Flash获取暂存区域、活动区域和恢复区域对应的区域数据和签章数据;
调用第一内存器件Flash根据暂存区域、活动区域和恢复区域对应的区域数据和签章数据计算得到对应的区域哈希值。
在其中一个实施例中,上述方法还包括:
通过第一内存器件Flash获取暂存区域对应的第一区域数据;
通过第一内存器件Flash获取暂存区域对应的第一签章数据;
通过第一内存器件Flash根据第一区域数据和第一签章数据计算得到暂存区域对应的区域哈希值。
在其中一个实施例中,上述方法还包括:
通过第一内存器件Flash获取活动区域对应的第二区域数据;
通过第一内存器件Flash获取活动区域对应的第二签章数据;
通过第一内存器件Flash根据第二区域数据和第二签章数据计算得到活动区域对应的区域哈希值。
在其中一个实施例中,上述方法还包括:
通过第一内存器件Flash获取恢复区域对应的第三区域数据;
通过第一内存器件Flash获取恢复区域对应的第三签章数据;
通过第一内存器件Flash根据第三区域数据和第三签章数据计算得到恢复区域对应的区域哈希值。
在其中一个实施例中,调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否通过,包括:
调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否匹配,确定是否通过。
在其中一个实施例中,根据服务器上电开机命令进行服务器上电开机,包括:
根据服务器上电开机命令进行服务器上电开机,并运行服务器上的主程序。
在其中一个实施例中,在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作,包括:
获取服务器上电开机的开机时间;
在开机时间超过预设开机时间时,启动第一基本输入输出系统BIOS的看门狗程序,触发服务器进行重新启动操作;
获取服务器进行重新启动的操作次数;
在操作次数超过预设操作次数时,调用第一基本输入输出系统BIOS将通用输入输出GPIO对应的电平信号拉低,触发复杂可编程逻辑器件CPLD进行重新恢复操作。
在其中一个实施例中,触发复杂可编程逻辑器件CPLD进行重新恢复操作,包括:
通过复杂可编程逻辑器件CPLD获取第一内存器件Flash中的恢复区域对应的恢复区域哈希值;
通过复杂可编程逻辑器件CPLD将第一内存器件Flash中的活动区域对应的活动区域哈希值替换成恢复区域哈希值。
在其中一个实施例中,在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash,包括:
获取复杂可编程逻辑器件CPLD重新恢复操作次数;
在重新恢复操作次数超过预设次数时,通过Espi协议通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
在其中一个实施例中,服务器、复杂可编程逻辑器件CPLD、第一基本输入输出系统BIOS和第二基本输入输出系统BIOS都具备平台固件恢复功能PFR。
一种Flash器件切换装置,该装置应用于服务器,服务器包括复杂可编程逻辑器件CPLD、第一基本输入输出系统BIOS和第二基本输入输出系统BIOS,其中,第一基本输入输出系统BIOS和第二基本输入输出系统BIOS包括对应的内存器件Flash,内存器件Flash包括暂存区域、活动区域和恢复区域,其中,上述装置包括:
校验模块,用于在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令;
上电模块,用于根据服务器上电开机命令进行服务器上电开机;
触发模块,用于在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作;
切换模块,用于在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令;
根据服务器上电开机命令进行服务器上电开机;
在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作;
在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令;
根据服务器上电开机命令进行服务器上电开机;
在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作;
在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
上述Flash器件切换方法、装置、计算机设备和存储介质,在服务器上电开机之前,当复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,服务器进行上电开机,当服务器上电开机失败后,先通过服务器的核心-复杂可编程逻辑器件CPLD进行重新恢复操作,如果还是无法让服务器正常上电开机,则通知复杂可编程逻辑器件CPLD强行将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash,避免内存器件Flash的损坏造成服务器无法正常运行或者出现宕机等问题。也就是说,服务器设置有双内存器件Flash,当其中一个内存器件Flash出现问题时,能够及时切换到另一个内存器件Flash,保证服务器能够正常运行。
附图说明
图1为一个实施例中Flash器件切换方法的流程示意图;
图2为一个实施例中复杂可编程逻辑器件校验步骤的流程示意图;
图3为一个实施例中复杂可编程逻辑器件校验步骤的流程示意图;
图4为一个实施例中基准区域哈希值计算步骤的流程示意图;
图5为一个实施例中区域哈希值获取步骤的流程示意图;
图6为一个实施例中Flash器件切换方法的流程示意图;
图7为一个实施例中Flash器件切换方法的流程示意图;
图8为一个实施例中Flash器件切换方法的流程示意图;
图9为一个实施例中复杂可编程逻辑器件操作方法的流程示意图;
图10为一个实施例中复杂可编程逻辑器件操作方法的流程示意图;
图11为一个实施例中内存器件Flash切换方法的流程示意图;
图12为一个实施例中Flash器件切换装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种Flash器件切换方法,以该方法应用于服务器为例进行说明,其中,服务器包括复杂可编程逻辑器件CPLD、第一基本输入输出系统BIOS和第二基本输入输出系统BIOS,其中,第一基本输入输出系统BIOS和第二基本输入输出系统BIOS包括对应的内存器件Flash,内存器件Flash包括暂存区域、活动区域和恢复区域,包括以下步骤:
步骤102,在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令。
其中,服务器具有平台固件恢复功能PFR(Platform Firmware Resilence),PFR采用了基于硬件的解决方案,为保护服务器中的固件提供了一种全新的方法,可全面防止对服务器所有固件的攻击。PFR能解决那些包含多个底层处理组件,每个底层处理组件拥有各自固件的企业服务器的漏洞问题。这些固件可能会受到黑客攻击,如在组件的闪存中植入能够轻易躲过标准系统检测手段的恶意代码,从而对系统造成永久性破坏。
其中,PFR使用了一块复杂可编程逻辑器件CPLD作为整个PFR技术的核心,并定义了一段特殊的预启动状态 T-1(T minus 1)。系统上电后,首先进入T-1阶段,此时,其他所有具有可能启动接口的固件(BIOS等)都处于复位状态,只有PFR CPLD上电启动,PFR CPLD首先对BIOS Flash进行校验。因此,具有PFR的服务器可以包括复杂可编程逻辑器件CPLD、第一基本输入输出系统BIOS和第二基本输入输出系统BIOS,其中,第一基本输入输出系统BIOS和第二基本输入输出系统BIOS包括对应的内存器件Flash,内存器件Flash包括暂存区域Staging、活动区域Active和恢复区域Recovery。
其中,暂存区域Staging是用于升级的临时缓冲区,活动区域Active中存储的是未经压缩、直接执行的固件,恢复区域Recovery中存储的是压缩过的备份文件。
具体地,在服务器上电开机之前,复杂可编程逻辑器件CPLD可以对第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域进行校验,只有校验成功后,服务器才能上电开机。
步骤104,根据服务器上电开机命令进行服务器上电开机。
其中,在复杂可编程逻辑器件CPLD对第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域校验成功后,复杂可编程逻辑器件CPLD可以触发生成服务器上电开机命令,根据该服务器上电开机命令,服务器进行上电开机。
步骤106,在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作。
其中,服务器进行上电开机操作,服务器此时存在两种情况,一种是服务器上电开机成功,说明服务器并未遇到任何问题,运行成功。另一种是服务器上电未成功,说明服务器运行出现了问题,例如,宕机等。因此,当服务器上电开机未成功时,复杂可编程逻辑器件CPLD会进行重新恢复操作。
其中,复杂可编程逻辑器件CPLD进行重新恢复操作可以是对第一基本输入输出系统BIOS的第一内存器件Flash中的活动区域Active进行重新恢复,例如可以是,借助第一内存器件Flash中的恢复区域Recovery对活动区域Active进行重新恢复操作。
步骤108,在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
其中,复杂可编程逻辑器件CPLD进行重新恢复操作,此时也会存在两种情况,一种是复杂可编程逻辑器件CPLD重新恢复操作成功,说明服务器通过复杂可编程逻辑器件CPLD进行重新恢复就可以运行成功,而另一种是复杂可编程逻辑器件CPLD重新恢复操作失败,说明服务器通过复杂可编程逻辑器件CPLD进行重新恢复都未能成功。因此,为了保证服务器能够正常运行,可以通过切换内存器件Flash来保证服务器开机运行成功。
具体地,当复杂可编程逻辑器件CPLD重新恢复操作失败后,可以发送命令至复杂可编程逻辑器件CPLD,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash,这样就能够应对任何一个内存器件Flash损坏导致服务器无法正常运行的情况。
上述Flash器件切换方法中,在服务器上电开机之前,当复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,服务器进行上电开机,当服务器上电开机失败后,先通过服务器的核心-复杂可编程逻辑器件CPLD进行重新恢复操作,如果还是无法让服务器正常上电开机,则通知复杂可编程逻辑器件CPLD强行将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash,避免内存器件Flash的损坏造成服务器无法正常运行或者出现宕机等问题。也就是说,服务器设置有双内存器件Flash,当其中一个内存器件Flash出现问题时,能够及时切换到另一个内存器件Flash,保证服务器能够正常运行。
在一个实施例中,如图2所示,在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令,包括:
步骤202,调用复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域是否通过。
步骤204,当校验通过时,通过复杂可编程逻辑器件CPLD生成服务器上电开启命令。
其中,复杂可编程逻辑器件CPLD对第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域进行校验可以通过哈希值Hash来进行校验,哈希值Hash又称:散列函数(或散列算法,又称哈希函数,Hash Function)是一种从任何一种数据中创建小的数字"指纹"的方法,可以通过加密算法对各区域的区域数据进行加密计算,得到各区域对应的哈希值,复杂可编程逻辑器件CPLD可以对第一基本输入输出系统BIOS对应的第一内存器件Flash中的各区域的哈希值进行校验,确定是否通过,当校验通过时,则说明第一基本输入输出系统BIOS对应的第一内存器件Flash中各区域数据都是安全的,因此复杂可编程逻辑器件CPLD生成服务器上电开启命令,让服务器进行开机运行。
在一个实施例中,如图3所示,调用复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域是否通过,包括:
步骤302,调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域数据。
步骤304,调用复杂可编程逻辑器件CPLD根据各区域数据计算得到对应的基准区域哈希值。
其中,复杂可编程逻辑器件CPLD作为PFR服务器中最核心的固件,可以从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域数据,复杂可编程逻辑器件CPLD对获取到的各区域数据进行加密计算,可以使用加密算法对各区域数据进行加密计算,得到各区域对应的基准区域哈希值。
其中,这里的基准区域哈希值是第一内存器件Flash中暂存区域、活动区域和恢复区域对应的标准区域哈希值,用来校验第一内存器件Flash中暂存区域、活动区域和恢复区域是否通过的标准区域哈希值。
步骤306,调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域哈希值。
步骤308,调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否通过。
其中,这里的区域哈希值是第一内存器件Flash中暂存区域、活动区域和恢复区域计算的哈希值,通过区域哈希值和对应的基准区域哈希值能够校验对应的区域是否可以通过。具体地,复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域哈希值,复杂可编程逻辑器件CPLD将暂存区域、活动区域和恢复区域对应的区域哈希值与对应的基准区域哈希值进行比较,确定暂存区域、活动区域和恢复区域是否通过。
在一个实施例中,如图4所示,调用复杂可编程逻辑器件CPLD根据各区域数据计算得到对应的基准区域哈希值,包括:
步骤402,调用复杂可编程逻辑器件CPLD获取密钥。
步骤404,调用复杂可编程逻辑器件CPLD根据密钥和各区域数据进行计算,得到对应的基准区域哈希值。
其中,密钥是用于加密解密数据的工具,这里的密钥是用来对各区域数据进行加密的工具,密钥也可以理解为一种加密算法,通过密钥可以实现区域数据的加密,得到加密后的数据。
具体地,复杂可编程逻辑器件CPLD获取密钥,密钥可以预先设定,也可以根据实际业务需求、实际产品需求或实际应用场景进行确定得到,复杂可编程逻辑器件CPLD通过密钥对第一基本输入输出系统BIOS的第一内存器件Flash中的暂存区域、活动区域和恢复区域对应的区域数据进行加密计算,得到暂存区域、活动区域和恢复区域对应的基准区域哈希值,这里的基准区域哈希值是用来判断暂存区域、活动区域和恢复区域对应的区域数据是否发生篡改、或者是被损坏等问题。
在一个实施例中,如图5所示,调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域哈希值,包括:
步骤502,调用第一内存器件Flash获取暂存区域、活动区域和恢复区域对应的区域数据和签章数据。
步骤504,调用第一内存器件Flash根据暂存区域、活动区域和恢复区域对应的区域数据和签章数据计算得到对应的区域哈希值。
其中,第一内存器件Flash中各区域对应的区域哈希值是各区域根据区域数据与签章数据自行进行加密计算得到的区域哈希值。区域数据是区域中所有存储的数据,而签章数据是区域签名证书相关的数据,不同的区域对应的签章数据不同,使用加密算法对区域数据和签章数据进行加密计算,得到对应的区域哈希值。
因此,第一内存器件Flash中的暂存区域、活动区域和恢复区域可以预先根据对应的区域数据和签章数据进行加密计算,得到对应的区域哈希值,并存储至第一内存器件Flash中,后续复杂可编程逻辑器件CPLD校验时,可以从第一内存器件Flash中获取暂存区域、活动区域和恢复区域对应的区域哈希值。
在一个实施例中,如图6所示,上述方法还包括:
步骤602,通过第一内存器件Flash获取暂存区域对应的第一区域数据。
步骤604,通过第一内存器件Flash获取暂存区域对应的第一签章数据。
步骤606,通过第一内存器件Flash根据第一区域数据和第一签章数据计算得到暂存区域对应的区域哈希值。
其中,第一内存器件Flash的各区域都对应有区域数据和签章数据,可以根据各区域对应的区域数据和签章数据计算得到对应的区域哈希值,存储至第一内存器件Flash中。
具体地,第一内存器件Flash获取暂存区域Staging对应的第一区域数据和第一签章数据,根据预设加密算法对第一区域数据和第一签章数据进行加密计算,得到暂存区域Staging对应的区域哈希值,存储至第一内存器件Flash。
在一个实施例中,如图7所示,上述方法还包括:
步骤702,通过第一内存器件Flash获取活动区域对应的第二区域数据。
步骤704,通过第一内存器件Flash获取活动区域对应的第二签章数据。
步骤706,通过第一内存器件Flash根据第二区域数据和第二签章数据计算得到活动区域对应的区域哈希值。
具体地,第一内存器件Flash获取活动区域Active对应的第二区域数据和第二签章数据,根据预设加密算法对第二区域数据和第二签章数据进行加密计算,得到活动区域Active对应的区域哈希值,存储至第一内存器件Flash。
在一个实施例中,如图8所示,上述方法还包括:
步骤802,通过第一内存器件Flash获取恢复区域对应的第三区域数据。
步骤804,通过第一内存器件Flash获取恢复区域对应的第三签章数据。
步骤806,通过第一内存器件Flash根据第三区域数据和第三签章数据计算得到恢复区域对应的区域哈希值。
具体地,第一内存器件Flash获取恢复区域Recovery对应的第三区域数据和第三签章数据,根据预设加密算法对第三区域数据和第三签章数据进行加密计算,得到恢复区域Recovery对应的区域哈希值,存储至第一内存器件Flash。
在一个实施例中,根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否通过,包括:
根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否匹配,确定是否通过。
其中,复杂可编程逻辑器件CPLD从第一内存器件Flash中得到各区域对应的区域哈希值后,通过比较各区域哈希值和对应的基准区域哈希值是否匹配来确定是否通过。具体地,复杂可编程逻辑器件CPLD将区域哈希值和对应的基准区域哈希值进行匹配,匹配可以是,例如区域哈希值和基准区域哈希值是否相同,进一步地,可以是各区域哈希值和对应的基准区域哈希值都匹配成功,确定为通过,若任一区域哈希值和对应的基准区域哈希值未匹配成功,确定为未通过。
在一个实施例中,根据服务器上电开机命令进行服务器上电开机,包括:根据服务器上电开机命令进行服务器上电开机,并运行服务器上的主程序。
其中,服务器上电开机命令是用来命令服务器进行上电开机的,复杂可编程逻辑器件CPLD触发生成服务器上电开机命令后,服务器可以根据服务器上电开机命令进行上电开机,并且运行服务器上的主程序,此时,会记录服务器上电开机的时间,通过服务器上电开机的时间来判断服务器是否成功上电开机。而主程序是服务器中的一个主要程序,可以通过该主程序是否运行成功来判断服务器是否成功上电开机。
在一个实施例中,如图9所示,在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作,包括:
步骤902,获取服务器上电开机的开机时间。
步骤904,在开机时间超过预设开机时间时,启动第一基本输入输出系统BIOS的看门狗程序,触发服务器进行重新启动操作。
其中,服务器在进行上电开机时,会记录服务器上电开机的开机时间,通过服务器上电开机的开机时间来判断服务器是否成功上电开机。具体地,获取记录的服务器上电开机的开机时间和预设开机时间,比较服务器上电开机的开机时间和预设开机时间来确定服务器是否上电开机成功,例如,当服务器上电开机的开机时间超过预设开机时间时,说明服务器出现问题,并未成功上电开机,则可以启动第一基本输入输出系统BIOS的看门狗程序,触发服务器进行重新启动操作。其中,预设开机时间可以根据实际业务需求、实际产品需求或实际应用场景进行预先设置得到,如预设开机时间为6分钟。
其中,这里的看门狗程序是用来触发生成服务器进行重新启动操作的程序,通过看门狗程序运行,服务器则可以进行尝试重新启动操作。
反之,当服务器上电开机的开机时间未超过预设开机时间时,说明服务器上电开机未出现任何问题,服务器正常运行,服务器上的主程序也正常运行。
步骤906,获取服务器进行重新启动的操作次数。
步骤908,在操作次数超过预设操作次数时,调用第一基本输入输出系统BIOS将通用输入输出GPIO对应的电平信号拉低,触发复杂可编程逻辑器件CPLD进行重新恢复操作。
其中,由于服务器进行重新启动操作时,也不一定就会成功启动,因此,可以记录服务器进行重新启动的操作次数,通过重新启动的操作次数来判断服务器是否启动成功。具体地,获取服务器进行重新启动的操作次数和预设操作次数,通过比较重新启动的操作次数与预设操作次数来判断服务器是否重启成功,例如当重新启动的操作次数超过预设操作次数时,说明服务器进行多次重新启动都未成功开启,则无法通过重启来使得服务器能够正常运行,则可以通过复杂可编程逻辑器件CPLD来尝试让服务器启动。具体地,第一基本输入输出系统BIOS将通用输入输出GPIO对应的电平信号拉低,触发复杂可编程逻辑器件CPLD进行重新恢复操作。
其中,预设操作次数可以根据实际业务需求、实际产品需求或实际应用场景进行确定得到,预设操作次数例如可以是5次。
反之,当重新启动的操作次数未超过预设操作次数时,说明可以通过服务器多次尝试重新启动就可以解决服务器无法正常运行的问题。
在一个实施例中,如图10所示,触发复杂可编程逻辑器件CPLD进行重新恢复操作,包括:
步骤1002,通过复杂可编程逻辑器件CPLD获取第一内存器件Flash中的恢复区域对应的恢复区域哈希值。
步骤1004,通过复杂可编程逻辑器件CPLD将第一内存器件Flash中的活动区域对应的活动区域哈希值替换成恢复区域哈希值。
其中,复杂可编程逻辑器件CPLD的重新恢复操作是将恢复区域Recovery中的恢复区域哈希值恢复到活动区域Active中,然后重新启动。具体地,复杂可编程逻辑器件CPLD获取第一内存器件Flash中的恢复区域Recovery对应的恢复区域哈希值,将恢复区域哈希值替换掉活动区域Active对应的活动区域哈希值,进行重新启动,此时会记录复杂可编程逻辑器件CPLD重新恢复操作的次数,通过复杂可编程逻辑器件CPLD重新恢复操作的次数来判断服务器是否可以通过复杂可编程逻辑器件CPLD重新恢复操作来解决无法正常运行的问题。
在一个实施例中,如图11所示,在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash,包括:
步骤1102,获取复杂可编程逻辑器件CPLD重新恢复操作次数。
步骤1104,在重新恢复操作次数超过预设次数时,通过Espi协议通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
具体地,获取复杂可编程逻辑器件CPLD重新恢复操作次数和预设次数,通过比较重新恢复操作次数和预设次数来判断服务器是否可以通过复杂可编程逻辑器件CPLD重新恢复操作实现正常运行,例如,当重新恢复操作次数超过预设次数时,说明服务器无法通过复杂可编程逻辑器件CPLD重新恢复操作实现正常运行,则为了避免第一基本输入输出系统BIOS的第一内存器件Flash损坏造成服务器无法正常运行或者出现宕机的情况,则可以通过Espi协议通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash,使用第二基本输入输出系统BIOS对应的第二内存器件Flash来代替第一基本输入输出BIOS对应的第一内存器件Flash的工作,保证服务器可以正常运行或者不出现宕机的情况。
在一个实施例中,复杂可编程逻辑器件CPLD具备平台固件恢复功能PFR。
在一个实施例中,服务器具备平台固件恢复功能PFR。
在一个实施例中,第一基本输入输出系统BIOS具备平台固件恢复功能PFR。
在一个实施例中,第二基本输入输出系统BIOS具备平台固件恢复功能PFR。
其中,由于服务器具备平台固件恢复功能PFR,则服务器中的固件复杂可编程逻辑器件CPLD也具备平台固件恢复功能PFR,第一基本输入输出系统BIOS具备平台固件恢复功能PFR和第二基本输入输出系统BIOS具备平台固件恢复功能PFR,服务器具备平台固件恢复功能PFR能够很好地避免固件被篡改的风险。
在一个具体的应用场景中,例如该应用场景可以是基于双Flash下的PFR BIOS启动校验场景,具体包括以下步骤:
11:CPLD通过Hash值去校验PFR BIOS的Staging区域、Active区域以及Recovery区域。
12:当 Hash值校验通过后,服务器上电开机,Bootup(启动)主程序运行。
13:若开机时间超过6分钟,则启动BIOS的看门狗程序,触发服务器重启。
14:若重启次数超过5次,BIOS将对应的GPIO pin拉低,触发CPLD重新做Recovery。
S15:若CPLD做Recovery次数超过三次,服务器依旧不断重启,则通过eSPI协议通知CPLD强切Flash。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图12所示,提供了一种Flash器件切换装置1200,该装置应用于服务器,服务器包括复杂可编程逻辑器件CPLD、第一基本输入输出系统BIOS和第二基本输入输出系统BIOS,其中,第一基本输入输出系统BIOS和第二基本输入输出系统BIOS包括对应的内存器件Flash,内存器件Flash包括暂存区域、活动区域和恢复区域,其中包括:校验模块1202、上电模块1204、触发模块1206和切换模块1208,其中:
校验模块1202,用于在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令。
上电模块1204,用于根据服务器上电开机命令进行服务器上电开机。
触发模块1206,用于在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作。
切换模块1208,用于在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
在一个实施例中,校验模块1202用于调用复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域是否通过,当校验通过时,调用复杂可编程逻辑器件CPLD生成服务器上电开启命令。
在一个实施例中,校验模块1202用于调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域数据,调用复杂可编程逻辑器件CPLD根据各区域数据计算得到对应的基准区域哈希值,调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域哈希值,调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否通过。
在一个实施例中,校验模块1202用于调用复杂可编程逻辑器件CPLD获取密钥,调用复杂可编程逻辑器件CPLD根据密钥和各区域数据进行计算,得到对应的基准区域哈希值。
在一个实施例中,校验模块1202用于调用第一内存器件Flash获取暂存区域、活动区域和恢复区域对应的区域数据和签章数据,调用第一内存器件Flash根据暂存区域、活动区域和恢复区域对应的区域数据和签章数据计算得到对应的区域哈希值。
在一个实施例中,校验模块1202用于通过第一内存器件Flash获取暂存区域对应的第一区域数据,通过第一内存器件Flash获取暂存区域对应的第一签章数据,通过第一内存器件Flash根据第一区域数据和第一签章数据计算得到暂存区域对应的区域哈希值。
在一个实施例中,校验模块1202用于通过第一内存器件Flash获取活动区域对应的第二区域数据,通过第一内存器件Flash获取活动区域对应的第二签章数据,通过第一内存器件Flash根据第二区域数据和第二签章数据计算得到活动区域对应的区域哈希值。
在一个实施例中,校验模块1202用于通过第一内存器件Flash获取恢复区域对应的第三区域数据,通过第一内存器件Flash获取恢复区域对应的第三签章数据,通过第一内存器件Flash根据第三区域数据和第三签章数据计算得到恢复区域对应的区域哈希值。
在一个实施例中,校验模块1202用于调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否匹配,确定是否通过。
在一个实施例中,上电模块1204用于根据服务器上电开机命令进行服务器上电开机,并运行服务器上的主程序。
在一个实施例中,触发模块1206用于获取服务器上电开机的开机时间,在开机时间超过预设开机时间时,启动第一基本输入输出系统BIOS的看门狗程序,触发服务器进行重新启动操作,获取服务器进行重新启动的操作次数,在操作次数超过预设操作次数时,调用第一基本输入输出系统BIOS将通用输入输出GPIO对应的电平信号拉低,触发复杂可编程逻辑器件CPLD进行重新恢复操作。
在一个实施例中,触发模块1206用于通过复杂可编程逻辑器件CPLD获取第一内存器件Flash中的恢复区域对应的恢复区域哈希值,通过复杂可编程逻辑器件CPLD将第一内存器件Flash中的活动区域对应的活动区域哈希值替换成恢复区域哈希值。
在一个实施例中,切换模块1208用于获取复杂可编程逻辑器件CPLD重新恢复操作次数,在重新恢复操作次数超过预设次数时,通过Espi协议通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
在一个实施例中,复杂可编程逻辑器件CPLD具备平台固件恢复功能PFR。
在一个实施例中,服务器具备平台固件恢复功能PFR。
在一个实施例中,第一基本输入输出系统BIOS具备平台固件恢复功能PFR。
在一个实施例中,第二基本输入输出系统BIOS具备平台固件恢复功能PFR。
关于Flash器件切换装置的具体限定可以参见上文中对于Flash器件切换方法的限定,在此不再赘述。上述Flash器件切换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种Flash器件切换方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令;
根据服务器上电开机命令进行服务器上电开机;
在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作;
在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域是否通过;
当校验通过时,调用复杂可编程逻辑器件CPLD生成服务器上电开启命令。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域数据;
调用复杂可编程逻辑器件CPLD根据各区域数据计算得到对应的基准区域哈希值;
调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域哈希值;
调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否通过。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用复杂可编程逻辑器件CPLD获取密钥;
调用复杂可编程逻辑器件CPLD根据密钥和各区域数据进行计算,得到对应的基准区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用第一内存器件Flash获取暂存区域、活动区域和恢复区域对应的区域数据和签章数据;
调用第一内存器件Flash根据暂存区域、活动区域和恢复区域对应的区域数据和签章数据计算得到对应的区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过第一内存器件Flash获取暂存区域对应的第一区域数据;
通过第一内存器件Flash获取暂存区域对应的第一签章数据;
通过第一内存器件Flash根据第一区域数据和第一签章数据计算得到暂存区域对应的区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过第一内存器件Flash获取活动区域对应的第二区域数据;
通过第一内存器件Flash获取活动区域对应的第二签章数据;
通过第一内存器件Flash根据第二区域数据和第二签章数据计算得到活动区域对应的区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过第一内存器件Flash获取恢复区域对应的第三区域数据;
通过第一内存器件Flash获取恢复区域对应的第三签章数据;
通过第一内存器件Flash根据第三区域数据和第三签章数据计算得到恢复区域对应的区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否匹配,确定是否通过。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据服务器上电开机命令进行服务器上电开机,并运行服务器上的主程序。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取服务器上电开机的开机时间;
在开机时间超过预设开机时间时,启动第一基本输入输出系统BIOS的看门狗程序,触发服务器进行重新启动操作;
获取服务器进行重新启动的操作次数;
在操作次数超过预设操作次数时,调用第一基本输入输出系统BIOS将通用输入输出GPIO对应的电平信号拉低,触发复杂可编程逻辑器件CPLD进行重新恢复操作。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过复杂可编程逻辑器件CPLD获取第一内存器件Flash中的恢复区域对应的恢复区域哈希值;
通过复杂可编程逻辑器件CPLD将第一内存器件Flash中的活动区域对应的活动区域哈希值替换成恢复区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取复杂可编程逻辑器件CPLD重新恢复操作次数;
在重新恢复操作次数超过预设次数时,通过Espi协议通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
在一个实施例中,复杂可编程逻辑器件CPLD具备平台固件恢复功能PFR。
在一个实施例中,服务器具备平台固件恢复功能PFR。
在一个实施例中,第一基本输入输出系统BIOS具备平台固件恢复功能PFR。
在一个实施例中,第二基本输入输出系统BIOS具备平台固件恢复功能PFR。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:在复杂可编程逻辑器件CPLD校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域通过时,获取服务器上电开机命令;
根据服务器上电开机命令进行服务器上电开机;
在服务器上电开机未成功时,触发复杂可编程逻辑器件CPLD进行重新恢复操作;
在复杂可编程逻辑器件CPLD重新恢复操作失败后,通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的暂存区域、活动区域和恢复区域是否通过;
当校验通过时,调用复杂可编程逻辑器件CPLD生成服务器上电开启命令。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域数据;
调用复杂可编程逻辑器件CPLD根据各区域数据计算得到对应的基准区域哈希值;
调用复杂可编程逻辑器件CPLD从第一内存器件Flash中获取对应的暂存区域、活动区域和恢复区域对应的区域哈希值;
调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否通过。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用复杂可编程逻辑器件CPLD获取密钥;
调用复杂可编程逻辑器件CPLD根据密钥和各区域数据进行计算,得到对应的基准区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用第一内存器件Flash获取暂存区域、活动区域和恢复区域对应的区域数据和签章数据;
调用第一内存器件Flash根据暂存区域、活动区域和恢复区域对应的区域数据和签章数据计算得到对应的区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过第一内存器件Flash获取暂存区域对应的第一区域数据;
通过第一内存器件Flash获取暂存区域对应的第一签章数据;
通过第一内存器件Flash根据第一区域数据和第一签章数据计算得到暂存区域对应的区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过第一内存器件Flash获取活动区域对应的第二区域数据;
通过第一内存器件Flash获取活动区域对应的第二签章数据;
通过第一内存器件Flash根据第二区域数据和第二签章数据计算得到活动区域对应的区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过第一内存器件Flash获取恢复区域对应的第三区域数据;
通过第一内存器件Flash获取恢复区域对应的第三签章数据;
通过第一内存器件Flash根据第三区域数据和第三签章数据计算得到恢复区域对应的区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
调用复杂可编程逻辑器件CPLD根据区域哈希值和基准区域哈希值确定暂存区域、活动区域和恢复区域是否匹配,确定是否通过。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据服务器上电开机命令进行服务器上电开机,并运行服务器上的主程序。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取服务器上电开机的开机时间;
在开机时间超过预设开机时间时,启动第一基本输入输出系统BIOS的看门狗程序,触发服务器进行重新启动操作;
获取服务器进行重新启动的操作次数;
在操作次数超过预设操作次数时,调用第一基本输入输出系统BIOS将通用输入输出GPIO对应的电平信号拉低,触发复杂可编程逻辑器件CPLD进行重新恢复操作。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
通过复杂可编程逻辑器件CPLD获取第一内存器件Flash中的恢复区域对应的恢复区域哈希值;
通过复杂可编程逻辑器件CPLD将第一内存器件Flash中的活动区域对应的活动区域哈希值替换成恢复区域哈希值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取复杂可编程逻辑器件CPLD重新恢复操作次数;
在重新恢复操作次数超过预设次数时,通过Espi协议通知复杂可编程逻辑器件CPLD将第一内存器件Flash切换至第二基本输入输出系统BIOS对应的第二内存器件Flash。
在一个实施例中,复杂可编程逻辑器件CPLD具备平台固件恢复功能PFR。
在一个实施例中,服务器具备平台固件恢复功能PFR。
在一个实施例中,第一基本输入输出系统BIOS具备平台固件恢复功能PFR。
在一个实施例中,第二基本输入输出系统BIOS具备平台固件恢复功能PFR。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (17)
1.一种Flash器件切换方法,所述方法应用于服务器,所述服务器包括复杂可编程逻辑器件CPLD、第一基本输入输出系统BIOS和第二基本输入输出系统BIOS,其中,所述第一基本输入输出系统BIOS和所述第二基本输入输出系统BIOS包括对应的内存器件Flash,所述内存器件Flash包括暂存区域、活动区域和恢复区域,其中,所述方法包括:
在所述复杂可编程逻辑器件CPLD校验所述第一基本输入输出系统BIOS对应的第一内存器件Flash中的所述暂存区域、所述活动区域和所述恢复区域通过时,获取服务器上电开机命令;
根据所述服务器上电开机命令进行服务器上电开机;
在所述服务器上电开机未成功时,触发所述复杂可编程逻辑器件CPLD进行重新恢复操作;
在所述复杂可编程逻辑器件CPLD重新恢复操作失败后,通知所述复杂可编程逻辑器件CPLD将所述第一内存器件Flash切换至所述第二基本输入输出系统BIOS对应的第二内存器件Flash。
2.根据权利要求1所述的方法,其特征在于,所述在所述复杂可编程逻辑器件CPLD校验所述第一基本输入输出系统BIOS对应的第一内存器件Flash中的所述暂存区域、所述活动区域和所述恢复区域通过时,获取服务器上电开机命令,包括:
调用所述复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的所述暂存区域、所述活动区域和所述恢复区域是否通过;
当校验通过时,通过所述复杂可编程逻辑器件CPLD生成服务器上电开启命令。
3.根据权利要求2所述的方法,其特征在于,所述调用所述复杂可编程逻辑器件CPLD通过哈希值Hash校验第一基本输入输出系统BIOS对应的第一内存器件Flash中的所述暂存区域、所述活动区域和所述恢复区域是否通过,包括:
调用所述复杂可编程逻辑器件CPLD从所述第一内存器件Flash中获取对应的所述暂存区域、所述活动区域和所述恢复区域对应的区域数据;
调用所述复杂可编程逻辑器件CPLD根据各所述区域数据计算得到对应的基准区域哈希值;
调用所述复杂可编程逻辑器件CPLD从所述第一内存器件Flash中获取对应的所述暂存区域、所述活动区域和所述恢复区域对应的区域哈希值;
调用所述复杂可编程逻辑器件CPLD根据所述区域哈希值和所述基准区域哈希值确定所述暂存区域、所述活动区域和所述恢复区域是否通过。
4.根据权利要求3所述的方法,其特征在于,所述调用所述复杂可编程逻辑器件CPLD根据各所述区域数据计算得到对应的基准区域哈希值,包括:
调用所述复杂可编程逻辑器件CPLD获取密钥;
调用所述复杂可编程逻辑器件CPLD根据所述密钥和各所述区域数据进行计算,得到对应的基准区域哈希值。
5.根据权利要求3所述的方法,其特征在于,所述调用所述复杂可编程逻辑器件CPLD从所述第一内存器件Flash中获取对应的所述暂存区域、所述活动区域和所述恢复区域对应的区域哈希值,包括:
调用所述第一内存器件Flash获取所述暂存区域、所述活动区域和所述恢复区域对应的区域数据和签章数据;
调用所述第一内存器件Flash根据所述暂存区域、所述活动区域和所述恢复区域对应的区域数据和所述签章数据计算得到对应的区域哈希值。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过所述第一内存器件Flash获取所述暂存区域对应的第一区域数据;
通过所述第一内存器件Flash获取所述暂存区域对应的第一签章数据;
通过所述第一内存器件Flash根据所述第一区域数据和所述第一签章数据计算得到所述暂存区域对应的区域哈希值。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过所述第一内存器件Flash获取所述活动区域对应的第二区域数据;
通过所述第一内存器件Flash获取所述活动区域对应的第二签章数据;
通过所述第一内存器件Flash根据所述第二区域数据和所述第二签章数据计算得到所述活动区域对应的区域哈希值。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过所述第一内存器件Flash获取所述恢复区域对应的第三区域数据;
通过所述第一内存器件Flash获取所述恢复区域对应的第三签章数据;
通过所述第一内存器件Flash根据所述第三区域数据和所述第三签章数据计算得到所述恢复区域对应的区域哈希值。
9.根据权利要求3所述的方法,其特征在于,所述调用所述复杂可编程逻辑器件CPLD根据所述区域哈希值和所述基准区域哈希值确定所述暂存区域、所述活动区域和所述恢复区域是否通过,包括:
调用所述复杂可编程逻辑器件CPLD根据所述区域哈希值和所述基准区域哈希值确定所述暂存区域、所述活动区域和所述恢复区域是否匹配,确定是否通过。
10.根据权利要求1所述的方法,其特征在于,所述根据所述服务器上电开机命令进行服务器上电开机,包括:
根据所述服务器上电开机命令进行服务器上电开机,并运行所述服务器上的主程序。
11.根据权利要求1所述的方法,其特征在于,所述在所述服务器上电开机未成功时,触发所述复杂可编程逻辑器件CPLD进行重新恢复操作,包括:
获取所述服务器上电开机的开机时间;
在所述开机时间超过预设开机时间时,启动所述第一基本输入输出系统BIOS的看门狗程序,触发所述服务器进行重新启动操作;
获取所述服务器进行重新启动的操作次数;
在所述操作次数超过预设操作次数时,调用所述第一基本输入输出系统BIOS将通用输入输出GPIO对应的电平信号拉低,触发所述复杂可编程逻辑器件CPLD进行重新恢复操作。
12.根据权利要求1所述的方法,其特征在于,所述触发所述复杂可编程逻辑器件CPLD进行重新恢复操作,包括:
通过所述复杂可编程逻辑器件CPLD获取所述第一内存器件Flash中的所述恢复区域对应的恢复区域哈希值;
通过所述复杂可编程逻辑器件CPLD将第一内存器件Flash中的所述活动区域对应的活动区域哈希值替换成所述恢复区域哈希值。
13.根据权利要求1所述的方法,其特征在于,所述在所述复杂可编程逻辑器件CPLD重新恢复操作失败后,通知所述复杂可编程逻辑器件CPLD将所述第一内存器件Flash切换至所述第二基本输入输出系统BIOS对应的第二内存器件Flash,包括:
获取所述复杂可编程逻辑器件CPLD重新恢复操作次数;
在所述重新恢复操作次数超过预设次数时,通过Espi协议通知所述复杂可编程逻辑器件CPLD将所述第一内存器件Flash切换至所述第二基本输入输出系统BIOS对应的第二内存器件Flash。
14.根据权利要求1所述的方法,其特征在于,所述服务器、所述复杂可编程逻辑器件CPLD、所述第一基本输入输出系统BIOS和所述第二基本输入输出系统BIOS都具备平台固件恢复功能PFR。
15.一种Flash器件切换装置,其特征在于,所述装置应用于服务器,所述服务器包括复杂可编程逻辑器件CPLD、第一基本输入输出系统BIOS和第二基本输入输出系统BIOS,其中,所述第一基本输入输出系统BIOS和所述第二基本输入输出系统BIOS包括对应的内存器件Flash,所述内存器件Flash包括暂存区域、活动区域和恢复区域,其中,所述装置包括:
校验模块,用于在所述复杂可编程逻辑器件CPLD校验所述第一基本输入输出系统BIOS对应的第一内存器件Flash中的所述暂存区域、所述活动区域和所述恢复区域通过时,获取服务器上电开机命令;
上电模块,用于根据所述服务器上电开机命令进行服务器上电开机;
触发模块,用于在所述服务器上电开机未成功时,触发所述复杂可编程逻辑器件CPLD进行重新恢复操作;
切换模块,用于在所述复杂可编程逻辑器件CPLD重新恢复操作失败后,通知所述复杂可编程逻辑器件CPLD将所述第一内存器件Flash切换至所述第二基本输入输出系统BIOS对应的第二内存器件Flash。
16.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至14中任一项所述方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211507724.6A CN115543694B (zh) | 2022-11-29 | 2022-11-29 | Flash器件切换方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211507724.6A CN115543694B (zh) | 2022-11-29 | 2022-11-29 | Flash器件切换方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115543694A true CN115543694A (zh) | 2022-12-30 |
CN115543694B CN115543694B (zh) | 2023-06-09 |
Family
ID=84721781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211507724.6A Active CN115543694B (zh) | 2022-11-29 | 2022-11-29 | Flash器件切换方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543694B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228394A (zh) * | 2018-01-02 | 2018-06-29 | 郑州云海信息技术有限公司 | 一种服务器双BIOS Flash控制系统及方法 |
CN112667462A (zh) * | 2020-12-15 | 2021-04-16 | 苏州浪潮智能科技有限公司 | 一种服务器的双闪存运行监测的系统、方法及介质 |
CN113805672A (zh) * | 2021-08-10 | 2021-12-17 | 苏州浪潮智能科技有限公司 | 一种双flash主板、应用其的电子设备及其设计方法 |
CN114116305A (zh) * | 2021-10-26 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 基于pfr的bios固件恢复方法、系统、终端及存储介质 |
WO2022198972A1 (zh) * | 2021-03-26 | 2022-09-29 | 山东英信计算机技术有限公司 | 一种服务器启动过程中的故障定位方法、系统及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113867807A (zh) * | 2021-08-20 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种缩短服务器上电时间的方法、装置、设备和存储介质 |
-
2022
- 2022-11-29 CN CN202211507724.6A patent/CN115543694B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228394A (zh) * | 2018-01-02 | 2018-06-29 | 郑州云海信息技术有限公司 | 一种服务器双BIOS Flash控制系统及方法 |
CN112667462A (zh) * | 2020-12-15 | 2021-04-16 | 苏州浪潮智能科技有限公司 | 一种服务器的双闪存运行监测的系统、方法及介质 |
WO2022198972A1 (zh) * | 2021-03-26 | 2022-09-29 | 山东英信计算机技术有限公司 | 一种服务器启动过程中的故障定位方法、系统及装置 |
CN113805672A (zh) * | 2021-08-10 | 2021-12-17 | 苏州浪潮智能科技有限公司 | 一种双flash主板、应用其的电子设备及其设计方法 |
CN114116305A (zh) * | 2021-10-26 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 基于pfr的bios固件恢复方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115543694B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112783537B (zh) | 基于MTD存储设备的嵌入式linux操作系统升级方法及系统 | |
US8972591B2 (en) | Method for downloading software | |
CN102262574B (zh) | 操作系统启动保护方法和装置 | |
CN111523112B (zh) | 一种服务器安全启动方法、装置、设备及介质 | |
CN102880828B (zh) | 一种针对虚拟化支撑环境的入侵检测与恢复系统 | |
CN114651232A (zh) | 数据管理 | |
US20210367781A1 (en) | Method and system for accelerating verification procedure for image file | |
CN109804378A (zh) | Bios安全 | |
US20100217751A1 (en) | Method and system for safely deleting information from a computer | |
CN107657170B (zh) | 支持智能修复的可信加载启动控制系统和方法 | |
CN110990124A (zh) | 云主机恢复方法和装置 | |
CN109491716B (zh) | 启动方法及装置、程序存储方法及装置 | |
TWI676889B (zh) | 開機啟動資料有效性技術 | |
US20200233676A1 (en) | Bios management device, bios management system, bios management method, and bios management program-stored recording medium | |
CN113360914A (zh) | 一种bios更新的方法、系统、设备及介质 | |
CN115543694B (zh) | Flash器件切换方法、装置、计算机设备和存储介质 | |
CN116611075A (zh) | XIP启动时预防攻击芯片的检测方法、os检测固件及系统 | |
CN112955889A (zh) | 安全启动装置及方法 | |
CN114444083B (zh) | 一种基于bmc的服务器bios全生命周期安全保护系统 | |
WO2024113683A1 (zh) | Flash器件切换方法、装置、计算机设备和存储介质 | |
CN115827069A (zh) | 服务器主板的启动控制方法、系统及装置 | |
CN108228219B (zh) | 一种带外刷新bios时验证bios合法性的方法及装置 | |
CN106776087B (zh) | 终端设备及其开机方法 | |
US20230129942A1 (en) | Method for locking a rewritable non-volatile memory and electronic device implementing said method | |
CN112099855B (zh) | 一种信息处理方法、电子设备和计算机存储介质 |
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 |