统一可扩展固件接口驱动器的制造方法

文档序号:6624253阅读:273来源:国知局
统一可扩展固件接口驱动器的制造方法
【专利摘要】加载和运行不依赖设备并且系统无关的统一可扩展固件接口(UEFI)驱动器,该UEFI驱动器被配置为过滤用于存储设备的输入/输出(I/O)而不需要取决于外围部件互连(PCI)类型设备和/或修改系统UEFI基本输入/输出系统(BIOS),从而使能支持操作系统(OS)的引导的纯软件产品。
【专利说明】统一可扩展固件接口驱动器
[0001]相关申请的交叉引用
[0002]本申请要求于2013年8月29日在美国专利与商标局提交的美国临时申请第61/871,618号的权益,其公开内容通过引用全面合并于此。

【技术领域】
[0003]与示例性实施例一致的方法和程序涉及一种统一可扩展固件接口(UnifiedExtensible Firmware Interface, UEFI),并且更具体地,涉及加载和运行不依赖设备并且系统无关的UEFI驱动器,该UEFI驱动器被配置为过滤用于存储设备的输入/输出(I/O)而不需要取决于外围部件互连(PCI)类型设备和/或修改系统UEFI基本输入/输出系统(B1S),从而使能支持操作系统(OS)的引导的纯软件产品。

【背景技术】
[0004]通常,存在用于在UEFI环境中加载UEFI驱动器的两种方法。
[0005]在第一方法中,PCI设备采用存在于PCI设备上的ROM/闪存存储器中的选项-只读存储器(选项-ROM) UEFI驱动器。选项-ROM UEFI驱动器为PCI设备制造商专有,可以闪存化为PCI设备R0M,并且不能由第三方软件修改。
[0006]此选项-ROM UEFI驱动器的目的是在OS运行前(pre-OS)环境期间访问PCI设备和它的子设备。例如,基于PCI的存储控制器和连接到基于PCI的存储控制器的盘由使用UEFI驱动器B1S的系统UEFI B1S访问。因此,PCI设备需要选项-R0MB10S来引导OS。PCI设备加载选项-R0MB10S的这个需要使得诸如“回写高速缓存”软件或RAID软件之类的纯软件产品不可能支持引导OS,因为这些软件只能在OS加载期间作为OS驱动器被加载。
[0007]在第二方法中,将被加载到系统中的UEFI驱动器可以保存在UEFI B1S非易失性随机存取存储器(NVRAM)中,并且系统UEFI B1S可以在开始引导过程期间加载UEFI驱动器。这个NVRAM区域不能由第三方软件开发者使用,因为每个系统制造商具有他自己的专有格式。因此,试图写入此NVRAM的第三方软件可能造成系统无法修复的损害,并且修改UEFI驱动器使仅可以由系统制造商执行的系统B1S修改成为必需。


【发明内容】

[0008]示例性实施例的方面提供一种用于实现存储用于不依赖设备并且系统无关的UEFI驱动器的程序的计算机可读介质的方法。
[0009]根据示例性实施例的一方面,提供一种加载定制的统一可扩展固件接口(UEFI)驱动器的方法,所述方法包括:计算机处理器将存储在第一位置处的原始的可扩展固件接口(EFI)引导应用复制到第二位置,利用定制的EFI引导应用替换第一位置处的原始EFI引导应用,将第三位置处的原始全局唯一标识符(⑶ID)分区表(GPT)复制到第四位置,以及利用定制的GPT替换第三位置处的原始GPT。
[0010]定制的GPT可以包括指向EFI系统分区(ESP)的ESP分区入口,该ESP包括定制的EFI弓I导应用,并且该定制的EFI弓I导应用可以被配置为致使安装用于具有入口点的ESP的块输入/输出(I/O)协议,用于原始的GPT的操作系统(OS)分区的I/O通过该入口点被过滤。
[0011]所述定制的GPT可以省略OS分区入口。
[0012]所述定制的EFI引导应用还可以被配置为一旦安装了用于ESP的块I/O协议就致使运行原始的EFI引导应用。
[0013]该原始的EFI引导应用可以加载OS。
[0014]该原始的EFI引导应用可以被配置为致使安装用于原始的GPT中的OS分区入口的块I/o协议。
[0015]根据示例性实施例的一方面,提供一种在其上具体实现了定制的统一可扩展固件接口(UEFI)驱动器的计算机可读记录介质,该定制的UEFI驱动器包括计算机可读代码,该计算机可读代码被配置为致使计算机处理器将存储在第一位置处的原始的可扩展固件接口(EFI)引导应用复制到第二位置,利用定制的EFI引导应用替换第一位置处的原始EFI引导应用,将第三位置处的原始全局唯一标识符(GWD)分区表(GPT)复制到第四位置,以及利用定制的GPT替换第三位置处的原始GPT。
[0016]根据示例性实施例的一方面,提供一种在其上具体实现了定制的统一可扩展固件接口(UEFI)驱动器的计算机可读记录介质,所述定制的UEFI驱动器包括定制的全局唯一标识符(GUID)分区表(GPT)和定制的EFI引导应用,该定制的GPT指向存储定制的EFI引导应用的EFI系统分区(ESP),并且该定制的EFI弓I导应用被配置为安装用于具有入口点的ESP的块输入/输出(I/O)协议,用于操作系统(OS)分区的I/O通过该入口点被过滤。

