CN109478135B - 计算机系统和用于重新引导计算机系统的方法 - Google Patents

计算机系统和用于重新引导计算机系统的方法 Download PDF

Info

Publication number
CN109478135B
CN109478135B CN201780044182.4A CN201780044182A CN109478135B CN 109478135 B CN109478135 B CN 109478135B CN 201780044182 A CN201780044182 A CN 201780044182A CN 109478135 B CN109478135 B CN 109478135B
Authority
CN
China
Prior art keywords
memory
code
firmware image
operating system
computer
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
CN201780044182.4A
Other languages
English (en)
Other versions
CN109478135A (zh
Inventor
R·R·比玛纳杜尼
M·布鲁苏
B·拉玛钱德兰
B·D·凯利
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN109478135A publication Critical patent/CN109478135A/zh
Application granted granted Critical
Publication of CN109478135B publication Critical patent/CN109478135B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Abstract

公开了用于初始化过程的系统和方法,该初始化过程在由操作系统调用时选择性地重新加载部分或全部UEFI。重新加载跳过了平台初始化并且使得能够选择性地加载具有定制依赖性的UEFI模块。特殊的受保护存储器区域被保留并且不可用于由主机操作系统使用。一旦被初始化,UEFI将使用保留存储器区域来执行发起或加载UEFI模块的代码。主机操作系统将等待UEFI重新加载,并且然后重新初始化其从UEFI接收的功能、结构和变量。

Description

计算机系统和用于重新引导计算机系统的方法
技术领域
本公开的实施例涉及计算机系统和用于重新引导计算机系统的方法。
背景技术
诸如BIOS(基本输入/输出系统)和UEFI(统一可扩展固件接口)之类的用于计算机的固件接口用作操作系统和计算机的固件之间的解释器。可以在计算机启动时使用BIOS或UEFI接口来对硬件组件进行初始化并开启被存储在计算机硬盘驱动器上的操作系统。BIOS通过读取硬盘上的第一扇区并执行它来引导;此引导扇区继而定位并运行附加代码。UEFI通过从硬盘上的分区(已知为EFI系统分区(ESP))加载EFI程序文件(即,具有.efi文件名扩展的文件)来引导。EFI引导加载器程序可以利用EFI引导服务以用于诸如从硬盘读取文件之类的事情。
通常,BIOS或UEFI更新要求系统重新引导,这导致用户停机时间。这种重新引导带来了在诸如数据中心或云服务网络之类的分布式计算环境中的大量服务器上协调停机时间的挑战。
发明内容
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题内容的关键特征或必要特征,也不旨在被用来限制所要求保护的主题内容的范围。
本文所公开的实施例创建了新的初始化过程,其在由操作系统调用时选择性地重新加载部分或全部UEFI。重新加载可选地跳过了平台初始化并使得能够选择性地加载具有定制依赖性的UEFI模块。为了实现这种重新加载,特殊的受保护存储器区域被保留,并且不可用于由主机操作系统使用。
主机操作系统可以配置和调用UEFI初始化程序以重新加载UEFI代码的UEFI模块或部分。操作系统可以随时调用UEFI初始化。在示例工作流程中,可以在内核软重新引导(KSR)期间调用该重新加载,在此期间操作系统被关闭到加载程序存根,然后重启更新的操作系统代码并进行配置,从而完全跳过固件开机自检(POST)。例如,可以在重新引导之前将操作系统代码和数据以及应用保存到存储器中。然后,在重新引导计算机后,将从存储器中唤醒操作系统代码和数据以及应用。一旦被初始化,UEFI将使用保留的存储器区域来执行发起或加载UEFI模块的代码。主机操作系统将等待UEFI重新加载,并然后重新初始化它从UEFI接收的功能、结构和变量。
附图说明
为了进一步阐明本发明的实施例的上述和其他优点和特征,将通过参考附图来呈现本发明的实施例的更具体的描述。应当理解,这些附图仅描绘了本发明的典型实施例,并且因此不应被视为限制其范围。通过使用附图,将通过附加的特异性和细节来描述和解释本发明,在附图中:
图1是用于实践本文所呈现的公开内容的代表性计算机架构。
图2图示了易失性系统存储器。
图3图示了非易失性系统存储器上的分段固件映像。
图4是图示根据一个实施例的用于引导计算机系统的方法的流程图。
图5是图示用于重新引导计算机系统的方法的流程图。
具体实施方式
正常的UEFI引导阶段如下:
安全(SEC)阶段是第一代码,其被执行以认证BIOS,更新早期微代码以及将代码传递到PEI核心。此代码将CPU从实际模型更改为受保护模型,并将缓存实现为RAM以用于在SEC和PEI阶段中使用。
预EFI初始化(PEI)阶段执行存储器和芯片组初始化。PEI核心和PEI模块(PEIM)得到加载。PEI阶段加载DXE核心。
驱动程序执行环境(DXE)阶段包括大量BIOS初始化代码。按顺序执行DXE驱动程序和相互依赖性。
引导设备选择(BDS)阶段连接操作系统负载所需的设备并将控制交给操作系统。
在瞬时系统负载(TSL)阶段,将控制交给操作系统并且操作系统正在被引导。
在运行时(RT)阶段,操作系统正在运行并且具有对系统的控制。
生命后(AL)阶段从最终操作系统环境转换(即,关闭)。从此阶段的切换可以进入PEI或DXE阶段。
下面概述了启用UEFI固件更新的新模式所需的更改。为了实现这些新的更新模式,固件要求重构EFI模块并对操作系统引导服务进行更改。
UEFI架构更改:
1)为UEFI执行保留新的隔离存储器区域。UEFI代码始终在此保留的存储器区域中执行。操作系统无法访问存储器的这个受保护的区域。仅在UEFI初始化和系统管理模式(SMM)的操作模式下可访问该存储器区域。
2)SMM存储器区域被扩展和结构化以允许运行时修改现有的系统管理中断(SMI)例程。保留的SMM代码要求足够的缓冲区以允许代码的运行时修改。
3)要求FVMAIN和UEFI EDKII(EFI开发工具包II)的重构和模块化以允许DXE服务变为可修补的,并且允许新的快捷路径,其独立地初始化来自清单的模块并加载其从属模块。
4)在关闭和引导服务中实现内核引导服务特征,以用于具有选择DXE模块执行的系统的S3混合重新开始类型重新加载。UEFI通过唤醒操作系统功率管理(OSPM)并将控制传递到固件ACPI控制结构(FACS)唤醒向量来传递控制。
5)在正常S3重新开始中,完全避免DXE阶段的执行,并且S3从保存的引导脚本路径进行重新开始。此引导脚本被存储在非易失性随机存取存储器(NVRAM)中,并且在S3重新开始期间,引导脚本引擎执行恢复配置。此引导脚本的操纵(由此已存在保存和恢复机制)可以促进针对DXE模块的修补过程。
EFI固件更新模式
改进的UEFI实现四种不同级别的固件:运行时更新、OS内核重新引导补充、快速引导和冷引导。下面将进一步详细讨论这些模式。
运行时更新模式。
当主机操作系统处于完全操作状态时,更新或修补固件。加载UEFI代码,并且操作系统利用对应的功能性来加载或重新初始化驱动程序或组件。运行时更新模式的示例包括:
静态内容:在UEFI中更新ACPI表内容。重新初始化操作系统ACPI驱动程序以读入新内容。
新功能:将新的设备特定方法(DSM)添加或加载到UEFI保留的存储器区域中。DSM显露了新的设备功能性。操作系统加载利用DSM的新驱动程序。
系统管理中断:在SMM存储器区域中更新现有的SMM指令代码。这要求为SMM保留附加的存储器。要求SMI以用于更新SMM隔离的执行环境。这要求UEFI认证的变量设计。
OS内核重新引导补充模式。
在重新引导操作系统内核之前执行固件更新。在重新引导内核后,当内核停止生命后(AL)代码调用时,对UEFI的特殊重启会通过将存储器置于自刷新状态中来存留存储器。重启模式使最小的类似S4唤醒的负载发生,直接将引导服务退出到内核。此模式允许最小的驱动程序加载/重新加载。
为了成功地优化内核重新引导,对FVMAIN代码块进行重构和优化以促进运行时模块化负载。可定制的清单或模块列表确定需要被加载的DXE模块。随更新一起提供清单,以指示固件更新了哪些组件。操作系统内核重新引导补充模式的示例包括:
系统管理中断:DXE阶段模块通常执行SMM Init(),由此将SMM内部服务加载到SSM处理程序中。在DXE阶段的有限重新加载期间添加/移除新的SMI。
修补EFI系统表:对EFI数据结构或系统表的更新。
更新DXE驱动程序:对DXE驱动程序、协议或MMIO资源的更新。
快速引导模式。
快速引导是时间优化版本的重新引导。它在PEI阶段的早期被检测到并且跳过加载某些特征和不必要的功能。快速引导不会重新初始化存储器或执行PCIe链接训练。在BDS阶段期间,快速引导跳过引导设备检查并去往默认设备。快速引导通过在重新引导期间使存储器保持自刷新来保存存储器内容。通过禁用BIOS输出和BIOS屏幕选项并且仅加载有限的驱动程序和服务,快速引导可以优化重新引导时间。
冷引导模式。
冷引导模式执行传统完全引导配置,初始化sysboot(系统引导)选项和引脚绑定的HW变量,并且执行存储器和PCIe初始化。
图1是用于实践本文所呈现的公开内容的代表性计算机架构。以下对图1的讨论旨在提供通用计算环境的简要描述,其可以实现本文所公开的系统和方法的实施例。本领域技术人员将理解,可以使用包括多处理器系统、基于微处理器的或可编程电子设备、小型计算机、大型计算机等的其他计算机系统配置来实现本文所描述的实施例。还可以在诸如数据中心或云服务网络之类的分布式计算环境中实践本文所描述的实施例,其中由通过通信网络链接的分布式处理设备来执行任务。
尽管凭借可以结合计算机固件的执行而操作的程序模块来描述了本文所描述的实施例,但是本领域技术人员将认识到它们也可以与其他程序模块组合来实现。通常,程序模块可以包括执行特定任务或实现特定数据类型的代码、程序、组件、数据结构或其他结构。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
图1图示了用于计算机100的计算机架构,该计算机架构包括诸如印刷电路板之类的基板或“母板”,在该基板上可以通过系统总线或其他通信路径连接多个组件或设备。还预期计算机100可以不包括图1中所示出的每个组件,可以包括未在图1中被明确示出的附加组件,或者可以利用与图1中所示出的架构完全不同的架构。
中央处理单元(“CPU”)101与芯片组102一起操作。CPU 102可以是执行针对计算机100的操作所需的各种算术和逻辑操作的标准微处理器。在一个实施例中,芯片组102包括北桥103和南桥104。北桥103提供CPU 101与计算机100的其余部分之间的接口。北桥103还向随机存取存储器(“DRAM”)105提供接口,该接口被用作计算机100中的主系统存储器。北桥103还可以包括用于连接到网络适配器、图形适配器或其他组件(未被示出)的接口功能性。北桥103被连接到南桥104。
南桥104负责控制计算机100的许多输入/输出(I/O)功能。特别地,南桥104可以向通用串行总线(“USB”)端口106、通用输入/输出(“GPIO”)引脚107、串行高级技术附件(“ATA”)端口108、或外围组件互连(“PCI”)总线109中的一个或多个提供接口。南桥104还可以向功率管理电路和时钟生成电路(未被示出)提供接口。
南桥104还提供用于将一个或多个大容量存储设备110连接到计算机100的接口。大容量存储设备110可以是例如硬盘或CD-ROM驱动器。然而,本领域技术人员将理解,大容量存储设备110可以包括任何计算机存储介质,该计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。大容量存储设备110可以存储例如操作系统和应用程序。操作系统通常包括控制计算机100上的操作和资源的分配的一组程序。应用程序是在操作系统软件之上运行的软件代码,并且使用如通过操作系统使得可用的计算机101上的资源来执行应用特定的任务。
诸如ROM、非易失性随机存取存储器(“NVRAM”)或闪速存储器之类的计算机存储介质111存储包括程序代码的固件112,该程序代码包含被用来启动计算机100并在计算机100内的元件之间传递信息的基本例程。固件112还可以包括基本输入/输出系统(“BIOS”)固件映像。固件112可以与统一可扩展固件接口(UEFI)规范兼容。
固件映像111的目的是诸如通过初始化CPU 101、芯片组102、存储器105等来准备计算机系统100,以便可以引导操作系统。固件112加载由计算机100的组件要求的特定补丁或代码。一旦操作系统已被引导至计算机系统100,用户就可以加载软件应用。在云计算环境中,计算机100可以是在RAM 105中运行多个虚拟机(VM)的数据中心中的服务器。多个云客户可以在计算机100上共享VM资源并且可以在不同VM上在他们自己的上下文中运行各种软件应用。
如果需要将更新(诸如解决安全漏洞的补丁)应用于固件112,则利用新固件来更新存储器111。在现有系统中,一旦固件112被更新,那么必须重启计算机系统100。在重启之后,消除RAM 105中的所有上下文(例如,VM和用户应用)。
本文所描述的优化的UEFI重新引导过程允许计算机系统100应用强制性固件更新而不消除RAM 105中的所有用户上下文。为了实现这一点,重新引导方法被修改为跳过BIOS中的存储器初始化代码。这会保存存储器上下文,以便在重新引导后可以将控制返回给操作系统,使得用户可以用最短的停机时间继续访问其资源(例如,无需重启VM和用户应用)。在一个实施例中,可以例如通过在CMOS中被设置的标志或存储器中被设置的变量来指示固件更新重新引导。在固件更新之后的重新引导期间,在确定设置了标志或变量之后,UEFI引导过程从AL阶段直接跳到DXE阶段。该修改过的过程跳过了PEI阶段中的任何存储器初始化,使得维持了现有上下文。在其他实施例中,可以执行PEI阶段的一小部分,诸如初始化非存储器组件和加载DXE核心。附加地,可以将DXE阶段划分成不同的固件卷,以便基于安全漏洞的类型。
图2图示了系统存储器200,诸如RAM 105。在当前计算机系统的初始启动期间,UEFI配置并释放存储器200的大部分以用于由操作系统使用。然而,UEFI还锁定存储器200的某些部分以用于系统操作,并保护这些部分不被操作系统访问。例如,在对启动的初始化期间,UEFI可以为BIOS操作保留区域201,并且为系统管理功能保留区域202。在现有的计算机系统中,UEFI将剩余的存储器区域203-205释放给操作系统以用于在运行应用中使用,等等。
然而,在本文所公开的实施例中,UEFI在启动时保留附加的BIOS和系统管理存储器区域201a和202a。例如,在启动时,UEFI保留用于BIOS操作的存储器区域21。这包括区域201,其具有基于当前UEFI固件映像中所要求的BIOS操作而被选择的大小。UEFI还保留区域201a,其为在将来的UEFI固件映像中使用的BIOS操作提供附加的保留存储器。初始启动或完全系统引导之后不使用区域201a。区域201a的大小可以基于区域201的大小来选择,诸如高于针对区域201所要求的空间的附加百分比;或者可以是设定量,诸如预定数目的字节。例如,区域201a可以等同于区域201的大小的10-20%,或者可以是N kB。
类似地,UEFI为系统管理操作保留存储器区域22。这包括区域202,其具有基于在当前UEFI固件映像中所要求的系统管理操作而被选择的大小。UEFI还保留区域202a,其为在将来的UEFI固件映像中使用的系统管理操作提供附加的保留的存储器。在初始启动或完全系统引导之后不使用区域202a。区域202a的大小可以基于区域202的大小来选择,诸如高于针对区域202所要求空间的附加百分比;或者可以是设定量,诸如预定数目的字节。例如,区域202a可以等同于区域202的大小的10-20%,或者可以是N kB。除了保留区域201a之外或代替保留区域201a,可以完成区域202a的保留。
在额外的区域201a和202a被保留以用于由将来的UEFI固件BIOS或系统管理操作使用的情况下,UEFI将区域203a、204和205a释放给操作系统以供使用。
在稍后的时间,可以更新UEFI固件映像,以便修补某些安全漏洞。为了应用新的UEFI固件映像,需要重新引导计算机。在现有系统中,重新引导将导致所有存储器200在PEI阶段被重新初始化。这将导致存储器区域203-205中的所有操作系统和应用上下文被消除。然而,在投影附加存储器区域201a和/或202a的实施例中,可以在重新引导期间保存区域203a、204和205a中的操作系统和应用上下文。重新引导将重新格式化区域21和22,并且将在这些区域中安装新的BIOS和操作系统操作。因为区域21和22包括保留区域201a和202a,所以在重新引导时存在多余的空间可用以实现在原始UEFI固件映像中不存在的附加BIOS和系统管理操作。例如,如果安全补丁导致将附加的代码行添加到为系统操作保留的区域202,那么在UEFI固件更新重新引导之后,附加的保留区域202a可用于那些额外的代码行。否则,在没有保留区域202a的情况下,额外的代码行将要求重新映射存储器200,这将消除用于操作系统和应用的上下文。
图3图示了根据一个实施例的模块化UEFI固件映像300。在示例实施例中,固件映像300可以作为固件112而被存储在ROM/NVRAM存储器111(图1)上。在现有系统中,当需要更新固件112时,必须将整个映像写入或闪存到存储器111。在图3中所图示的实施例中,固件映像被模块化成N个部分301。不是将整个新固件300闪存到存储器111,而是只需要将更新的分段301闪存到存储器111。例如,如果在分段FV_MAIN 2(301-2)中发现错误,那么只需要在存储器111上更新该分段。然后可以重新引导计算机以仅应用更新的分段301。这允许升级后重新引导以跳过引导块(FV_BB)302中的固件代码,这避免了存储器的重新初始化。因此,在重新引导中将不会消除系统RAM存储器中的操作系统和应用上下文。
在重新引导期间,操作系统和应用可以被置于睡眠模式。正常S3休眠状态是低唤醒延迟休眠状态,其中除了系统存储器之外的所有系统上下文都被丢失。CPU、高速缓存和芯片组上下文在此状态下被丢失。硬件维持存储器上下文并恢复一些CPU和L2配置上下文。在唤醒事件之后,控制从处理器的复位向量开始。在更新UEFI固件并重新引导计算机之后,可以使用具有选择DXE模块执行的系统的S3混合重新开始类型重新加载来将控制传递至操作系统。UEFI将通过唤醒操作系统功率管理(OSPM)并将控制传递至固件ACPI控制结构(FACS)唤醒向量来传递控制。唤醒向量可以被用来告诉操作系统重新引导已完成并且控制被传递至操作系统。
图4是图示根据一个实施例的用于引导计算机系统的方法的流程图。在步骤401中,使用被存储在非易失性存储器中的固件映像来配置计算机系统硬件。在步骤402中,易失性随机存取存储器被配置为保留第一受保护存储器区域和第二受保护存储器区域,其中受保护区域外部的存储器可用于由操作系统使用。
第一和第二受保护存储器区域包括标准存储器区域和扩展存储器区域,其中扩展存储器区域在初始系统引导期间不被用来存储代码,而是被配置为可用于存储在系统重新引导后来自更新的固件映像的代码。
可以在初始系统引导时指定第一和第二受保护存储器区域以用于由UEFI代码、BIOS代码或系统管理代码使用。
在步骤403中,用更新的固件映像来替换固件映像。在步骤404中,使用更新的固件映像来重新引导计算机系统,同时在易失性随机存取存储器中维持现有的操作系统上下文。在步骤405中,来自更新的固件映像的代码被存储在第一和第二受保护存储器区域的扩展存储器区域中。
图5是图示用于重新引导计算机系统的方法的流程图。在步骤501中,更新的固件映像被加载在计算机系统的非易失性存储器中。在步骤502中,来自更新的固件映像的更新的BIOS或UEFI代码被存储在初始计算机系统引导期间受保护的保留的存储器区域中。保留的存储器区域是被保护不受操作系统使用的易失性随机存取存储器区域。易失性随机存取存储器包括标准存储器区域和扩展存储器区域,其中扩展存储器区域不被用来在初始计算机系统引导期间存储代码,而是被配置为可用于在系统重新引导后存储更新的固件映像中的代码。
在步骤503中,在重新引导计算机之前将操作系统代码和数据以及应用存储到存储器。在步骤504中,使用更新的固件映像来重新引导计算机系统,同时在易失性随机存取存储器中维持现有的操作系统上下文。在步骤505中,在重新引导计算机之后从存储器中唤醒操作系统和应用。
示例计算机系统包括:处理器;非易失性存储器,其被配置为存储包括被用来引导系统的代码的固件映像;和易失性随机存取存储器,其包括第一保留区域和可用于由操作系统使用的一个或多个附加区域;其中第一保留区域包括在初始系统引导期间被保留但在初始系统引导期间不被用来存储代码的扩展存储器区域,第一保留区域被配置为可用于在系统重新引导之后存储更新的固件映像中的代码。
在备选系统中,在初始系统引导时指定第一保留区域以用于由基本输入/输出系统(BIOS)代码或由系统管理代码使用。
备选系统还包括易失性随机存取存储器中的第二保留区域,其在初始系统引导时被指定以用于由BIOS代码或系统管理代码使用。
在备选系统中,非易失性存储器是只读存储器(ROM)或非易失性随机存取存储器(NVRAM)。
在备选系统中,固件映像还包括多个固件卷部分,每个部分被配置为在固件更新期间根据需要独立地被替换。
用于引导计算机系统的示例方法包括:使用被存储在非易失性存储器中的固件映像来配置计算机系统硬件;并且配置易失性随机存取存储器以保留第一受保护存储器区域和第二受保护存储器区域,其中受保护区外部的存储器可用于由操作系统使用;第一和第二受保护存储器区域包括标准存储器区域和扩展存储器区域,其中扩展存储器区域不被用来在初始系统引导期间存储代码,而是被配置为可用于在系统重新引导之后存储来自更新的固件映像的代码。
在备选方法中,在初始系统引导时指定第一和第二受保护存储器区域以用于由基本输入/输出系统(BIOS)代码或统一可扩展固件接口(UEFI)代码或由系统管理代码使用。
备选方法还包括:利用更新的固件映像来替换固件映像;使用更新的固件映像来重新引导计算机系统,同时在易失性随机存取存储器中维持现有的操作系统上下文;以及将来自更新的固件映像的代码存储在第一和第二受保护存储器区域的扩展存储器区域中。
备选方法还包括:在重新引导之前将操作系统代码和数据以及应用保存到存储器;以及在重新引导计算机后,从存储器中唤醒操作系统代码和数据以及应用。
在备选方法中,固件映像还包括多个固件卷部分,每个部分被配置为在固件更新期间根据需要独立地被替换。
备选方法还包括:利用更新的固件映像部分来替换一个或多个固件卷部分;使用更新的固件映像来重新引导计算机,同时在易失性随机存取存储器中维持现有的操作系统上下文;以及将来自更新的固件映像的代码存储在第一和第二受保护存储器区域的扩展存储器区域中。
在备选方法中,更新的固件映像包括一个或多个新固件卷部分和来自在前固件映像的至少一个固件卷部分。
一种用于重新引导计算机系统的示例方法包括:加载更新的固件映像;使用更新的固件映像来重新引导计算机系统,同时在易失性随机存取存储器中维持现有的操作系统上下文;以及将来自更新的固件映像中的更新的基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)代码存储在保留的存储器区域中,该保留的存储器区域在初始计算机系统引导期间受保护。
在备选方法中,保留的存储器区域是已经被保护不受操作系统使用的易失性随机存取存储器的区域。
在备选方法中,易失性随机存取存储器包括标准存储器区域和扩展存储器区域,其中扩展存储器区域在初始计算机系统引导期间不被用来存储代码但是被配置为可用于在系统重新引导之后存储更新的固件映像中的代码。
备选方法还包括:在重新引导计算机之前将操作系统代码和数据以及应用保存到存储器;以及在重新引导计算机后,从存储器中唤醒操作系统代码和数据以及应用。
在备选方法中,固件映像还包括多个固件卷部分,并且其中更新的固件映像包括利用更新的固件卷部分替换原始固件卷部分。
备选方法还包括:使用更新的固件映像重新引导计算机,同时在易失性随机存取存储器中维持现有操作系统上下文;以及将来自更新的固件映像中的代码存储在第一和第二受保护存储器区域的扩展存储器区域中。
在备选方法中,更新的固件映像包括一个或多个新固件卷部分和来自在前固件映像的至少一个固件卷部分。
尽管已经用特定于结构特征和/或方法动作的语言描述了本主题内容,但应当理解,所附权利要求书中所定义的主题内容不必局限于上述特定特征或动作。而是,上述特定特征和动作被公开为实现权利要求的示例形式。

