CN107632864B - 一种建立特定排序的UEFI Boot Order的方法 - Google Patents

一种建立特定排序的UEFI Boot Order的方法 Download PDF

Info

Publication number
CN107632864B
CN107632864B CN201710825068.7A CN201710825068A CN107632864B CN 107632864 B CN107632864 B CN 107632864B CN 201710825068 A CN201710825068 A CN 201710825068A CN 107632864 B CN107632864 B CN 107632864B
Authority
CN
China
Prior art keywords
path
sequence
matching
bootorder
uefi
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.)
Active
Application number
CN201710825068.7A
Other languages
English (en)
Other versions
CN107632864A (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.)
Jiangsu Zhuoyi Information Technology Co ltd
Kunshan Byosoft Electronic Technology Co ltd
Nanjing Byosoft Co ltd
Original Assignee
Jiangsu Zhuoyi Information Technology Co ltd
Kunshan Byosoft Electronic Technology Co ltd
Nanjing Byosoft 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 Jiangsu Zhuoyi Information Technology Co ltd, Kunshan Byosoft Electronic Technology Co ltd, Nanjing Byosoft Co ltd filed Critical Jiangsu Zhuoyi Information Technology Co ltd
Priority to CN201710825068.7A priority Critical patent/CN107632864B/zh
Publication of CN107632864A publication Critical patent/CN107632864A/zh
Application granted granted Critical
Publication of CN107632864B publication Critical patent/CN107632864B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开一种建立特定排序的UEFI Boot Order的方法,步骤为:确定UEFIBoot Order特定排序的顺序A、获取保存所有可启动设备的变量BootOrder、把顺序A的顺序作为外部循环条件,把从***表的运行时服务中得到的变量BootOrder作为内部循环条件,进行循环匹配、把BootOrder中的设备按顺序A中的类型顺序排列在临时数组里直至外循环结束、未被匹配到的设备按原顺序放到临时数组尾部。最后把临时数组数据覆盖写入BootOrder变量。本发明相比无特定UEFI BootOrder排序的计算机启动设备选择,目的性更强,可节约时间和人力成本。

Description