【专利附图】

【附图说明】
[0017]从以下结合附图对示例性实施例的描述,示例性实施例的以上及其他方面将变得清楚和更加容易理解。附图中:
[0018]图1示出根据示例性实施例的用于加载和运行UEFI驱动器的方法的流程图。
[0019]图2示出根据示例性实施例的执行“回写高速缓存”的方法的流程图。

【具体实施方式】
[0020]下文中,参考附图详细描述本发明构思的示例性实施例。
[0021]在以下描述中,即使在不同的附图中,相同的附图标记也用于相同的元素。提供描述中定义的主题,如具体的构造和元件,是为了帮助综合理解示例性实施例。然而,能够在没有那些具体定义的细节的情况下实施本发明构思。此外,不详细描述公知的功能或构造,因为他们将以不必要的细节模糊本发明。
[0022]除非另有陈述,否则如下所述的方法的操作可以以任一次序执行。可替换地,操作可以同时执行。
[0023]图1示出用于加载和运行UEFI驱动器以过滤用于存储设备的I/O而不需要取决于PCI设备和/或修改系统UEFI B1S的方法的流程图。通过加载定制的UEFI驱动器而无需PCI设备或系统UEFI B1S修改使能用于支持引导OS的纯软件产品。
[0024]图1的方法可以通过软件应用或模块的运行来执行以加载UEFI驱动器,该软件应用或模块在计算机系统上运行。
[0025]当从储存器盘引导UEFI系统时,系统UEFI B1S加载总是存在于引导盘的扇区O处的盘的主引导记录(MBR)。如果MBR指示其是全局唯一标识符(⑶ID)分区表(GPT)盘,则系统B1S读取GPT、列数盘上的分区、以及安装用于每个分区的块输入/输出(I/O)协议。块I/O协议是访问盘上的分区的接口。没有块I/O协议,不能访问盘上的分区。
[0026]一旦块I/O协议被安装用于每个分区,系统UEFI B1S就寻找包含OS引导管理器的EFI系统分区(ESP)(例如,对于微软视窗,bootx64.efi是位于...efi\microsoft\boot\bootmgfw.efi的微软视窗引导管理器的副本)。系统UEFI B1S使用块I/O协议访问ESP,将OS引导管理器加载到存储器中并且向OS引导管理器传送控制,该OS引导管理器使用块I/O协议来访问OS分区(例如C:)并且加载OS加载器(例如,对于微软视窗,winload,efi),该OS加载器继续加载和运行其余OS (例如,微软视窗)。
[0027]根据图1中示出的示例性实施例,定制的OS引导管理器可以被提供,并且原始的OS引导管理器可以保存到存储器中。OS引导管理器将被称为EFI引导应用。
[0028]根据图1中示出的示例性实施例,还可以提供定制GPT。原始的GPT可以被修改为仅保留ESP分区入口,并且全部其他分区入口可以从GPT除去,以获得定制GPT。选择性地,OS引导不需要的、与分区有关的入口也可以保留在定制GPT中。例如,OS引导不需要的分区可以是恢复或备份分区。原始的GPT可以朝向盘的末端保存。
[0029]如图1中示出的,在步骤S105中,当前EFI引导应用被保存到存储器,从而创建EFI引导应用的副本。在微软视窗OS中,EFI引导应用可以是bootx64.efi或bootmgfw.efi。
[0030]在步骤SllO中,当前EFI引导应用被替换为定制的EFI引导应用。当前EFI引导应用可以通过利用定制的EFI引导应用重写当前的EFI引导应用来替换,或通过编辑当前的EFI引导应用来替换。当被运行时,定制的EFI引导应用可以取得存储在存储器中的原始的GPT并且使用可以过滤1/0的定制入口点安装除ESP分区入口之外的、用于GPT中的全部有效分区入口(例如,C:)的块1/0协议。定制的EFI引导应用可以包括需要加载用于定制块1/0协议的UEFI驱动器入口点。一旦加载了用于全部有效分区入口的块1/0协议,定制的EFI引导应用就可以从存储器取得原始的EFI引导应用,加载原始的EFI引导应用,并且向原始的EFI引导应用传送控制以用于加载OS。
[0031]在步骤S115中,GPT保存到存储器,从而创建GPT的副本。原始的副本可以朝向盘的末端保存。
[0032]在步骤S120中,从GPT中除去除了 ESP入口之外的全部GPT入口。选择性地,除了 ESP入口以外,OS引导不需要的、与分区有关的入口也可以保留在GPT中。因此,修改后的GPT可以构成定制GPT。
[0033]此时,UEFI驱动器被加载,并且系统准备好运行新的UEFI驱动器。
[0034]在起动或重新引导期间,在步骤S125中,UEFI系统从GPT盘引导。
[0035]在步骤S130中,当从储存器盘引导UEFI系统时,系统UEFI B1S加载总是存在于引导盘的第一扇区(即,扇区0)处的盘的MBR。
[0036]如果MBR指示该盘是GPT盘,则在步骤S135中系统B1S选择性地加载非设备(non-device)的 UEFI 驱动器。
[0037]在步骤S140中,系统B1S开始安装用于盘的分区的块1/0协议。
[0038]在步骤S145中,系统B1S读取作为步骤S120的定制的GPT的GPT,并且列数通过GPT指示的盘上的分区,该分区可以仅是在步骤S120的定制GPT中的ESP分区入口。如上面讨论的,对OS引导不必要的其他分区入口可以被保留,诸如备份或恢复分区,并且因此这种分区入口也可以在步骤S145中读取。
[0039]在步骤S150中,系统UEFI B1S安装用于读取分区的块I/O协议,即用于ESP分区的块I/o协议。再次,对OS引导不必要的其他分区入口可以被保留,诸如备份或恢复分区,并且因此用于这种分区入口的块I/O协议也可以在步骤S150中安装。
[0040]在步骤S155中,系统B1S使用安装的块I/O协议从ESP分区读取EFI引导管理器。EFI引导管理器是步骤SllO的定制EFI引导管理器。
[0041]在步骤S160中,系统B1S向EFI引导管理器传送控制。
[0042]如上所述,块I/O协议是用于访问盘上的分区的接口,没有该块I/O协议不能访问盘上的分区。因为从定制的GPT省略除了 ESP分区入口之外的分区入口,所以块I/O协议仅被安装用于ESP分区。因此,在这一点上,盘显得原始而没有其他有效分区。
[0043]在步骤S165中,EFI引导应用取得原始的GPT,该GPT保存在仅为步骤SI 15中的定制EFI引导应用所知的位置处。
[0044]在步骤S170中,EFI引导应用读取原始的GPT的分区入口,并且利用定制入口点来安装块I/o协议以用于相应于除了已经预先加载的ESP之外的分区(例如,类似C:的OS分区)的每个有效分区入口。因为没有安装用于这些分区的块I/O协议,所以直到现在这些新的加载分区对系统UEFI B1S或任一其他UEFI应用是不可见的。
[0045]在此点之后,因为随后安装用于每个分区(OS分区,例如C:\)的块1/0协议,所以指向这些分区的全部I/o经过用于步骤S150中加载的ESP的块1/0协议,该ESP包括定制入口点。这使能过滤用于这些新加载的分区的1/0。
[0046]在步骤S175中,一旦块1/0协议对于原始的GPT中的全部剩余有效分区被安装,EFI引导应用就从存储器加载原始的EFI引导管理器,并且向加载OS加载器的原始的EFI引导管理器传送控制。OS加载器在步骤S180中继续加载和运行OS。
[0047]现在可以过滤用于块1/0协议安装用于的OS分区的全部1/0,以及其他分区。
[0048]图2示出根据示例性实施例的、用于使用UEFI驱动器执行“回写高速缓存”的方法。
[0049]根据示例性实施例的一方面,UEFI驱动器的使用可以是“回写高速缓存”纯软件产品。这种软件需要存在于OS运行前UEFI环境中以用于支持引导OS,因为一些数据可以存在于高速缓存器件上而且可以不存在于目标储存器盘(正在高速缓存的盘)上。
[0050]传统方法采用基于PCI的存储控制器,在其上已经安装了选项ROM UEFI。因为使用UEFI驱动器执行全部1/0,所以基于PCI的存储控制器可以每当需要时将1/0重新指向高速缓存器件。但是,这需要高速缓存逻辑在基于PCI的存储控制器的UEFI驱动器之内,这对于第三方软件是不可能的。
[0051]另一方面,根据示例性实施例的方面,通过使用加载到存储器中的单独的UEFI驱动器/应用,该I/o可以被过滤而无需修改专有的UEFI驱动器或系统UEFI B1S。
[0052]根据示例性实施例的方面,此方法也在过滤用于任一 PCI设备及其子设备的1/0方面占优势,而驻留在PCI器件上的UEFI驱动器可以仅访问指向特定PCI设备及其子设备的I/o。示例性实施例的方面对于像通过允许相关的储存器盘(例如,目标盘和高速缓存盘)在不同的存储控制器上的“回写高速缓存”、“软件RAID”和“整盘加密”的纯软件产品更富有吸引力。
[0053]在“回写高速缓存”的情况下,此方法可以进一步用于几乎完全地从高速缓存盘引导,从而除非绝对地需要,减轻目标储存器盘的旋转(spin)。在图2中示出“回写高速缓存”的方法。
[0054]在步骤S210中,目标盘的GPT的副本保存在与目标盘相同的高速缓存盘上的位置处。高速缓存盘可以是高速盘,诸如固态盘(SSD)。
[0055]在步骤S220中,除去目标储存器盘上的GPT的全部分区。
[0056]在步骤S230中,将ESP分区从目标盘复制到高速缓存盘。
[0057]在步骤S240中,将高速缓存盘设置为可引导盘。
[0058]在步骤S250中,如上相对于图1所述,原始的EFI引导应用被保存在高速缓存盘上,并且高速缓存盘上的原始的EFI引导应用被替换为定制的EFI应用。
[0059]根据此示例性实施例的方面,系统可以从高速缓存SSD(而不是目标盘)引导,从高速缓存盘上的ESP加载定制EFI弓I导应用,在建立块I/O协议之后该高速缓存盘上的ESP加载原始的EFI引导应用,但是这次是从高速缓存盘自己。因此,避免目标盘的旋转直到在高速缓存盘上存在读取错误。
[0060]类似方法可以被用于从类似休眠的睡眠状态重新开始(resume)。
[0061]根据示例性实施例的方面,此方法提供与全部OS安装在高速缓存盘上的情况几乎相同的引导和从休眠重新开始的速度。
[0062]根据示例性实施例的方面,描述了加载定制UEFI驱动器而无需PCI器件或系统UEFI B1S修改的新方法。从而,使用支持引导和从休眠重新开始的UEFI的纯软件产品是可能的。
[0063]根据示例性实施例的方面,UEFI驱动器可以被加载而无需PCI设备依赖,并且UEFI驱动器可以被加载而无需系统B1S修改。
[0064]上述讨论到的方法的操作可以通过运行存储在计算机可读记录介质(例如,盘、存储器、光盘等等)上的计算机可读代码的计算机处理器(例如,中央处理单元、CPU)实现。计算机处理器可以是计算机的通用处理器、计算机的专用处理器、或存储控制器的处理器。计算机可读代码可以包括用于将UEFI驱动器加载到存储器的安装程序,并且可以包括加载到存储器的UEFI驱动器,当引导计算机时由计算机处理器运行该UEFI驱动器。
[0065]尽管已经示出和描述了若干示例性实施例,但本领域技术人员将会理解,可以改变这些示例性实施例而不偏离本发明构思的原理和精神,本发明构思的范围在权利要求及其等效物中限定。
【权利要求】
1.一种通过计算机处理器加载定制的统一可扩展固件接口(UEFI)驱动器的方法,所述方法包括: 将存储在第一位置处的原始的可扩展固件接口(EFI)引导应用复制到第二位置; 利用定制的EFI引导应用替换第一位置处的原始的EFI引导应用; 将存储在第三位置处的原始的全局唯一标识符(⑶ID)分区表(GPT)复制到第四位置;以及 利用定制的GPT替换第三位置处的原始的GPT。
2.如权利要求1所述的方法,其中所述定制的GPT包括指向EFI系统分区(ESP)的ESP分区入口,该ESP包括定制的EFI引导应用,以及 其中所述定制的EFI引导应用被配置为致使安装用于具有入口点的ESP的块输入/输出(I/O)协议,通过该入口点过滤用于原始的GPT的操作系统(OS)分区的I/O。
3.如权利要求2所述的方法,其中所述定制的GPT省略OS分区入口。
4.如权利要求2所述的方法,其中所述定制的EFI引导应用进一步被配置为一旦安装了用于ESP的块I/O协议,就致使运行原始的EFI引导应用。
5.如权利要求4所述的方法,其中所述原始的EFI引导应用加载OS。
6.如权利要求4所述的方法,其中所述原始的EFI引导应用被配置为致使安装用于原始的GPT中的OS分区入口的块I/O协议。
7.一种加载定制的统一可扩展固件接口(UEFI)驱动器的计算机处理器方法,所述方法包括: 将存储在第一位置处的原始的可扩展固件接口(EFI)引导应用复制到第二位置; 利用定制的EFI引导应用替换第一位置处的原始的EFI引导应用; 将存储在第三位置处的原始的全局唯一标识符(⑶ID)分区表(GPT)复制到第四位置;以及 利用定制的GPT替换第三位置处的原始的GPT。
8.如权利要求7所述的方法,其中所述定制的GPT包括指向EFI系统分区(ESP)的ESP分区入口,该ESP包括定制的EFI引导应用,以及 其中所述定制的EFI引导应用被配置为致使安装用于具有入口点的ESP的块输入/输出(I/O)协议,通过该入口点过滤用于原始的GPT的操作系统(OS)分区的I/O。
9.如权利要求8所述的方法,其中所述定制的GPT省略OS分区入口。
10.如权利要求8所述的方法,其中所述定制的EFI引导应用进一步被配置为一旦安装了用于ESP的块I/O协议,就致使运行原始的EFI引导应用。
11.如权利要求10所述的方法,其中所述原始的EFI引导应用加载OS。
12.如权利要求10所述的方法,其中所述原始的EFI引导应用被配置为致使安装用于原始的GPT中的OS分区入口的块I/O协议。
13.一种定制的统一可扩展固件接口(UEFI)驱动器,所述定制的UEFI驱动器包括: 定制的全局唯一标识符(GUID)分区表(GPT);以及 定制的可扩展固件接口(EFI)引导应用, 其中所述定制的GPT指向存储定制的EFI引导应用的EFI系统分区(ESP),以及 其中所述定制的EFI引导应用被配置为致使安装用于具有入口点的ESP的块输入/输出(I/o)协议,通过该入口点过滤用于原始的GPT的操作系统(OS)分区的I/O。
14.如权利要求13所述的定制的UEFI驱动器,其中所述定制的GPT包括指向EFI系统分区(ESP)的ESP分区入口。
15.如权利要求14所述的定制的UEFI驱动器,其中所述定制的GPT省略OS分区入口。
16.如权利要求14所述的定制的UEFI驱动器,其中所述定制的EFI引导应用进一步被配置为一旦安装了用于ESP的块I/O协议,就致使运行原始的EFI引导应用。
17.如权利要求16所述的定制的UEFI驱动器,其中所述原始的EFI引导应用加载OS。
18.如权利要求16所述的定制的UEFI驱动器,其中所述原始的EFI引导应用被配置为致使安装用于原始的GPT中的OS分区入口的块I/O协议。
【文档编号】G06F13/20GK104424140SQ201410415065
【公开日】2015年3月18日 申请日期:2014年8月21日 优先权日:2013年8月29日
【发明者】P.比什特 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1