Claims (15)

1.一种计算机系统,包括:
处理器;
非易失性存储器,所述非易失性存储器被配置为存储包括被用来引导所述计算机系统的代码的固件映像;
易失性随机存取存储器,所述易失性随机存取存储器包括第一保留区域和可用于由操作系统使用的一个或多个附加区域,其中所述第一保留区域包括扩展存储器区域,所述扩展存储器区域在初始系统引导期间被保留但在所述初始系统引导期间不被用来存储代码,所述第一保留区域被配置为可用于在系统重新引导之后存储更新的固件映像中的代码;以及
由所述处理器可执行的指令,所述指令用以执行包括重新引导的类型的固件更新,所述重新引导的类型在保留所述一个或多个附加区域中的操作系统和应用上下文的同时重新格式化所述第一保留区域。
2.根据权利要求1所述的系统,其中所述第一保留区域在初始系统引导时被指定,以用于由基本输入/输出系统(BIOS)代码使用、或由系统管理代码使用。
3.根据权利要求2所述的系统,还包括:
所述易失性随机存取存储器中的第二保留区域,所述第二保留区域在初始系统引导时被指定以用于由基本输入/输出系统(BIOS)代码使用、或由系统管理代码使用。
4.根据权利要求1所述的系统,其中所述非易失性存储器是只读存储器(ROM)或非易失性随机存取存储器(NVRAM)。
5.一种用于引导计算机系统的方法,包括:
使用被存储在非易失性存储器中的固件映像来配置计算机系统硬件;
配置易失性随机存取存储器以保留受保护存储器区域,其中所述受保护存储器区域外部的存储器可用于由操作系统使用,其中所述受保护存储器区域包括标准存储器区域和扩展存储器区域,并且其中所述扩展存储器区域不被用来在初始系统引导期间存储代码,而是被配置为可用于在系统重新引导之后存储来自更新的固件映像的代码;以及
执行包括重新引导的类型的固件更新,所述重新引导的类型在保留所述受保护存储器区域外部的存储器中的操作系统和应用上下文的同时重新格式化所述受保护存储器区域。
6.根据权利要求5所述的方法,其中在初始系统引导时所述受保护存储器区域的至少一部分被指定,以用于由基本输入/输出系统(BIOS)代码或统一可扩展固件接口(UEFI)代码使用、或由系统管理代码使用。
7.根据权利要求5所述的方法,还包括:
利用更新的固件映像来替换所述固件映像;
使用所述更新的固件映像来重新引导所述计算机系统,同时在所述易失性随机存取存储器中维持现有的操作系统上下文;以及
将来自所述更新的固件映像的代码存储在所述受保护存储器区域的所述扩展存储器区域中。
8.根据权利要求7所述的方法,还包括:
在所述重新引导之前将操作系统代码和数据以及应用保存至存储器;以及
在重新引导所述计算机后,从所述存储器唤醒所述操作系统代码和数据以及所述应用。
9.根据权利要求5所述的方法,还包括:
利用更新的固件映像部分来替换一个或多个固件卷部分;
使用更新的固件映像来重新引导计算机,同时在所述易失性随机存取存储器中维持现有的操作系统上下文;以及
将来自所述更新的固件映像的代码存储在所述受保护存储器区域的所述扩展存储器区域中。
10.根据权利要求5所述的方法,其中所述更新的固件映像包括一个或多个新的固件卷部分以及来自在先的固件映像的至少一个固件卷部分。
11.一种用于重新引导计算机系统的方法,包括:
将更新的固件映像加载到受保护的存储器区域中,其中所述受保护的存储器区域包括未被用来在初始计算机系统引导期间存储代码的扩展存储器区域;
使用所述更新的固件映像来重新引导所述计算机系统,同时在所述受保护的存储器区域外部的易失性随机存取存储器的区域中维持现有的操作系统上下文;以及
将来自所述更新的固件映像的更新的基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)代码存储在保留存储器区域中,所述保留存储器区域在初始计算机系统引导期间受保护。
12.根据权利要求11所述的方法,其中所述保留存储器区域是已经被保护不受操作系统使用的易失性随机存取存储器的区域。
13.根据权利要求12所述的方法,其中所述易失性随机存取存储器包括标准存储器区域和扩展存储器区域,其中所述扩展存储器区域在所述初始计算机系统引导期间不被用来存储代码但是被配置为在系统重新引导之后可用于存储所述更新的固件映像中的代码。
14.根据权利要求11所述的方法,还包括:
在重新引导所述计算机之前,将操作系统代码和数据以及应用保存至存储器;以及
在重新引导所述计算机后,从所述存储器唤醒所述操作系统代码和数据以及所述应用。
15.根据权利要求11所述的方法,其中所述更新的固件映像包括一个或多个新的固件卷部分以及来自在先的固件映像的至少一个固件卷部分。
CN201780044182.4A 2016-07-28 2017-07-06 计算机系统和用于重新引导计算机系统的方法 Active CN109478135B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/222,791 2016-07-28
US15/222,791 US10452404B2 (en) 2016-07-28 2016-07-28 Optimized UEFI reboot process
PCT/US2017/040784 WO2018022268A1 (en) 2016-07-28 2017-07-06 Optimized uefi reboot process