一种建立特定排序的UEFI Boot Order的方法
技术领域
本发明属于计算机软件***技术,具体涉及一种建立特定排序的UEFI BootOrder的方法。
背景技术
BIOS即“Basic Input Output System”,中文名称“基本输入输出***”。它是一组固化到计算机主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、***设置信息、开机后自检程序和***加载程序。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
BIOS目前启动模式分为Legacy模式和UEFI模式。Legacy模式只能启动Legacy设备,UEFI模式只能启动UEFI设备。可启动设备可以是一个或者多个,也可能为零。通常可启动设备被以Boot Order的形式呈现,Boot Order里存放当前启动模式下所有的可启动设备。
现有的一些建立Boot Order排序的方法则存在以下缺陷:在用户需要特定的UEFI设备启动顺序时,需启动计算机进setup手动设置boot顺序,或者需要借tool来设置顺序,使用不便。
发明内容
发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种建立特定排序的UEFI Boot Order的方法。
技术方案:本发明一种建立特定排序的UEFI Boot Order的方法,包括如下步骤:
(1)、在UEFI BDS阶段,确定UEFI Boot Order特定排序的顺序A,该顺序A按照用户需求或者BIOS供应商制定的规则来确定,比如A为(1.HDDs,2.CDs,3.FDDs,4.Networks,5.UEFI Shell);
(2)、通过***表system table中的运行时服务runtime service里的GetVariable函数来获取保存所有可启动设备的变量BootOrder;BootOrder中保存的是相应设备号指针序列;
(3)、把顺序A的顺序作为外部循环条件,从其第一个设备类型开始逐一在BootOrder的内部循环里寻找匹配,如果匹配,则把该Boot####放在临时数组里第一们位置,并继续内循环,最后达到把BootOrder中所有类型为顺序A中第一个设备类型的设备,放在临时数组中的前面;
(4)、继续外循环以把BootOrder中的设备按顺序A中的类型顺序排列在临时数组里,直至外循环结束;
(5)、如果外循环结束,Boot Order中还有未被排序的Boot####,刚按当前在BootOrder中的先后顺序,逐一放到临时数组中的最后面;
(6)、把临时数组数据覆盖写入BootOrder变量。
上述步骤(3)中内外循环匹配的方法为:
(3.1)、HDD匹配:在所有文件***中(gEfiSimpleFileSystemProtocolGuid)查找BlockIo设备(gEfiBlockIoProtocolGuid),在结果中得到这些设备的设备路径(EFI_DEVICE_PATH_PROTOCOL),如果设备路径中有硬盘描述结点(HARDDRIVE_DEVICE_PATH),则匹配成功,该设备为HDD。
(3.2)、CD匹配:在所有文件***中(gEfiSimpleFileSystemProtocolGuid)查找BlockIo设备(gEfiBlockIoProtocolGuid),在结果中得到这些设备的设备路径(EFI_DEVICE_PATH_PROTOCOL),如果设备路径中有硬盘描述结点(CDROM_DEVICE_PATH),则匹配成功,该设备为CD。
(3.3)、UEFI Shell匹配:在设备路径中找Type为MEDIA_DEVICE_PATH,SubType为MEDIA_PIWG_FW_FILE_DP,且设备路径的FvFileName为ShellFileGuid,该设备为UEFIShell。
(3.4)、FDD匹配:在设备路径中找Type为ACPI_DEVICE_PATH,SubType为ACPI_DP,且设备路径的HID为0x0604,该设备为FDD。
(3.5)、Network匹配:从设备路径中获取BM_BOOT_TYPE,如果为MessageNetworkBoot,该设备为Network。
上述步骤(3)中若内循环时不匹配,则在内部循环中跳到下一设备,依次逐个比较,直到轮询每一个内部循环设备结束,或者遇到退出循环语句;将会进行外部循环第二个设备的匹配代码。
有益效果:为***提供特定排序的UEFI Boot Order,相比无特定UEFI BootOrder排序的计算机启动设备选择,目的性更强,可节约时间和人力成本。
具体实施方式
下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
本发明一种建立特定排序的UEFI Boot Order的方法,包括如下步骤:
(1)、在UEFI BDS阶段,确定UEFI Boot Order特定排序的顺序A,比如A为(1.HDDs,2.CDs,3.FDDs,4.Networks,5.UEFI Shell);
(2)、获取所有可启动设备所保存在的变量:’BootOrder’;
(3)、把顺序A的顺序作为外部循环条件,从其第一个设备类型开始逐一在BootOrder的内部循环里寻找匹配,如果匹配刚把该Boot####放在临时数组里第一们位置,并继续内循环,最后达到把BootOrder中所有类型为顺序A中第一个设备类型的设备,放在临时数组的前面;
其中,内外循环匹配的方法为:
(3.1)、HDD匹配:在所有文件***中(gEfiSimpleFileSystemProtocolGuid)查找BlockIo设备(gEfiBlockIoProtocolGuid),在结果中得到这些设备的设备路径(EFI_DEVICE_PATH_PROTOCOL),如果设备路径中有硬盘描述结点(HARDDRIVE_DEVICE_PATH),则匹配成功,该设备为HDD。
(3.2)、CD匹配:在所有文件***中(gEfiSimpleFileSystemProtocolGuid)查找BlockIo设备(gEfiBlockIoProtocolGuid),在结果中得到这些设备的设备路径(EFI_DEVICE_PATH_PROTOCOL),如果设备路径中有硬盘描述结点(CDROM_DEVICE_PATH),则匹配成功,该设备为CD。
(3.3)、UEFI Shell匹配:在设备路径中找Type为MEDIA_DEVICE_PATH,SubType为MEDIA_PIWG_FW_FILE_DP,且设备路径的FvFileName为ShellFileGuid,该设备为UEFIShell。
(3.4)、FDD匹配:在设备路径中找Type为ACPI_DEVICE_PATH,SubType为ACPI_DP,且设备路径的HID为0x0604,该设备为FDD。
(3.5)、Network匹配:从设备路径中获取BM_BOOT_TYPE,如果为MessageNetworkBoot,该设备为Network;
(4)、继续外循环以把BootOrder中的设备按顺序A中的类型顺序排列在临时数组里,直至外循环结束;
(5)、如果外循环结束,Boot Order中还有未被排序的Boot####,刚按当前在BootOrder中的先后顺序,逐一放到临时数组最后面;
(6)、把临时数组数据覆盖写入BootOrder变量。
实施例1:
用以上方法编译出的BIOS,在默认为UEFI mode的Setup或者Hotkey Boot Menu中将给用户呈现特定排序的Boot Order。用户可自行更改其Boot顺序。在一些重置***的动作后(Clear CMOS,Load Default或者刷BIOS后第一次启动),会还原该特定排序的BootOrder。

