CN02825773.1
2002.12.17
CN1606731A
2005.04.13
终止
无权
未缴年费专利权终止IPC(主分类):G06F 9/445申请日:20021217授权公告日:20071205终止日期:20141217|||授权|||实质审查的生效|||公开
G06F9/445
英特尔公司;
沙曼娜·达塔; 柯克·布伦诺克; 文森特·齐默
美国加利福尼亚州
2001.12.20 US 10/032,141
北京东方亿思知识产权代理有限责任公司
王怡
本发明公开了一种引导例程。通过引导位于第一可寻址位置处的卷顶文件(VTF),并且由该卷顶文件引导一组固件模块,可在计算机中初始化所述引导例程,其中,初始化所述引导例程时可访问所述第一可寻址位置。
1. 一种方法,包括:初始化计算机中的引导例程;引导一个卷顶文件,该卷顶文件位于在初始化所述引导例程时可访问的第一可寻址位置处;并且所述卷顶文件引导一组固件模块。2. 如权利要求1所述的方法,还包括使用所述卷顶文件来定位一个调度器模块。3. 如权利要求2所述的方法,还包括使用所述调度器模块来访问所述的固件模块组。4. 如权利要求3所述的方法,其中,所述固件模块组初始化所述计算机。5. 如权利要求1所述的方法,还包括使用重置向量来访问所述卷顶文件。6. 如权利要求1所述的方法,其中,所述卷顶文件包括所述固件模块组的地址。7. 如权利要求1所述的方法,其中,所述卷顶文件包括第一固件模块的基的地址。 8. 如权利要求7所述的方法,其中,所述第一固件模块的基包括一个引导固件卷基。9. 如权利要求1所述的方法,其中,所述卷顶文件包括认证单元。10. 如权利要求1所述的方法,其中,所述卷顶文件验证所述固件模块组。11. 如权利要求1所述的方法,还包括将所述卷顶文件指定为所述固件模块组中的最后一个文件。12. 如权利要求11所述的方法,其中,所述的指定操作包括将所述卷顶文件的末端与存储器边界对齐。13. 如权利要求11所述的方法,其中,所述存储器边界包括存储器的4吉字节和10吉字节之间的值。14. 一种系统,包括:计算机的非易失存储器,其初始化所述计算机中的引导例程;所述计算机的处理体系结构,其被配置来引导一个卷顶文件,该卷顶文件位于在初始化所述引导例程时可访问的第一可寻址位置处;和所述卷顶文件,其被配置来引导一组固件模块。15. 如权利要求14所述的系统,其中,所述卷顶文件被配置来定位一个调度器模块。16. 如权利要求14所述的系统,其中所述调度器模块被配置来访问所述固件模块组。17. 如权利要求14所述的系统,其中,所述固件模块组被配置来初始化所述计算机。18. 如权利要求14所述的系统,其中,所述卷顶文件包括所述固件模块组的地址。19. 如权利要求14所述的系统,其中,所述卷顶文件包括第一固件模块的基的地址。20. 一种装置,包括:处理器;非易失存储器,其中存储有:位于所述非易失存储器的第一可寻址位置处的卷顶文件,所述第一可寻址位置由计算机的中央处理单元进行访问,使用重置向量可访问所述卷顶文件;与第一固件模块相关联的数据结构;和所述卷顶文件可访问的第二固件模块。21. 如权利要求20所述的装置,其中,所述第一固件模块包括一个与众不同的固件模块。22. 如权利要求20所述的装置,还包括由所述卷顶文件来定位的调度器模块。23. 如权利要求20所述的装置,其中,所述固件模块组包括一个初始化例程,用于初始化所述计算机。24. 如权利要求20所述的装置,其中,所述卷顶文件包括所述第二固件模块的基的地址。25. 如权利要求24所述的装置,其中,所述第二固件模块的基包括一个引导固件卷基。26. 如权利要求20所述的装置,其中,所述卷顶文件包括认证单元。27. 如权利要求20所述的装置,其中,所述卷顶文件验证所述第二固件模块。
引导过程 技术领域 本发明涉及引导(boot/bootstrap)过程。 背景技术 典型的计算机系统都有一个基本输入输出(BIOS)程序,用于启动计算机,以及管理操作系统(OS)与各种类型的附属设备(例如,硬盘、键盘、鼠标、打印机)之间的数据流。BIOS对于计算机的处理单元而言是可访问的,例如,BIOS可位于可擦除可编程的只读存储芯片上。当BIOS启动(起动)计算机时,它确定各个附属设备是否就位并处于工作状态,然后,它将操作系统(或其主要部分)从硬盘载入计算机的随机访问存储器(RAM)。当附属设备的情况发生变化时,BIOS程序也需要改变,或者在计算机系统设置(setup)期间改变,或者手动改变。 图1是计算机系统的框图。 图2是图1中计算机系统的引导系统的框图。 图3是图2中引导系统的引导过程的流程图。 总的来说,在一个方面,本发明的特征在于一个引导例程,要想在计算机中初始化该引导例程,就要引导一个卷顶文件(VTF,volume topfile),并且该卷顶文件引导一组固件模块,其中所述VTF位于初始化所述引导例程时可访问的第一可寻址位置上。 参考图1,计算机10的一个例子包括一个或多个处理器23(1)-23(n)(统称为处理器23),这些处理器通过处理器总线16耦合到系统逻辑14。系统存储器18通过存储器总线20耦合到系统逻辑14。系统存储器18用于存储操作系统(OS)堆栈22和应用程序24。外围总线30将非易失存储器26和一个或多个外围设备28(1)-28(m)(统称为外围设备28)连接到系统逻辑14。外围设备28例如包括I/O设备32,其为用户36提供图形用户接口(GUI)34。 计算平台38代表底层的计算机系统,在其上可以运行应用程序24。计算平台38由外围设备28和系统逻辑14形成。在引导过程中,计算机10将OS堆栈22载入系统存储器18或非易失存储器26。一旦OS堆栈22被载入,则计算机10已准备好让用户来运行应用程序24。 参考图2,非易失存储器26具有固件系统40。固件系统40包括重置向量51、VTF文件42和固件卷88。 重置向量51是非易失存储器26中的可寻址位置,其包括在处理器被重置后将由处理器执行的第一条指令。处理器体系结构固定了重置向量51的可寻址位置。 VTF文件42使得处理器23可以正确地引导固件卷88,而固件卷88接下来又会引导计算机10的操作系统(OS)。VTF文件42可保证以下这种机制,即在固件卷88中定位并访问正确的代码和指针。 VTF文件42的可寻址位置的地址已被处理器体系结构固定,与它们不同的是,VTF文件42中的代码和指针不具有体系结构指定的位置。 固件卷88包括固件模块44(a)-44(b)和调度器(dispatcher)模块46。固件模块44(a)-44(b)包括例程单元64和数据结构66,并起到核心代码和专用插件(plug-in)系统的作用,这一插件系统实现了固件系统40对于计算平台38的个人化。调度器模块46用于标识固件模块44(a)-44(b)的存储位置或地址,并按照“可预测的有用顺序”,即非随机的顺序来执行固件模块44(a)-44(b)。 固件系统40还包括非易失存储器的可用(即,未使用的)单元26a。在所述非易失存储器中,固件模块44(a)-44(b)与调度器模块46的可寻址位置的顺序并不是预先固定的。每个模块或调度器都可以位于存储器26中的任意位置,而这些位置根据计算机的不同而不同。VTF文件42包括若干“桥”,这些桥位于由处理器23在体系结构上指定的代码和未由处理器23在体系结构上指定的平台代码之间。 VTF文件42提供了一种机制,即定位处理器体系结构所需的固定位置上的代码和数据,并引导驻留于固件卷88内的其它固件模块44(a)-44(b)。 向数据结构66提供一个标签,该标签由标识符单元68分配用来在系统存储器18中标识数据结构66(例如,带标记的),使得该数据结构可被另一个固件模块例如固件模块44(b)识别并验证。数据结构66包括多个存储位置,这些存储位置存储用来指向固件系统40的各个组件的值。例如,存储在数据结构66的多个存储位置中的值允许来自固件模块44(a)的例程访问固件模块44(b)中的例程。VTF文件42包括访问固件系统40的基的已知信息,该信息随后可被固件模块44(a)-44(b)用来发布一组通用的访问服务,以发现附加的卷。所述多个存储位置也可以存储指向调度器模块46以及其它类型的地址的指针。用于确定所述多个存储位置的值根据平台和厂商类型的不同而不同。例如,一个服务器厂商可能具有更大的卷,具有抽象化服务器芯片集的组件和多种特征,例如更多的容错特征或SCSI支持,然而台式机或工作站可能具有更加面向消费者的特点,例如更丰富的图形支持。 标识符单元68与数据结构66相关联,其所包括的信息允许固件模块44(a)的例程单元定位并验证数据结构66。标识符单元68包括标识串72,大小参数74(DS_SIZE)和校验和值76(CHK_SUM),其中的标识串72例如是16字节的保证唯一标识符(GUID),这是用来“命名”一个给定地服务接口或包含文件的统计唯一值。ID_STRING 72是一个字符串,例程单元64中的例程84可对之进行扫描和取得该字符串。DS_SIZE 74指示了数据结构66的大小,而CHK_SUM 76是为了确保数据结构66未曾损坏而从数据结构66中导出的值。 固件模块44(a)的例程单元64对与有关设备相关的资源提供固件级的支持。例如,例程单元64包括的代码序列用于初始化及配置键盘、输入设备、视频显示器或类似的设备,这些设备是由不同的独立硬件厂商(IHV)、独立BIOS厂商(IBV)和原始设备制造商(OEM)开发出来用于计算平台38上的。 固件模块44(a)还包括调用表70,其存储到例程单元64中的例程的索引和指针。例如,指针82被分配给一个索引80,通过这个索引,可经由逻辑链路86对相关联的例程84进行访问。 固件系统40的VTF文件42包括一个操作码50,它由重置向量51“使用(consume)”。即,在一个“取得/执行周期”中,一旦发生重启事件(例如,一个触发引导过程的事件,处理器通过所述引导过程重新开始操作),就响应于处理器12的第一个取操作码操作而执行固件系统40。重置向量51是由特定的CPU微体系结构确定的。因此,VTF文件42必须被构建为遵从正在使用的特定CPU微体系结构的硬件要求。在具有可变文件位置的体系结构内,VTF文件42位于固件系统40的顶部。 在第一个取操作码操作的“取得/执行周期”中,处理器23(n)的每一个取指令周期都按以下步骤来处理指令:首先从非易失存储器26中读出指令,然后根据该指令来执行它。然后,处理器23(n)中的每一个从系统存储器18中取出下一条指令,等等。包括整个系统重置(“冷引导”)或单纯CPU重置(“热引导”)在内的重启事件包括POST(开机自检测)。具体地说,POST测试是计算机10在开机时对其硬件、处理器12和系统存储器18所执行的测试。操作码50例如可以是JMP(跳转)指令或间接分支指令,计算机10首先通过VTF文件42中的固定位置之一(例如,到安全代码(SEC)组件54中的偏移量)来执行上述指令,以访问位于VTF文件42中的附加文件容器或后跟的指令。这样,当计算机10第一次开机时,操作码50就是一个必需的入口点,用于将控制传递给驻留于VTF文件42中的其它文件容器,例如指针52(图2)。 VTF文件42包括VTF记录列表56、安全代码(SEC)54、指向VTF记录列表56的指针52、以及引导固件卷(BFV)基58。VTF文件42是一个符合某种规范的文件,例如符合可扩展固件接口(EFI)规范,该规范设计用来使得开发者能够容易地实现不同的计算平台。例如,EFI规范描述了一种具有一组核心组件的公共框架,例如插件环境初始化(PEI)和驱动程序执行环境(DXE)核心文件。EFI规范提供了一种核心框架和环境,与平台及操作系统(OS)无关。然而,EFI规范既是二进制接口,又是API集。 由此,EFI规范定义了OS 22和平台38之间的接口,其驻留于非易失存储器26中。EFI规范所提供的接口包括对OS 22及其加载器可用的引导/运行时服务调用以及有关平台的信息。 VTF记录列表56定义了一个位置,VTF文件42在该位置处包含一个枚举项的列表,这些枚举项例如是可包括至少一个固件模块44的位置的已命名记录类型、VTF文件42内的SEC代码(SEC)54等。引导向量处的启动前导代码可以“发现”至少一个固件模块44的位置、VTF文件42内的SEC代码(SEC)54。VTF记录列表56采取必要的步骤来使得处理器12的缓存能够起到数据缓存的作用,并在VTF记录列表56中搜索引导固件卷基58,对固件模块44(a)-44(b)进行认证。 SEC 54被配置为设置机器状态,允许处理器缓存作为数据调用堆栈,调用可选的认证服务,并且准备交接(hand-off)状态(例如象引导固件卷(BFV)基58一样的固件卷基的位置),并将控制传递给调度器模块46。SEC 54也用来实现一条信任链。实现“信任链”引起了一个转移关系,其中第一个软件组件对后面的组件执行某种操作,以认证固件模块44(a)-44(b),还确保一种集成式支持,用于访问或可编程地发现用于执行进一步指令的其它必要文件。 指向VTF记录列表56的指针52是一个固定位置项,其允许在VTF记录列表56中发现大小可变的记录列表。调度器模块46需要知道各种固件模块44的位置。引导固件卷(BFV)基58是一个包括用来初始化VTF文件42的代码或文件卷的容器。引导固件卷基58是指针52所访问的文件的封装。引导固件卷(BFV)基58包括例程、子例程、或者执行专门任务的程序的一组有序指令。因此,引导固件卷基58将一系列计算机指令组合在一起,并封装指针52可访问的文件,从而允许处理器12执行包含在引导固件卷基58中的代码或文件。 VTF文件42也包括卷的起始端62。SEC 54位于VTF记录列表56和紧邻重置向量51之下的指针52之间。VTF文件42的地址,具体地说是操作码50的地址和引导固件卷基58相对于指针52而言都是固定的,虽然操作码50和引导固件卷基58的大小都可变。 下面参考图2和3来描述用于计算机10的引导过程100。 参考图3,在用于计算机10的引导过程100中,在执行PSOT测试期间,检测到重置向量51。一旦检测到重置向量51,固件系统40就初始化(102)处理器12的引导序列。取决于所使用的计算平台38,这例如可以包括内建自测试(BIST)和处理器标识(ID)检验。在处理器12中实现这些引导步骤,处理器12例如可以是位于加利福尼亚州圣克拉拉的Intel公司制造的64位ItaniumTM处理器,其中的引导控制开始于PAL(处理器抽象层)固件组件,该组件将控制转移到另一个可寻址的位置。在初始的引导序列或例程例如引导过程100当中,响应于由处理器重置引起的“取得/执行周期”,处理器12取出位于VTF文件42中的指令并执行该指令。 下面,执行安装(106)初始文件系统的过程,使得初始文件系统中的固件模块44(a)能够被发现。安装(106)初始文件系统也包括使用例如固件调度器46(由数据结构66指向的)来访问固件模块44(a)中的适当例程64,以获得对其它固件模块例如固件模块44(b)的访问权。例如,调度器模块46通过从固件模块中的任何一个中接收索引后的输入,并使用被包括的索引来经由调用表70访问例程单元64中的例程之一,从而提供对例程64的访问。一旦固件模块44(a)被发现,则通过检验(108)所发现的固件模块44(a)属于所述信任链,提供可能的认证。具体地说,信任链是一种转移关系,其中固件模块44(a)必须验证或认证固件模块44(b),然后固件模块44(b)将验证后续的固件模块44,如此等等。信任链交接的控制流引入了对后续组件的认证或验证,以保持“链”的逻辑链接关系。SEC 54完成信任链的认证过程。一旦固件模块44(a)的发现和认证都已结束,则体系结构的交接状态就转换到固件调度器46的启动中,并且控制被传递(110)给固件调度器46。交接信息传达了关于固件卷布置的状态信息、认证结果、以及固件模块44(a)需要的可选认证已知的其它状态信息。 一旦控制已被传递(110)到固件调度器46,则固件模块44(a)和44(b)被载入(112)到系统存储器18中,并在引导过程100的剩余过程中执行。可以执行(114)可选的验证校验,并通过检验(118)是不是最后一个模块而依次执行(116)所有剩余的固件模块44(未示出)。于是,引导过程100最终执行(120)计算机10的系统启动。 在某些实施例中,计算机10的外围总线30例如代表一个或多个外围元件互连(PCI)总线、工业标准体系结构(ISA)总线、扩展ISA(EISA)总线和相当的外围总线。非易失存储器26可以是一个静态存储设备,例如只读存储器(ROM)或闪存。外围设备28也可以包括大容量存储设备,例如硬盘驱动器和数字视频盘(DVD)。这些设备连同系统逻辑14一起,定义了用于计算机10的计算平台38,例如Intel公司设计的Intel体系结构(IA)平台,包括Intel体系结构-32(IA-32)、XScaleTM和IntelItaniumTM芯片集。因此,对于计算机10,处理器12可以实现例如基于IA-32、XScaleTM和IntelItaniumTM处理器的指令集体系结构(ISA)。 一种重要的平台基础结构支持基于IA-32、XScaleTM和IntelItaniumTM的平台。这种基础结构包括外围设备28以及引导、配置并支持这些设备所必需的基本输入输出系统(BIOS或固件)。例如,例程64例如包括IA-32、XScaleTM或ItaniumTM代码序列,这些代码序列初始化并配置处理器12、系统逻辑14、系统存储器18和分别运行在本地IA-32、XScaleTM或ItaniumTM环境中的其它资源。 在某些实施例中,非易失存储器26存储的固件系统40包括各种类型的外围设备和各种类型的平台所提供的二进制码。为了在实现多种体系结构、组件和新功能时实现源级集成,提供了一种核心公共框架,它对平台或芯片集是不可知的。因此,通过二进制接口而提供了不同组件之间的二进制互操作性,而非支持用于固件系统40的单一整体式(monolithic)二进制形式。 如上所述,EFI规范提供了可与平台和API无关的核心框架和环境,从而提供了一种用于引导OS 22的公共的核心标准环境。例如,EFI规范被设计为一个纯粹的接口规范,同样地,这个规范定义了计算平台固件必被设计为一个纯粹的接口规范,同样地,这个规范定义了计算平台固件必须实现的一组接口和结构。类似地,EFI规范定义了OS 22在引导过程(如在上述的引导过程100中一样)中所使用的一组接口和结构。因此,OS 22和固件系统40只需传送必需和必要的信息来支持引导过程100。 因此,在EFI规范中体现出从单一整体式二进制形式的框架转移到模块化的固件设计的一种抽象,这种抽象集中在对BIOS不进行任何运行时的调用,因此定义了一种引导基础结构和一组服务,它们构成了公共平台定义和规范。具体地说,通过“句柄”和“协议”抽象出对外围设备28的访问。这有助于通过使下层的实现需求不进入规范而使用及复用现有的固件代码,而不加重对设备的复杂访问。 EFI规范可以定义一种公共引导环境的抽象,以供加载的EFI映像使用,所述的抽象包括EFI驱动程序、EFI应用程序和EFI OS加载器。在某些实施例中,EFI规范还包括运行时服务、系统分区、以及对现有的基于表的接口的复用,诸如此类。 此外,在某些实施例中,计算机10的引导过程100的流程支配着VTF文件42的设计。例如,在IA-32平台中,处理器12取出位于地址4GB减去16处的操作码50(图2)。另外,从重置向量51往上,引导操作100需要得到精确的描述。例如,对于基于IA-32和Itanium的微处理器而言,重置向量51必须存在于32位地址空间的顶端附近。对于32位处理器系列例如IA-32而言,这个地址固定在4Gbyte(“吉字节”)减去16处。因此,固件系统40提供了一个与众不同的模块,它是第一个将被执行的文件,并且它的末端必须和4Gbyte的边界对齐。这个与众不同的模块就是VTF文件42。因此,VTF文件42的与众不同之处不仅仅在于要求引导非易失存储器26,而且还在于它还必须是固件系统40的最后一个文件。 虽然上面利用基于IA-32、XScaleTM或ItaniumTM的ISA(指令集体系结构)实现了多个实施例,但是上述系统和方法也适用于其它ISA,从移动系统到服务器。 其它实现也落入所附权利要求的范围之内。
《引导过程.pdf》由会员分享,可在线阅读,更多相关《引导过程.pdf(15页珍藏版)》请在专利查询网上搜索。
本发明公开了一种引导例程。通过引导位于第一可寻址位置处的卷顶文件(VTF),并且由该卷顶文件引导一组固件模块,可在计算机中初始化所述引导例程,其中,初始化所述引导例程时可访问所述第一可寻址位置。。
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1