Publications (2)

Publication Number Publication Date
CN109478135A CN109478135A (zh) 2019-03-15
CN109478135B true CN109478135B (zh) 2021-12-17

Family

ID=59351138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780044182.4A Active CN109478135B (zh) 2016-07-28 2017-07-06 计算机系统和用于重新引导计算机系统的方法

Country Status (4)

Country Link
US (1) US10452404B2 (zh)
EP (1) EP3491519B1 (zh)
CN (1) CN109478135B (zh)
WO (1) WO2018022268A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3010553B1 (fr) 2013-09-10 2015-09-04 Sagemcom Broadband Sas Procede de mise a jour d'un logiciel de demarrage d'un dispositif multiprocesseur
US20170300317A1 (en) * 2016-03-24 2017-10-19 Knight Point Systems, Inc. System and method for patching software in a target computer system device
US10496307B1 (en) * 2016-12-30 2019-12-03 EMC IP Holding Company LLC Reaching a normal operating mode via a fastboot procedure
US10394295B2 (en) * 2017-05-17 2019-08-27 Intel Corporation Streamlined physical restart of servers method and apparatus
US20190004818A1 (en) * 2017-06-29 2019-01-03 American Megatrends Inc. Method of UEFI Shell for Supporting Power Saving Mode and Computer System thereof
US20220147343A1 (en) * 2019-03-11 2022-05-12 Hewlett-Packard Development Company, L.P. Tranistionary firmware packages
US11481206B2 (en) 2019-05-16 2022-10-25 Microsoft Technology Licensing, Llc Code update in system management mode
TWI743480B (zh) * 2019-05-17 2021-10-21 英商鼎通盛股份有限公司 電腦系統與其開機方法
WO2020251539A1 (en) * 2019-06-10 2020-12-17 Hewlett-Packard Development Company, L.P. Peripheral component interconnect express (pcie) device add-on card detection
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
CN111078303B (zh) * 2019-11-22 2022-05-24 苏州浪潮智能科技有限公司 一种优化uefi引导开机启动的方法及装置
US11385903B2 (en) * 2020-02-04 2022-07-12 Microsoft Technology Licensing, Llc Firmware update patch
US11301235B1 (en) * 2020-02-18 2022-04-12 Amazon Technologies, Inc. Application downtime reduction using detached mode operation during operating system updates
US11720401B2 (en) * 2020-03-27 2023-08-08 Intel Corporation Reclaiming and reusing pre-boot reserved memory post-boot
US11507387B2 (en) 2020-05-26 2022-11-22 Dell Products L.P. Method to optimize system boot time of modules/driver's execution in UEFI pre-boot environment
US11734018B2 (en) * 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
WO2022036670A1 (en) * 2020-08-21 2022-02-24 Intel Corporation Methods and apparatus to perform an enhanced s3 protocol to update firmware with a boot script update
TWI758026B (zh) * 2020-12-23 2022-03-11 神雲科技股份有限公司 基本輸入輸出系統功能的設定方法
US11416263B1 (en) * 2021-02-12 2022-08-16 Western Digital Technologies, Inc. Boosted boot procedure by background re-arrangement of read patterns
CN112966276B (zh) * 2021-04-02 2022-08-16 杭州华澜微电子股份有限公司 一种计算机的安全启动方法、装置及介质
CN113867814B (zh) * 2021-09-16 2023-07-21 苏州浪潮智能科技有限公司 基于uefi接口实现服务器多类型重启的方法及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237091B1 (en) * 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
CN1924821A (zh) * 2005-08-31 2007-03-07 明基电通股份有限公司 固件更新系统与方法
US20070169076A1 (en) * 2005-10-28 2007-07-19 Desselle Bernard D Methods and systems for updating a BIOS image
US8185886B2 (en) * 2007-06-26 2012-05-22 Intel Corporation Method and apparatus to enable dynamically activated firmware updates
US7793090B2 (en) * 2007-08-30 2010-09-07 Intel Corporation Dual non-volatile memories for a trusted hypervisor
US8082436B2 (en) 2008-07-08 2011-12-20 Dell Products L.P. Enhanced UEFI framework layer
US8631186B2 (en) * 2008-09-30 2014-01-14 Intel Corporation Hardware and file system agnostic mechanism for achieving capsule support
US8296528B2 (en) 2008-11-03 2012-10-23 Intel Corporation Methods and systems for microcode patching
CN102236621B (zh) * 2010-04-28 2014-12-24 国网浙江富阳市供电公司 计算机接口信息配置系统及方法
JP5733628B2 (ja) 2011-09-29 2015-06-10 株式会社日立製作所 仮想計算機を制御する計算機装置及び仮想計算機の制御方法
US20130086571A1 (en) * 2011-09-30 2013-04-04 International Business Machines Corporation Dynamically Updating Firmware In A Computing System
US20130262849A1 (en) 2012-03-29 2013-10-03 Bheeshmar Redheendran Automatic reconfiguration of initialization firmware in a computer system
US20130297924A1 (en) 2012-04-03 2013-11-07 Insyde Software Method of running multiple operating systems on an x86-based computer
CN103377063B (zh) 2012-04-28 2016-06-22 国际商业机器公司 从遗留操作系统环境恢复到uefi预启动环境的方法和系统
CN103034510B (zh) 2012-10-26 2016-04-20 中国航天科工集团第二研究院七〇六所 可按需要动态调整的uefi bios快速安全启动方法
US9417886B2 (en) 2013-01-21 2016-08-16 Dell Products, Lp System and method for dynamically changing system behavior by modifying boot configuration data and registry entries
CN103207797B (zh) * 2013-03-15 2013-11-27 南京工业大学 基于通用可扩展固件接口固件系统的胶囊式定制更新方法
US9189248B2 (en) 2013-04-25 2015-11-17 Insyde Software Corp. Specialized boot path for speeding up resume from sleep state
WO2015016867A1 (en) * 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Updating boot code
TWI525542B (zh) 2013-09-09 2016-03-11 Insyde Software Corp Uefi bios開機及更新之系統及方法、記錄媒體及電腦程式產品
US9779241B2 (en) 2013-09-25 2017-10-03 Cisco Technology, Inc. Synchronization of UEFI secure boot variables on a managed server
CN104572169B (zh) * 2014-09-10 2017-10-27 中电科技(北京)有限公司 一种基于uefi的软件分发和安装系统
CN106201608A (zh) * 2016-07-01 2016-12-07 南京百敖软件有限公司 计算机uefi固件更新方法