Claims (3)

1.一种建立特定排序的UEFI Boot Order的方法,其特征在于:包括如下步骤:
(1)、在UEFI BDS阶段,确定UEFI Boot Order特定排序的顺序A;
(2)、通过***表system table中的运行时服务runtime service里的GetVariable函数来获取保存所有可启动设备的变量BootOrder;
(3)、把顺序A的顺序作为外部循环条件,从其顺序A中的第一个设备类型开始逐一在BootOrder的内部循环里寻找匹配,如果匹配,则把Boot####放在临时数组里第一位置,并继续内部循环;最后达到把BootOrder中所有类型为顺序A中第一个设备类型的设备,放在临时数组中的最前面;
(4)、继续外循环以把BootOrder中的设备按顺序A中的类型顺序排列在临时数组里,直至外循环结束;
(5)、如果外循环结束,Boot Order中还有未被排序的Boot####,则按当前在BootOrder中的先后顺序,将未被排序的Boot####逐一放到临时数组中的最后面;
(6)、把临时数组数据覆盖写入BootOrder变量。
2.根据权利要求1所述的建立特定排序的UEFI Boot Order的方法,其特征在于:所述步骤(3)中内外循环匹配的方法为:
(3.1)、HDD匹配:在所有文件***中gEfiSimpleFileSystemProtocolGuid查找BlockIo设备gEfiBlockIoProtocolGuid,在结果中得到这些BlockIo设备的设备路径EFI_DEVICE_PATH_PROTOCOL;
如果上述设备路径EFI_DEVICE_PATH_PROTOCOL中有硬盘描述结点HARDDRIVE_DEVICE_PATH,则匹配成功,该设备为HDD;
(3.2)、CD匹配:在所有文件***中gEfiSimpleFileSystemProtocolGuid查找BlockIo设备gEfiBlockIoProtocolGuid,在结果中得到这些设备的设备路径EFI_DEVICE_PATH_PROTOCOL;
如果设备路径EFI_DEVICE_PATH_PROTOCOL中有硬盘描述结点CDROM_DEVICE_PATH,则匹配成功,该设备为CD;
(3.3)、UEFI Shell匹配:在设备路径EFI_DEVICE_PATH_PROTOCOL中找Type为MEDIA_DEVICE_PATH,SubType为MEDIA_PIWG_FW_FILE_DP,且设备路径的FvFileName为ShellFileGuid,该设备为UEFI Shell;
(3.4)、FDD匹配:在设备路径中找Type为ACPI_DEVICE_PATH,SubType为ACPI_DP,且设备路径的HID为0x0604,该设备为FDD;
(3.5)、Network匹配:从设备路径中获取BM_BOOT_TYPE,如果为MessageNetworkBoot,该设备为Network。
3.根据权利要求1所述的建立特定排序的UEFI Boot Order的方法,其特征在于:所述步骤(3)中若内循环时不匹配,则在内部循环中跳到下一设备,依次逐个比较,直到轮询每一个内部循环设备结束,或者遇到退出循环语句;将会进行外部循环第二个设备类型的匹配代码。
CN201710825068.7A 2017-09-14 2017-09-14 一种建立特定排序的UEFI Boot Order的方法 Active CN107632864B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710825068.7A CN107632864B (zh) 2017-09-14 2017-09-14 一种建立特定排序的UEFI Boot Order的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710825068.7A CN107632864B (zh) 2017-09-14 2017-09-14 一种建立特定排序的UEFI Boot Order的方法

Publications (2)

Publication Number Publication Date
CN107632864A CN107632864A (zh) 2018-01-26
CN107632864B true CN107632864B (zh) 2020-04-17

Family

