一种BIOS启动方法、装置、设备及可读存储介质
文献发布时间:2023-06-19 11:02:01
技术领域
本申请涉及计算机技术领域,特别涉及一种BIOS启动方法、装置、设备及可读存储介质。
背景技术
目前,在服务器上电过程中,可以控制服务器中BIOS(Basic Input/OutputSystem,基本输入/输出系统)的上电顺序,但没有对BIOS的有效性和可用性进行判断,为服务器的安全运行留下了隐患。因此,在BIOS上电时,如何检验BIOS有效性和可用性,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种BIOS启动方法、装置、设备及可读存储介质,以检验BIOS有效性和可用性。其具体方案如下:
第一方面,本申请提供了一种BIOS启动方法,应用于FPGA,包括:
若BIOS上电,则从BMC处获取SPI存储器的控制权,以从所述SPI存储器中读取目标数据中的部分数据;所述目标数据为启动所述BIOS所需的全部数据;
将所述控制权交还给所述BMC,并计算所述部分数据的校验值;
对所述校验值进行校验,若校验通过,则利用所述BMC加载所述SPI存储器中的所述目标数据,以启动所述BIOS。
优选地,所述从所述SPI存储器中读取目标数据中的部分数据,包括:
从所述SPI存储器中读取所述目标数据中的前N位数据,N为16进制数且不小于0x2000。
优选地,所述从所述SPI存储器中读取目标数据中的部分数据,包括:
从所述SPI存储器中读取所述目标数据中的后N位数据,N为16进制数且不小于0x2000。
优选地,所述从所述SPI存储器中读取目标数据中的部分数据,包括:
从所述SPI存储器中读取所述目标数据中的第X位至第X+N位的数据,X和N为16进制数且N不小于0x2000。
优选地,所述计算所述部分数据的校验值,包括:
计算所述部分数据的MD5值。
优选地,所述对所述校验值进行校验,包括:
判断所述MD5值与FPGA中的预置MD5值是否一致;所述预置MD5值基于所述部分数据计算获得,并存储在所述FPGA中;
若是,则校验通过;否则,校验未通过。
优选地,若对所述BIOS进行升级,则保持所述部分数据不变。
第二方面,本申请提供了一种BIOS启动装置,应用于FPGA,包括:
读取模块,用于若BIOS上电,则从BMC处获取SPI存储器的控制权,以从所述SPI存储器中读取目标数据中的部分数据;所述目标数据为启动所述BIOS所需的全部数据;
计算模块,用于将所述控制权交还给所述BMC,并计算所述部分数据的校验值;
启动模块,用于对所述校验值进行校验,若校验通过,则利用所述BMC加载所述SPI存储器中的所述目标数据,以启动所述BIOS。
第三方面,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的BIOS启动方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的BIOS启动方法。
通过以上方案可知,本申请提供了一种BIOS启动方法,应用于FPGA,包括:若BIOS上电,则从BMC处获取SPI存储器的控制权,以从所述SPI存储器中读取目标数据中的部分数据;所述目标数据为启动所述BIOS所需的全部数据;将所述控制权交还给所述BMC,并计算所述部分数据的校验值;对所述校验值进行校验,若校验通过,则利用所述BMC加载所述SPI存储器中的所述目标数据,以启动所述BIOS。
可见,本申请利用FPGA控制BIOS的上电过程,若BIOS上电,则FPGA从BMC处获取SPI存储器的控制权,以便在SPI存储器中读取用于启动BIOS所需的全部数据中的部分数据后,将控制权交还给BMC,之后计算此部分数据的校验值,并对该校验值进行校验,若校验通过,则表明用于启动BIOS所需的数据正常,即BIOS有效且可用,因此利用BMC加载SPI存储器中的目标数据,从而启动BIOS。本申请能够在BIOS上电时,检测BIOS的有效性和可用性,从而可避免服务器启动后因BIOS不可用而导致运行故障。
相应地,本申请提供的一种BIOS启动装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种BIOS启动方法流程图;
图2为本申请公开的另一种BIOS启动方法流程图;
图3为本申请公开的一种BIOS启动装置示意图;
图4为本申请公开的一种电子设备示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在服务器上电过程中,可以控制服务器中BIOS(Basic Input/OutputSystem,基本输入/输出系统)的上电顺序,但没有对BIOS的有效性和可用性进行判断,为服务器的安全运行留下了隐患。为此,本申请提供了一种BIOS启动方案,能够在BIOS上电时,检测BIOS的有效性和可用性,从而可避免服务器启动后因BIOS不可用而导致运行故障。
参见图1所示,本申请实施例公开了一种BIOS启动方法,应用于FPGA(FieldProgrammable Gate Array,现场可编程逻辑门阵列),包括:
S101、若BIOS上电,则从BMC处获取SPI存储器的控制权,以从SPI存储器中读取目标数据中的部分数据。
其中,目标数据为启动BIOS所需的全部数据,也就是启动BIOS需要运行的各种代码,以及与代码相关的各种数据。本实施例从其中取出一部分用作校验数据。
SPI(Serial Peripheral Interface,串行外围设备接口)存储器为SPI FLASH,其中存储着启动BIOS所需的全部数据。
目标数据中的部分数据可以有多种方式进行选择和确定,例如下述所列的三种方式,任意其一即可。
方式一:从SPI存储器中读取目标数据中的部分数据,包括:从SPI存储器中读取目标数据中的前N位数据,N为16进制数且不小于0x2000。即:从目标数据的首部开始,选择前N位数据。
方式一:从SPI存储器中读取目标数据中的部分数据,包括:从SPI存储器中读取目标数据中的后N位数据,N为16进制数且不小于0x2000。即:从目标数据的尾部倒数,选择后N位数据。
方式一:从SPI存储器中读取目标数据中的部分数据,包括:从SPI存储器中读取目标数据中的第X位至第X+N位的数据,X和N为16进制数且N不小于0x2000。即:选择目标数据中的中间位置的X位~X+N位数据。
需要说明的是,所选择的部分数据需要有足够的数据量,因此本实施例用N来保障部分数据的数据量。
S102、将控制权交还给BMC,并计算部分数据的校验值。
S103、对校验值进行校验,若校验通过,则利用BMC加载SPI存储器中的目标数据,以启动BIOS。
本实施例利用FPGA控制BIOS的上电过程,若BIOS上电,则FPGA从BMC处获取SPI存储器的控制权,以便在SPI存储器中读取用于启动BIOS所需的全部数据中的部分数据后,将控制权交还给BMC,之后计算此部分数据的校验值,并对该校验值进行校验,若校验通过,则表明用于启动BIOS所需的数据正常,即BIOS有效且可用,因此利用BMC(BaseboardManagement Controller,基板管理控制器)加载SPI存储器中的目标数据,从而启动BIOS。
部分数据的校验值可以使用其的MD5(Message-Digest algorithm 5)值。
在一种具体实施方式中,计算部分数据的校验值,包括:计算部分数据的MD5值。在一种具体实施方式中,对校验值进行校验,包括:判断MD5值与FPGA中的预置MD5值是否一致;预置MD5值基于部分数据计算获得,并存储在FPGA中;若是,则校验通过;否则,校验未通过。即:在BIOS出厂时,将相应部分数据的MD5值存储在FPGA中,并注明该部分数据的选择条件。
在一种具体实施方式中,若对BIOS进行升级,则保持部分数据不变,以便后续可以继续基于该部分数据检测BIOS的可用性和有效性。
可见,本申请实施例利用FPGA控制BIOS的上电过程,若BIOS上电,则FPGA从BMC处获取SPI存储器的控制权,以便在SPI存储器中读取用于启动BIOS所需的全部数据中的部分数据后,将控制权交还给BMC,之后计算此部分数据的校验值,并对该校验值进行校验,若校验通过,则表明用于启动BIOS所需的数据正常,即BIOS有效且可用,因此利用BMC加载SPI存储器中的目标数据,从而启动BIOS,可避免服务器启动后因BIOS不可用而导致运行故障。
参见图2所示,本申请实施例公开了另一种BIOS启动方法,该方法在BIOS出厂时将SPI FLASH中的第0-0x2000位的数据的MD5值内置到FPGA中。之后在服务器的主板通电后,FPGA对主板上的各个芯片进行上电,在给BIOS上电时,FPGA首先拿到SPI FLASH的控制权,以读取SPI FLASH中的第0-0x2000位的数据,然后计算该部分数据的MD5值,将该MD5值和FPGA中的MD5值进行比较。若二者一致,则校验通过,那么给BIOS进行上电。否则,校验未通过,那么输出BIOS有误的提示消息,以便技术人员查验BIOS。
本实施例基于FPGA启动BIOS,具体流程包括:
在步骤1中,出厂时将BIOS在SPI FLASH中的0-0x2000位的数据的MD5值内置到FPGA中;
在步骤2中,服务器的主板通电后,FPGA使主板上的各个芯片进入待机状态;
在步骤3中,在给BIOS上电时,FPGA首先拿到SPI FLASH的控制权,以读取SPIFLASH中的0-0x2000位的数据;读取完数据后将SPI FLASH的控制器切换到BMC上;
在步骤4中,对数据使用MD5算法算取MD5值,将该MD5值和FPGA中的MD5值进行比较;
在步骤5中,校验通过后,给BIOS进行上电,BMC的Aspped芯片加载SPI FLASH中的BIOS启动数据,完成BIOS的启动。
其中,考虑到BIOS在出厂后存在升级的情况,为了解决升级后MD5值改变的情况,可以将0-0x2000的数据保持固定,使其并不因为升级而改变。
本实施例利用FPGA控制BIOS的上电过程,若BIOS上电,则FPGA从BMC处获取SPI存储器的控制权,以便在SPI存储器中读取用于启动BIOS所需的全部数据中的部分数据后,将控制权交还给BMC,之后计算此部分数据的校验值,并对该校验值进行校验,若校验通过,则表明用于启动BIOS所需的数据正常,即BIOS有效且可用,因此利用BMC加载SPI存储器中的目标数据,从而启动BIOS,可避免服务器启动后因BIOS不可用而导致运行故障。
下面对本申请实施例提供的一种BIOS启动装置进行介绍,下文描述的一种BIOS启动装置与上文描述的一种BIOS启动方法可以相互参照。
参见图3所示,本申请实施例公开了一种BIOS启动装置,应用于FPGA,包括:
读取模块301,用于若BIOS上电,则从BMC处获取SPI存储器的控制权,以从SPI存储器中读取目标数据中的部分数据;目标数据为启动BIOS所需的全部数据;
计算模块302,用于将控制权交还给BMC,并计算部分数据的校验值;
启动模块303,用于对校验值进行校验,若校验通过,则利用BMC加载SPI存储器中的目标数据,以启动BIOS。
在一种具体实施方式中,读取模块具体用于:
从SPI存储器中读取目标数据中的前N位数据,N为16进制数且不小于0x2000。
在一种具体实施方式中,读取模块具体用于:
从SPI存储器中读取目标数据中的后N位数据,N为16进制数且不小于0x2000。
在一种具体实施方式中,读取模块具体用于:
从SPI存储器中读取目标数据中的第X位至第X+N位的数据,X和N为16进制数且N不小于0x2000。
在一种具体实施方式中,计算模块具体用于:
计算部分数据的MD5值。
在一种具体实施方式中,启动模块具体用于:
判断MD5值与FPGA中的预置MD5值是否一致;预置MD5值基于部分数据计算获得,并存储在FPGA中;若是,则校验通过;否则,校验未通过。
在一种具体实施方式中,若对BIOS进行升级,则保持部分数据不变。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种BIOS启动装置,该装置能够在BIOS上电时,检测BIOS的有效性和可用性,从而可避免服务器启动后因BIOS不可用而导致运行故障。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种BIOS启动方法及装置可以相互参照。
参见图4所示,本申请实施例公开了一种电子设备,包括:
存储器401,用于保存计算机程序;
处理器402,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种BIOS启动方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的BIOS启动方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
- 一种BIOS启动方法、装置、设备及可读存储介质
- 一种BIOS网络启动方法、装置和计算机可读存储介质