Also Published As

Publication number Publication date
US10452404B2 (en) 2019-10-22
EP3491519B1 (en) 2023-12-27
CN109478135A (zh) 2019-03-15
WO2018022268A1 (en) 2018-02-01
US20180032349A1 (en) 2018-02-01
EP3491519A1 (en) 2019-06-05

Similar Documents

Publication Publication Date Title
CN109478135B (zh) 计算机系统和用于重新引导计算机系统的方法
US9501289B2 (en) Method of a UEFI firmware and computer system thereof
US9372754B2 (en) Restoring from a legacy OS environment to a UEFI pre-boot environment
EP2189901B1 (en) Method and system to enable fast platform restart
US8291209B2 (en) Integration model for instant-on environment
US10007546B2 (en) Operating-system exchanges using memory-pointer transfers
US7702896B1 (en) Interactive firmware recovery
US10725770B2 (en) Hot-swapping operating systems using inter-partition application migration
US8539213B2 (en) Manageability extension mechanism for system firmware
US20170010884A1 (en) Systems And Methods To Securely Inject Binary Images And Code Into Firmware
US7962736B1 (en) Interactive pre-OS firmware update with repeated disabling of interrupts
CN107533441B (zh) 创建操作系统卷
US8539214B1 (en) Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware
US9411605B2 (en) Device-less and system agnostic unified extensible firmware interface (UEFI) driver
CN113672250A (zh) 用于存储器设备固件升级的接口和热重置路径
US7900033B2 (en) Firmware processing for operating system panic data
CN116841629A (zh) 一种网卡功能配置方法、装置及其介质
WO2008048581A1 (en) A processing device operation initialization system
US11106457B1 (en) Updating firmware runtime components
US11972243B2 (en) Memory device firmware update and activation without memory access quiescence
US20210011706A1 (en) Memory device firmware update and activation without memory access quiescence

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
GR01 Patent grant
GR01 Patent grant