ID=61101472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710825068.7A Active CN107632864B (zh) 2017-09-14 2017-09-14 一种建立特定排序的UEFI Boot Order的方法

Country Status (1)

Country Link
CN (1) CN107632864B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108388452A (zh) * 2018-03-05 2018-08-10 山东超越数控电子股份有限公司 一种锁定bios启动项的方法
CN110018856A (zh) * 2019-04-03 2019-07-16 中电科技(北京)有限公司 动态修改uefi启动顺序的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999362A (zh) * 2012-12-04 2013-03-27 浪潮电子信息产业股份有限公司 一种修改bios启动项顺序的方法
CN105607911A (zh) * 2015-12-25 2016-05-25 浪潮电子信息产业股份有限公司 一种实现根据不同配置信息自动调整硬盘启动设备的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162629B2 (en) * 2003-11-20 2007-01-09 Intel Corporation Method to suspend-and-resume across various operational environment contexts
TW201506788A (zh) * 2013-05-01 2015-02-16 Insyde Software Corp 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全啓動覆蓋技術

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999362A (zh) * 2012-12-04 2013-03-27 浪潮电子信息产业股份有限公司 一种修改bios启动项顺序的方法
CN105607911A (zh) * 2015-12-25 2016-05-25 浪潮电子信息产业股份有限公司 一种实现根据不同配置信息自动调整硬盘启动设备的方法

Also Published As

Publication number Publication date
CN107632864A (zh) 2018-01-26

Similar Documents

Publication Publication Date Title
CN108255653B (zh) 一种产品的测试方法及其终端
CN105653630B (zh) 分布式数据库的数据迁移方法与装置
CN104932926B (zh) 智能操作***平台中实现设备与驱动动态匹配的***及方法
CN107203465B (zh) ***接口测试方法及装置
US9928059B1 (en) Automated deployment of a multi-version application in a network-based computing environment
CN110830234B (zh) 一种用户流量分配方法及装置
CN112099800B (zh) 代码数据的处理方法、装置和服务器
CN110737594B (zh) 自动生成测试用例的数据库标准符合性测试方法及装置
WO2016026328A1 (zh) 一种信息处理方法、装置及计算机存储介质
CN111538659B (zh) 业务场景的接口测试方法、***、电子设备和存储介质
CN110287696A (zh) 一种反弹shell进程的检测方法、装置和设备
CN107247665B (zh) 一种c接口函数的测试方法及***
CN110516789A (zh) 卷积网络加速器中指令集的处理方法、装置及相关设备
CN107632864B (zh) 一种建立特定排序的UEFI Boot Order的方法
US20130080751A1 (en) Method and device for updating bios program for computer system
CN110135163B (zh) 一种基于目标应用的安全检测方法、装置及***
RU2011144841A (ru) Захват и загрузка состояний операционной системы
CN107153561A (zh) 一种更新扩展卡中固件的方法、装置及***
CN109359093A (zh) 一种规则文件更新方法和***
CN110896359A (zh) 多网卡排序的方法及***
CN110362430A (zh) 一种服务器的自动重启的方法、***及存储介质
CN113742156B (zh) 联调方法、装置、电子设备及存储介质
CN102902554B (zh) 一种龙芯平台的linux操作***安装方法
TWI758026B (zh) 基本輸入輸出系統功能的設定方法
CN113779918A (zh) SoC仿真方法、装置、计算设备和计算机存储介质

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
CB02 Change of applicant information

Address after: 210061 11/F, Block A, Chuangzhi Building, 17 Xinghuo Road, Nanjing High-tech Zone, Jiangsu Province

Applicant after: NANJING BYOSOFT CO., LTD.

Applicant after: JIANGSU ZHUOYI INFORMATION TECHNOLOGY CO., LTD.

Applicant after: Kunshan one hundred Ao Electronic Technology Co., Ltd.

Address before: 210000 10 Floor, Block B, Software Building 9 Xinghuo Road, Pukou District, Nanjing City, Jiangsu Province

Applicant before: NANJING BYOSOFT CO., LTD.

Applicant before: JIANGSU ZHUOYI INFORMATION TECHNOLOGY CO., LTD.

Applicant before: Kunshan one hundred Ao Electronic Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant