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

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

Info

Publication number
CN107632864A
CN107632864A CN201710825068.7A CN201710825068A CN107632864A CN 107632864 A CN107632864 A CN 107632864A CN 201710825068 A CN201710825068 A CN 201710825068A CN 107632864 A CN107632864 A CN 107632864A
Authority
CN
China
Prior art keywords
path
equipment
order
boot
bootorder
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
Application number
CN201710825068.7A
Other languages
English (en)
Other versions
CN107632864B (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 One Hundred Ao Electronic Technology Co Ltd
NANJING BYOSOFT CO Ltd
Original Assignee
Jiangsu Zhuoyi Information Technology Co Ltd
Kunshan One Hundred Ao 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 One Hundred Ao 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 true CN107632864A (zh) 2018-01-26
CN107632864B 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)

Cited By (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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114645A1 (en) * 2003-11-20 2005-05-26 Zimmer Vincent J. Method to suspend-and-resume across various operational environment contexts
CN102999362A (zh) * 2012-12-04 2013-03-27 浪潮电子信息产业股份有限公司 一种修改bios启动项顺序的方法
US20140331037A1 (en) * 2013-05-01 2014-11-06 Insyde Software Corp. Secure boot override in a computing device equipped with unified-extensible firmware interface (uefi)-compliant firmware
CN105607911A (zh) * 2015-12-25 2016-05-25 浪潮电子信息产业股份有限公司 一种实现根据不同配置信息自动调整硬盘启动设备的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114645A1 (en) * 2003-11-20 2005-05-26 Zimmer Vincent J. Method to suspend-and-resume across various operational environment contexts
CN102999362A (zh) * 2012-12-04 2013-03-27 浪潮电子信息产业股份有限公司 一种修改bios启动项顺序的方法
US20140331037A1 (en) * 2013-05-01 2014-11-06 Insyde Software Corp. Secure boot override in a computing device equipped with unified-extensible firmware interface (uefi)-compliant firmware
CN105607911A (zh) * 2015-12-25 2016-05-25 浪潮电子信息产业股份有限公司 一种实现根据不同配置信息自动调整硬盘启动设备的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王红军等: "《现用现查 电脑BIOS/注册表设置实战秘籍》", 30 September 2015, 北京:中国铁道出版社 *

Cited By (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启动顺序的方法

Also Published As

Publication number Publication date
CN107632864B (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
US9558016B2 (en) Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product
US8984174B2 (en) Method and a portable computing device (PCD) for exposing a peripheral component interface express (PCIE) coupled device to an operating system operable on the PCD
JPS5840235B2 (ja) カヘンケイジヨウカイケイキ
CN109542410A (zh) 规则引擎系统、方法、设备及存储介质
CN104932922A (zh) 一种调整sas卡硬盘启动顺序的方法及装置
CN101894028A (zh) Linux内核镜像数据支持多种CPU的实现方法及装置
CN107632864A (zh) 一种建立特定排序的UEFI Boot Order的方法
CN107704271A (zh) 一种基于Insyde BIOS的BIOS更改方法及系统
CN104731614A (zh) 一种在开机过程中快速加载数据的方法及装置
CN110399168B (zh) 多数据盘存储服务器的系统启动方法、装置及设备
CN102317927B (zh) 设备动态添加处理方法、装置及动态移除处理方法、装置
CN112286638A (zh) 一种Openstack虚拟机CPU与内存热插拔的实现方法
CN110008382B (zh) 一种确定TopN数据的方法、系统及设备
CN111381905B (zh) 一种程序处理方法、装置及设备
WO2020000957A1 (zh) 一种单主板多版本程序适配方法、系统、装置及存储介质
CN111240707A (zh) 一种通过pxe网络灌装存储系统的方法和装置
CN104572638A (zh) 数据读写方法及装置
CN109669905A (zh) 一种pcie设备的热移除方法、系统及相关装置
US12032584B2 (en) Data management method and system for a security protection terminal, device and storage medium
CN112052040A (zh) 处理方法、装置、计算机设备和存储介质
US20100277825A1 (en) Hard disk access method
CN112506574A (zh) ARM服务器中基于CentOS带内修改BIOS配置选项的方法
US10572671B2 (en) Checking method, checking system and checking device for processor security
CN111694600A (zh) 镜像文件的设计、芯片的运行方法、系统、设备和介质
CN104820574A (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
CB02 Change of applicant information
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.

GR01 Patent grant
GR01 Patent grant