一种锁定BIOS启动项的方法与流程

文档序号:15131484发布日期:2018-08-10 08:04阅读:2764来源:国知局

本发明属于计算机技术领域,特别涉及一种锁定bios启动项的方法。



背景技术:

现今,pc及服务器上的bios都是基于uefi架构的,uefi(unifiedextensiblefirmwareinterface)既通用可扩展固件接口,是新一代的基本输入输出系统技术,旨在定义一套完整的操作系统与固件之间的规范。

各个厂家的bios都有不同的选择启动项的模式,针对不同的平台和应用场景。其中,有些应用场景由于未连接显示设备(如部分服务器平台),无法通过bios界面选择指定的启动项;更多的是一些多硬盘的应用场景,需要从特定硬盘启动,但每次硬盘插拔均会改变多硬盘的启动顺序,需要重新进入bios界面修改启动顺序,操作十分不便,故需要一种锁定bios启动项的方法。



技术实现要素:

针对上述缺陷,本发明的目的在于提供一种锁定bios启动项的方法,在多硬盘的应用场景下,能够有效的避免硬盘插拔或添加等操作影响启动项,使用户能够直接设定系统从特定的硬盘启动。

本发明为实现上述目的,通过以下技术方案实现:一种锁定bios启动项的方法,所述bios基于uefi固件,包括下述步骤:从环境变量获取用户设定的启动类型;所述的环境变量用以指代启动设备的类型;所述启动类型包括,硬盘启动、光盘启动和usb设备启动;然后,根据环境变量判断启动类型是否为硬盘启动;如果是,则枚举系统中的所有硬盘,获取各硬盘的diskinfoprotocol和对应的devicepathprotocol,遍历查找符合锁定条件的硬盘,找到后,建立启动项并调整bootorder,将新建立的启动项加入链表表头,使用uefibios通用的启动策略引导操作系统;否则,直接使用uefibios通用的启动策略引导操作系统。

进一步,所述环境变量的设定方法包括,将硬盘启动的环境变量设为0,将光盘启动的环境变量设为1,将usb设备启动的环境变量设为2,并在biossetup界面下建立对应的选项,允许用户修改环境变量的值。

进一步,所述diskinfoprotocol用于获取硬盘名称和硬盘sn码。

进一步,所述devicepathprotocol用于获取硬盘所对应的sata控制器地址和硬盘在sata控制器中对应的port口编号。

进一步,所述遍历查找符合锁定条件的硬盘的方法包括以下步骤:判断是否有仍未遍历的硬盘,如果否,直接使用uefibios通用的启动策略引导操作系统;如果是,继续遍历下一个硬盘,并将硬盘名称、硬盘sn码、硬盘所对应的sata控制器地址和对应的port口编号与锁定条件对比,确定符合锁定条件的硬盘;若仍然无法确定符合锁定条件的硬盘,继续遍历查找符合锁定条件的硬盘。

进一步,所述锁定条件为用户指定的硬盘名称、硬盘sn码或硬盘所对应的sata控制器地址。

对比现有技术,本发明有益效果在于:本发明提出的一种锁定bios启动项的方法,它能够根据用户指定的硬盘启动项调整uefibios中的bootorder环境变量,将新建立的启动项插入bootorder链表的表头,并从bootorder中所记录的第一个启动项引导操作系统,从而实现从特定硬盘启动的功能。

本发明首先根据环境变量判断启动类型,用户可以自主添加启动设备并修改环境变量的值,提高了系统的兼容性。在进行硬盘遍历查找时,使用uefi规范中的handleprotocol接口,获取系统中所有的diskinfoprotocol接口,利用该接口的硬盘名称和硬盘sn码等信息,同时在diskinfoprotocol接口所对应的controllerhandle上获取devicepathprotocol接口,利用该接口获取硬盘所对应的sata控制器地址和硬盘在sata控制器中对应的port口编号并将上述信息一一对应后作为硬盘识别判定的依据,保证了硬盘识别的准确性;将硬盘名称、硬盘sn码和硬盘所对应的sata控制器地址均作为硬盘的锁定条件,实现了锁定条件的多样性,便于用户的操作。

另外,本发明基于uefi固件,采用uefibios通用的启动策略,适用于当今主流的pc平台和服务器平台。

附图说明

附图1是本发明的方法流程图。

具体实施方式

下面结合附图对本发明的具体实施方式做出说明。

如图1所示的一种锁定bios启动项的方法,首先读取根据环境变量的数值,判断用户所选择的启动设备类型,若值为0,则从硬盘启动。

使用uefi规范中的handleprotocol接口,获取系统中所有的diskinfoprotocol接口,利用该接口的硬盘名称和硬盘sn码等信息,同时在diskinfoprotocol接口所对应的controllerhandle上获取devicepathprotocol接口,利用该接口获取硬盘所对应的sata控制器地址和硬盘在sata控制器中对应的port口编号。

根据用户指定的地址、指定名称或指定sn码的硬盘,对上述枚举信息进行筛选,锁定所需的特定硬盘。若用户选择从特定地址的硬盘启动,则首先通过sata控制器所在的pcibus号、pcidevice号和pcifunction号判断硬盘所在sata控制器的地址是否正确,sata控制器地址正确则进一步对比硬盘在sata控制器中对应的port口编号,port口编号也正确即判定为被锁定的硬盘;若用户选择从特定名称或sn码的硬盘启动,则将硬盘信息中的名称或sn码与被锁定硬盘的名称或sn码进行比对,若名称或sn码一致即判定为被锁定的硬盘。筛选完成后,仅针对该硬盘建立对应的环境变量记录硬盘信息,将其作为bios启动项。同时调整uefibios中的bootorder环境变量,将新建立的启动项插入bootorder链表的表头。

最后,按照uefibios通用的启动策略,从bootorder中所记录的第一个启动项引导操作系统,从而实现从特定硬盘启动的功能。

另外,在上述的对枚举信息进行筛选,锁定所需的特定硬盘的过程中,如果遍历所有硬盘后仍无法找到符合锁定条件的硬盘,则直接按照uefibios通用的启动策略,从bootorder中所记录的第一个启动项引导操作系统。

结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于

本技术:
所限定的范围。



技术特征:

技术总结
本发明公开了一种锁定BIOS启动项的方法,所述BIOS基于UEFI固件,包括下述步骤:从环境变量获取用户设定的启动类型;所述的环境变量用以指代启动设备的类型;所述启动类型包括,硬盘启动、光盘启动和USB设备启动;然后,根据环境变量判断启动类型是否为硬盘启动;如果是,则枚举系统中的所有硬盘,获取各硬盘的Disk Info Protocol和对应的Device Path Protocol,遍历查找符合锁定条件的硬盘,找到后,建立启动项并调整Boot Order,将新建立的启动项加入链表表头,使用UEFI BIOS通用的启动策略引导操作系统;否则,直接使用UEFI BIOS通用的启动策略引导操作系统。

技术研发人员:孙文健;吴登勇;陈亮甫;孙动
受保护的技术使用者:山东超越数控电子股份有限公司
技术研发日:2018.03.05
技术公布日:2018.08.10
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1