CN111427588A - 中止固件包的安装 - Google Patents
中止固件包的安装 Download PDFInfo
- Publication number
- CN111427588A CN111427588A CN202010002036.9A CN202010002036A CN111427588A CN 111427588 A CN111427588 A CN 111427588A CN 202010002036 A CN202010002036 A CN 202010002036A CN 111427588 A CN111427588 A CN 111427588A
- Authority
- CN
- China
- Prior art keywords
- items
- subset
- installation
- firmware
- processor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
描述了中止固件包的安装的示例。在一个示例中,接收中止安装命令。固件包包括项目,每个项目对应于硬件组件和系统软件组件的固件之一。从项目中标识第一项目集合,其中第一项目集合包括成功安装的项目、正在进行安装的项目及其组合之一。从项目中标识第二项目集合,其中第二项目集合正在等待安装。基于预定义依赖性信息从第二集合中标识第一项目子集,其中第一集合中的项目的可操作性依赖于来自第一项目子集的项目。在中止固件包的安装之前,安装第一项目子集。
Description
背景技术
诸如计算机等电子设备包括用其相应固件编程的多个硬件组件。在电子设备的硬件组件上编程的固件提供对硬件组件的控制,并且使得硬件组件能够与电子设备的其他硬件组件交互。固件可以存储在与硬件组件相关联的非易失性存储器中。可以更新硬件组件的相应固件,以修复错误,为硬件组件引入附加特征,以及进行版本升级。
附图说明
以下详细描述参考附图,在附图中:
图1示出了根据一个示例的用于中止固件包的安装的系统;
图2示出了根据另一示例的用于中止固件包的安装的系统;
图3示出了根据一个示例的用于中止固件包的安装的方法;
图4A和4B示出了根据另一示例的用于中止固件包的安装的方法;
图5示出了根据一个示例的实现用于中止固件包的安装的非暂态计算机可读介质的系统环境。
具体实施方式
更新系统的固件通常包括在系统中安装固件包。系统可以是具有数据处理、数据存储和联网能力的计算系统。系统的示例包括个人计算机、服务器、控制器、嵌入式设备、网络交换机等。系统可以包括具有专用功能的不同硬件组件。硬件组件是指系统的物理的有形部分,诸如管理处理器、中央处理单元、随机存取存储器、网络接口卡、硬盘、存储卡等。每个硬件组件可以运行用于控制硬件组件的低级功能的相应固件。固件包是硬件组件和系统软件组件的相应固件的集合。可以安装固件包以用于升级硬件组件和系统软件组件的相应固件。系统软件组件包括被设计为运行计算机的硬件和应用程序的计算机程序。系统软件组件可以被称为硬件与用户应用之间的接口。在一个示例中,固件包可以包括固件封装、驱动器、代理和实用程序。可以安装固件包以支持服务器、控制器和存储单元上的固件和系统软件的升级。
在安装固件包的同时,可以顺序地升级系统的每个硬件组件的相应固件或驱动器。硬件组件的相应固件可以按照安装顺序排列,并且可以按照安装顺序一个接一个地顺序地安装。如果固件包的安装突然中止,则在完成之前,系统中的组件的固件可能会损坏。在一些情况下,由于突然中止的安装,一个硬件组件的固件可以升级到新版本,而另一硬件组件的固件可以保持旧版本。固件的新版本可能与旧版本不兼容,从而使系统无法运行。
为了在完成之前中止固件包的安装,通常可以使用回滚技术。在回滚技术中,当中止安装时,相应硬件组件的所有成功安装的固件封装都将降级到安装之前已经存在的状态。但是,固件回滚会消耗处理资源,并且可能会很耗时。此外,在回滚技术中,如果在按照安装顺序排列在最后的固件的安装期间固件包的安装突然中断,则会回滚先前成功安装的所有组件的固件。这可能进一步增加用于回滚的处理资源消耗和时间消耗。此外,当尝试降级成功安装的硬件组件的固件时,某些硬件组件的固件的回滚操作可能会失败。这可能会导致系统的某些硬件组件运行固件的升级版本,而系统的其他硬件组件可能运行固件的较早版本。固件的升级版本可能与另一固件的旧版本不兼容,从而使系统无法运行。
此外,在另一种技术中,系统的硬盘可以具有多个闪存分区。可以在备用闪存分区上执行固件包的安装。在安装完成之后,可以使备用闪存分区处于活动状态。使用备用分区安装固件包的这种技术可以用于嵌入式设备和网络交换机。但是,企业服务器和基于片上系统(SoC)的设备可能没有闪存分区。此外,企业服务器可以包括由不同供应商制造的硬件组件,这些硬件组件可能不允许将固件包安装在备用闪存分区中。同样,使用闪存分区安装固件包可能会占用系统的大量存储空间。具有更大存储空间的系统的制造可能会增加制造成本。
本公开支持中止固件包的安装而不会不利地影响系统的可操作性。根据本公开,系统可以在固件包的安装正在进行的同时接收中止安装命令。固件包包括多个项目。多个项目中的每个项目对应于系统的硬件组件和系统软件组件的固件之一。在系统中安装固件包是指为了将与系统的相应硬件组件的固件/驱动器相对应的计算机可读指令转移到与相应硬件组件相关联的存储器上使得已安装的固件/驱动器准备好执行而执行的过程。
从固件包中包括的多个项目中标识第一项目集合。第一项目集合包括成功安装的项目、正在进行安装的项目及其组合之一。在项目的安装完成之后,项目称为成功安装的项目,而在接收到中止安装命令时其安装正在处理的项目称为当前安装项目。在一个示例中,当接收到中止安装命令时,如果没有(多个)成功安装的项目,则第一项目集合可以包括当前安装项目。从多个项目中标识第二项目集合,其中第二项目集合正在等待安装。在接收到中止安装命令时尚未启动安装并且正在排队等待安装的项目称为正在等待安装的项目。
基于预定义依赖性信息从第二项目集合中标识第一项目子集。预定义依赖性信息指示多个项目之间的操作依赖性,其中来自第一集合的项目的可操作性依赖于来自第一项目子集的项目。在中止固件包的安装之前,安装第一项目子集。在安装第一项目子集之后,固件包的安装可以中止。中止固件包的安装是指终止与系统中的固件包的部署有关的过程,而无需将固件包完全部署在系统中。
根据本公开,由于(多个)成功安装的项目和当前安装项目所依赖的第一项目子集在中止固件包安装之前被安装,因此,(多个)成功安装的项目和当前安装项目即使在安装中止之后保持正常运行。因此,根据本公开,可以在完成之前中止固件包安装,而不会妨碍(多个)成功安装的项目和当前安装项目的可操作性。由于(多个)成功安装的项目和当前安装项目保持正常运行,因此即使在成功完成之前中止固件包的安装之后,系统保持正常运行。
这可以允许减少维护活动期间的系统的停机时间。此外,在维护活动期间,当固件包的安装花费的时间超过计划的时间时,这种安装可以中止而不会对系统的可操作性产生不利影响。此外,在数据中心遇到网络连接问题或断电的情况下,根据本公开,服务器中的固件包的正在运行的安装可以中止,同时保持服务器的可操作性。此外,当意外地使用与系统不兼容的固件包来升级系统的硬件组件的固件时,本公开可以在保持系统的可操作性的同时中止不兼容的固件包的安装。由于即使在突然中止固件包的安装之后,系统保持可操作,因此还可以减少资源人员修复系统的附加开销。
下面的详细描述参考附图。在可能的情况下,在附图和以下描述中使用相同的附图标记指代相同或相似的部分。尽管在说明书中描述了若干示例,但是修改、适配和其他实现是可能的。因此,以下详细描述不限制所公开的示例。相反,所公开示例的适当范围可以由所附权利要求限定。
根据一个示例,图1示出了用于中止固件包的安装的系统100。系统100可以是具有数据处理、存储和联网能力的计算系统。系统100的示例包括个人计算机、企业服务器、网络交换机、嵌入式系统、控制器、基于SOC的设备等。
系统100包括处理器102和耦合到处理器102的存储器104。存储器104存储由处理器102可执行的指令。这些指令在由处理器102执行时可以引起处理器102启动固件包的安装。固件包包括多个项目。每个项目对应于系统100的硬件组件或系统100的系统软件组件的固件。
硬件组件的示例包括管理处理器、中央处理单元、随机存取存储器、网络接口卡、硬盘、存储卡等。固件包可以包括与每个硬件组件相关联的固件。系统软件组件的示例包括控制可附接到系统100的特定设备(诸如键盘或鼠标)的设备驱动器、系统实用工具(诸如磁盘碎片整理器和系统还原)和开发工具(诸如编译器和调试器)。在一个示例中,当启动固件包的安装时,固件包中包括的项目可以在安装队列中按顺序排列。安装队列保持正在等待安装的项目的列表。
在固件包的安装正在进行的同时,指令在由处理器102执行时可以引起处理器102从用户或系统管理员接收中止安装命令。在一个示例中,中止安装命令可以由来自用户或系统管理员的用户输入来表示,其中用户输入指示固件包的安装将被中止。
之后,接收到中止安装命令,指令在由处理器102执行时引起处理器102从固件包中包括的多个项目中标识第一项目集合。第一项目集合包括成功安装的项目、正在进行安装的项目或两者。
此外,指令在由处理器102执行时引起处理器102从多个项目中标识第二项目集合,其中第二项目集合正在等待安装。正在等待安装并且排列在安装队列中的第二项目集合也可以称为准备(stage)安装项目。
此外,指令在由处理器102执行时引起处理器102基于预定义依赖性信息从第二项目集合中标识第一项目子集。预定义依赖性信息指示多个项目之间的操作依赖性,其中来自第一集合的项目的可操作性依赖于来自第一项目子集的项目。根据预定义依赖性信息,在将第一项目子集安装在系统100中之后,系统100的硬件组件能够运行第一项目集合中包括的固件或驱动器。预定义依赖性信息可以包括在第一项目集合与第一项目集合之间的功能相关性。在一个示例中,预定义依赖性信息作为依赖性列表存储在固件包的固件映像中。固件映像是可以包含与系统100的硬件组件的固件相对应的指令的二进制可执行文件。可以安装固件映像以升级系统100的硬件组件的固件版本。在一个示例中,依赖性列表可以以可扩展标记语言(xml)文件格式、JavaScript对象表示法(json)文件格式和文本(txt)文件格式之一存储为元数据文件。
此外,指令在由处理器102执行时引起处理器102在中止固件包的安装之前安装第一项目子集。因此,在中止固件包的安装之前,安装第一项目子集,(多个)成功安装的项目和当前安装项目的可操作性依赖于该第一项目子集。在安装第一项目子集之后,指令在由处理器102执行时引起处理器102中止固件包的安装。对于本公开,由于(多个)成功安装的项目和当前安装项目保持正常运行,因此在完成之前固件包的安装中止之后,系统100也保持可操作。
图2示出了根据一个示例的用于中止固件包的安装的系统200。在一个示例中,系统200可以是数据中心中的企业服务器、网络交换机、嵌入式设备和基于SoC的计算架构。
系统200包括处理器102和耦合到处理器102的存储器104。存储器104存储由处理器102可执行的指令。处理器102可以被实现为微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和基于操作指令来操纵信号的任何设备。除了其他能力,处理器102还被配置为获取和执行存储在存储器104中的计算机可读指令。计算机可读指令(也称为指令)包括(多个)指令202。(多个)指令202可以包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、应用、数据结构等。由(多个)处理器可执行的指令也可以称为处理器可执行指令。执行指令以执行功能可以被互换地称为指令引起功能的执行或指令使得能够执行功能。
图2所示的各种元件的功能(包括标记为“(多个)处理器”的任何功能块)可以通过使用专用硬件以及能够执行软件的硬件来提供。在由处理器提供时,这些功能可以由单个专用处理器、单个共享处理器或多个单独的处理器(其中一些可以共享)提供。此外,术语“处理器”的明确使用不应当被解释为专门指代能够执行软件的硬件,而是可以隐含地包括但不限于数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)、非易失性存储器。也可以包括其他定制硬件。
存储器104可以包括本领域已知的任何计算机可读介质,包括例如易失性存储器(例如,RAM)和/或非易失性存储器(例如,EPROM、闪存等)。(多个)指令202包括(多个)项目标识指令204,(多个)项目标识指令204对应于存储在计算机可读介质上并且由处理器可执行以标识第一项目集合、第二项目集合、第一项目子集、第二项目子集和第三项目子集的指令。(多个)指令202还包括补充系统200上的应用(例如,操作系统的功能的执行)的(多个)其他指令205。
数据208尤其用作存储可以在处理器102执行(多个)指令202期间获取、处理、接收或生成的数据的存储库。数据208包括安装项目数据210、等待项目数据212和依赖性数据214,安装项目数据210存储与成功安装的固件包中的固件或驱动器有关的数据,等待项目数据212存储与正在等待安装的固件包中的固件或驱动器有关的数据,依赖性数据214存储与一个硬件组件的固件/驱动器与另一硬件组件的固件/驱动器之间的操作依赖性有关的数据。系统100还包括可以在(多个)其他指令206的执行期间获取、处理、接收或生成的其他数据216。
考虑固件包的安装在系统200中正在进行。固件包可以包括与系统200的硬件组件的固件或驱动器相对应的项目。在一个示例中,固件包的安装可以通过执行固件映像来启动。在固件包的安装期间,每个项目按顺序排列在安装队列中,并且基于安装队列中的顺序,这些项目被一个接一个地安装。在成功安装项目之后,该项目可以从安装队列中删除,或者可以被标记为成功安装的项目。正在进行安装的项目也可以在安装队列中标记为当前安装项目。在一个示例中,安装队列保持正在等待安装的项目的列表。
固件包中的项目在操作上可以相互依赖。例如,组件A的固件/驱动器在操作上可以依赖于组件B的固件/驱动器。在该示例中,为了执行组件A的固件/驱动器,将在组件B中对组件B的固件/驱动器进行编程。固件包中的项目之间的操作依赖性可以通过预定义依赖性信息来指示。预定义依赖性信息可以作为依赖性列表存储在固件映像内的元数据文件中。元数据文件可以以可扩展标记语言(xml)文件格式、JavaScript对象表示法(json)文件格式和文本(txt)文件格式之一保持。
在固件包的安装期间,系统200可以接收中止安装命令。在一个示例中,中止安装命令可以是来自用户/管理员的用户输入。在接收到中止安装命令之后,(多个)项目标识指令204在由处理器102执行时引起处理器102标识固件包的安装是否完成。在一个示例中,(多个)项目标识指令204可以引起处理器102检查固件映像是否已经生成更新成功消息。如果生成了更新成功消息,则表明固件包的安装已经成功完成。如果未生成更新成功消息,则表明固件包的安装正在进行。当表明固件包的安装成功完成时,可以安全地中止安装。
当表明固件包的安装正在进行时,(多个)项目标识指令204能够从固件包中包括的项目中标识第一项目集合。第一项目集合包括成功安装的项目、正在进行安装的项目及其组合之一。在一个示例中,如果没有(多个)成功安装的项目,则第一项目集合包括在接收到中止安装命令时正在进行安装的项目。此外,(多个)项目标识指令204引起从固件包中包括的项目中标识第二项目集合,其中第二项目集合正在等待安装。在一个示例中,(多个)项目标识指令204引起处理器102获取安装队列以获取(多个)成功安装的项目、当前安装项目和(多个)正在等待安装的项目的列表。在一个示例中,(多个)成功安装的项目和当前安装项目被分组在第一项目集合中。(多个)正在等待安装的项目被分组在第二项目集合中。
此外,处理器102对(多个)项目标识指令204的执行引起处理器102基于预定义依赖性信息来确定在第一项目集合与第二项目集合之间是否存在操作依赖性。当确定第一项目集合在操作上独立于第二项目集合时,(多个)项目标识指令204允许中止固件包的安装。
当确定在第一项目集合与第二项目集合之间存在操作依赖性时,(多个)项目标识指令204引起基于预定义依赖性信息来从第二项目集合中标识第一项目子集。标识第一项目子集使得来自第一项目集合的项目的可操作性依赖于来自第一项目子集的项目。因此,第一项目子集包括如下项目:这些项目是正在等待安装的项目并且(多个)成功安装的项目或当前安装项目在操作上依赖于这些项目。
在标识第一项目子集之后,(多个)项目标识指令204引起基于预定义依赖性信息来从第二项目集合中标识第二项目子集。标识第二项目子集使得第一项目集合的可操作性独立于第二项目子集。因此,第二项目子集包括正在等待安装的项目,而(多个)成功安装的项目或当前安装项目在操作上独立于第二项目子集。(多个)项目标识指令204使得能够从安装队列中删除第二项目子集。
在一个示例中,(多个)项目标识指令204基于预定义依赖性信息来从第二项目集合中标识第三项目子集,使得来自第一项目子集的项目的可操作性依赖于来自第三项目子集的项目。因此,第三项目子集包括如下项目:这些项目是正在等待安装的项目并且来自第一项目子集的项目在操作上依赖于这些项目。在一个示例中,第三项目子集可以通过分析预定义依赖性信息来标识。
在标识第三项目子集之后,(多个)项目标识指令204使得能够安装当前安装项目。在成功安装当前安装项目之后,安装第一项目子集,然后安装第三项目子集。在安装第三项目子集之后,由处理器102执行(多个)项目标识指令204,(多个)项目标识指令204引起处理器102中止固件包的安装。
图3示出了根据一个示例的用于中止固件包的安装的方法300。方法300可以由诸如系统100或200等系统执行。方法300可以通过任何合适的硬件、非暂态机器可读介质或其组合使用(多个)处理资源或(多个)计算设备来实现。在一个示例中,方法300的(多个)步骤可以通过执行计算机可读指令来执行,诸如(多个)项目标识指令204,这些指令包括存储在介质上并且由诸如系统100或200等系统的处理资源(诸如处理器102)可执行的指令。此外,尽管在前述系统100或200的上下文中描述方法300,但是其他合适的系统也可以用于执行方法300。应当理解,方法300中涉及的过程可以基于存储在非暂态计算机可读介质中的指令来执行。非暂态计算机可读介质可以包括例如数字存储器、磁存储介质(诸如磁盘和磁带)、硬盘驱动器或光学可读数字数据存储介质。
参考图3,在框302,在诸如系统100或200等系统中正在进行固件包的安装的同时,接收中止安装命令。在一个示例中,中止安装命令可以对应于由系统的用户/管理员提供的用户输入。中止安装命令指示将中止固件包的安装。固件包包括多个项目。多个项目中的每个项目对应于硬件组件和系统软件组件的固件之一。固件包中的项目的可操作性可以依赖于固件包中的另一项目。例如,固件包可以包括硬件组件A的固件更新和硬件组件B的固件更新。硬件组件A的固件更新可以在操作上依赖于硬件组件B的固件更新。固件包的项目之间的这样的操作依赖性信息可以通过预定义依赖性信息来指示。可以将预定义依赖性信息作为依赖性列表存储在固件包的固件映像中,其中固件映像用于固件版本的升级。在一个示例中,依赖性列表可以以可扩展标记语言(xml)文件格式、JavaScript对象表示法(json)文件格式和文本(txt)文件格式之一存储为元数据文件。
在框304,从固件包中包括的多个项目中标识第一项目集合。第一项目集合包括成功安装的项目、正在进行安装的项目及其组合之一。在框306,从多个项目中标识第二项目集合。第二项目集合包括正在等待安装的项目。在一个示例中,第二项目集合可以按顺序排列在安装队列中,该安装队列保持正在等待安装的项目的列表。
在框308,基于预定义依赖性信息从第二项目集合中标识第一项目子集,使得来自第一项目集合的项目的可操作性依赖于来自第一项目子集的项目。在框310,在中止固件包的安装之前,安装第一项目子集。
图4A和4B示出了根据一个示例的用于中止固件包的安装的方法400。方法400可以由诸如系统100或200等系统执行。方法400可以通过任何合适的硬件、非暂态机器可读介质或其组合使用(多个)处理资源或(多个)计算设备来实现。在一个示例中,方法400可以由计算机可读指令来执行,诸如(多个)项目标识指令204,这些指令包括存储在介质上并且由诸如系统100或200等系统的处理资源(诸如处理器102)可执行的指令。此外,尽管在前述系统100或200的上下文中描述方法400,但是其他合适的系统也可以用于执行方法400。应当理解,方法400中涉及的过程可以基于存储在非暂态计算机可读介质中的指令来执行。非暂态计算机可读介质可以包括例如数字存储器、磁存储介质(诸如磁盘和磁带)、硬盘驱动器或光学可读数字数据存储介质。
参考图4A和4B,在框402,可以启动固件包的安装。固件包包括作为系统的硬件组件或系统软件组件(诸如设备驱动器)的固件的项目。固件包中的项目可以在操作上依赖于固件包中的另一项目。项目的操作依赖性可以在提供预定义依赖性信息的依赖性列表中预定义。固件包的安装可以通过执行固件映像来启动。在一个示例中,预定义依赖性信息可以存储在固件映像中。在固件包的安装期间,将项目按顺序排列在安装队列中,该安装队列保持正在等待安装的项目的列表。这些项目基于安装队列中的顺序一个接一个地安装。
在框404,在安装正在进行的同时,从系统的用户/管理员接收中止安装命令。在框406,检查固件包的安装是否完成。在一个示例中,可以分析安装队列以确定安装是否完成。
如果安装没有完成,则在框408(框406的“否”分支),从固件包的项目中标识第一项目集合。第一项目集合包括成功安装的项目或正在进行安装的项目或两者。
在框410,从固件包中的项目中标识第二项目集合。第二项目集合正在等待安装。在框412,基于预定义依赖性信息来检查在第一项目集合与第二项目集合之间是否存在操作依赖性。当确定第一项目集合在操作上独立于第二项目集合时,中止固件包的安装。
当确定来自第一集合的项目依赖于来自第二集合的项目时,在框414,基于预定义依赖性信息从第二项目集合中标识第一项目子集。来自第一集合的项目的可操作性依赖于来自第一项目子集的项目。
在标识第一项目子集之后,在框416,可以基于预定义依赖性信息从第二项目集合中标识第二项目子集,使得第一项目集合的可操作性独立于第二项目子集。在框418,从安装队列中删除第二项目子集。
在框420,基于预定义依赖性信息从第二项目集合中标识第三项目子集,使得来自第一子集的项目的可操作性依赖于来自第三项目子集的项目。在框422,对于当前正在进行安装的项目完成安装。在框424,安装第一项目子集。在框426,安装第三项目子集。在成功安装第三项目子集之后,在框428,中止固件包的安装。
图5示出了根据一个示例实现的用于中止固件包的安装的非暂态计算机可读介质的系统环境500。在一个示例中,系统环境500包括通过通信链路506通信地耦合到非暂态计算机可读介质504的(多个)处理器502。在一个示例中,系统环境500可以是诸如系统100或200等系统。在一个示例中,(多个)处理器502可以具有用于从非暂态计算机可读介质504获取和执行计算机可读指令的一个或多个处理资源。
非暂态计算机可读介质504可以是例如内部存储器设备或外部存储器设备。在一个示例实现中,通信链路506可以是直接通信链路,诸如任何存储器读/写接口。
(多个)处理器502和非暂态计算机可读介质504也可以通过诸如因特网等网络通信地耦合到数据源508。数据源508可以包括例如诸如系统100或200等系统的存储器。
在一个示例实现中,非暂态计算机可读介质504包括可以由(多个)处理器502通过通信链路506访问并且随后被执行以执行用于中止固件包的安装的动作的一组计算机可读指令。
参考图5,在一个示例中,非暂态计算机可读介质504包括引起(多个)处理器502在固件包的安装正在进行的同时接收中止安装命令的指令510。固件包包括多个项目,多个项目中的每个项目对应于硬件组件和系统软件组件的固件之一。项目可以在操作上相互依赖。固件包可以包括指示项目之间的操作依赖性的预定义依赖性信息。在一个示例中,预定义依赖性信息可以作为依赖性列表存储在固件包的固件映像中,其中固件映像用于固件版本的升级。
此外,非暂态计算机可读介质504包括引起(多个)处理器502从固件包中包括的项目中标识第一项目集合的指令512。第一项目集合包括成功安装的项目、正在进行安装的项目或其组合之一。
非暂态计算机可读介质504包括引起(多个)处理器502从固件包中包括的项目中标识第二项目集合的指令514,其中第二项目集合正在等待安装。此外,在一个示例中,非暂态计算机可读介质504包括引起(多个)处理器502基于预定义依赖性信息来确定在第一项目集合与第二项目集合之间是否存在操作依赖性的指令。当确定第一项目集合在操作上独立于第二项目集合时,非暂态计算机可读介质504包括引起(多个)处理器502中止固件包的安装的指令。
当确定来自第一项目集合的项目在操作上依赖于来自第二项目集合的项目时,非暂态计算机可读介质504包括引起(多个)处理器502基于预定义依赖性信息从第二项目集合中标识第一项目子集的指令516,使得来自第一集合的项目的可操作性依赖于来自第一项目子集的项目。
在一个示例中,非暂态计算机可读介质504包括引起(多个)处理器502在标识第一项目子集之后基于预定义依赖性信息从第二项目集合中标识第二项目子集的指令。第一项目集合的可操作性独立于第二项目子集。非暂态计算机可读介质504包括引起(多个)处理器502从安装队列中删除第二项目子集的指令。
在另一示例中,非暂态计算机可读介质504包括引起(多个)处理器502基于预定义依赖性信息从第二项目集合中标识第三项目子集的指令,使得来自第一子集的项目的操作性依赖于来自第三项目子集的项目。
非暂态计算机可读介质504包括引起(多个)处理器502安装正在进行安装的项目的指令518。此外,非暂态计算机可读介质504包括引起(多个)处理器502在中止固件包的安装之前安装第一项目子集的指令520。在安装第一项目子集之后,可以中止固件包的安装,而不会对系统的可操作性造成不利影响。
尽管已经以特定于结构特征和/或方法的语言描述了本主题的实现,但是应当注意,本主题不必限于所描述的特定特征或方法。相反,在本主题的一些实现的上下文中公开和解释特定的特征和方法。
Claims (20)
1.一种用于中止固件包的安装的方法,所述方法包括:
在所述固件包的安装正在进行的同时接收中止安装命令,所述固件包包括多个项目,所述多个项目中的每个项目对应于硬件组件和系统软件组件的固件之一;
从所述多个项目中标识第一项目集合,其中所述第一项目集合包括成功安装的项目、正在进行安装的项目及其组合之一;
从所述多个项目中标识第二项目集合,其中所述第二项目集合正在等待安装;
基于预定义依赖性信息从所述第二项目集合中标识第一项目子集,所述预定义依赖性信息指示所述多个项目之间的操作依赖性,其中来自第一集合的项目的可操作性依赖于来自所述第一项目子集的项目;以及
在中止所述固件包的安装之前,安装所述第一项目子集。
2.根据权利要求1所述的方法,还包括:
在标识所述第一项目子集之后,基于所述预定义依赖性信息从所述第二项目集合中标识第二项目子集,其中所述第一项目集合的可操作性独立于所述第二项目子集;以及
从安装队列中删除所述第二项目子集,其中所述安装队列保持正在等待安装的项目的列表。
3.根据权利要求1所述的方法,还包括:
在所述第一项目子集被安装之后,中止所述固件包的安装。
4.根据权利要求1所述的方法,还包括:
在标识所述第一项目子集之前,基于所述预定义依赖性信息来确定在所述第一项目集合与所述第二项目集合之间是否存在操作依赖性;以及
当确定所述第一项目集合在操作上独立于所述第二项目集合时,中止所述固件包的安装。
5.根据权利要求1所述的方法,还包括:
基于所述预定义依赖性信息从所述第二项目集合中标识第三项目子集,其中来自第一子集的项目的可操作性依赖于来自所述第三项目子集的项目;以及
在中止所述固件包的安装之前,安装所述第三项目子集。
6.根据权利要求1所述的方法,还包括:
在安装所述第一项目子集之前,安装所述正在进行安装的项目。
7.根据权利要求1所述的方法,其中所述预定义依赖性信息作为依赖性列表被存储在所述固件包的固件映像中,其中所述固件映像用于固件版本的升级。
8.根据权利要求7所述的方法,其中所述依赖性列表以可扩展标记语言(xml)文件格式、JavaScript对象表示法(json)文件格式和文本(txt)文件格式之一被存储为元数据文件。
9.一种系统,包括:
处理器;以及
耦合到所述处理器的存储器,所述存储器存储指令,所述指令由所述处理器可执行以:
在固件包的安装正在进行的同时接收到用于中止所述安装的命令时,从被包括在所述固件包中的多个项目中标识第一项目集合,所述多个项目中的每个项目对应于所述系统的硬件组件和系统软件组件的固件之一,其中所述第一项目集合包括成功安装的项目、正在进行安装的项目及其组合之一;
从所述多个项目中标识第二项目集合,其中所述第二项目集合正在等待安装;
基于预定义依赖性信息从所述第二项目集合中标识第一项目子集,所述预定义依赖性信息指示所述多个项目之间的操作依赖性,其中来自第一集合的项目的可操作性依赖于来自所述第一项目子集的项目;
安装所述第一项目子集;以及
在所述第一项目子集被安装之后,中止所述固件包的安装。
10.根据权利要求9所述的系统,其中所述处理器还用于:
在标识所述第一项目子集之后,基于所述预定义依赖性信息从所述第二项目集合中标识第二项目子集,其中所述第一项目集合的可操作性独立于第二项目子集;以及
从安装队列中删除所述第二项目子集,其中所述安装队列保持正在等待安装的项目的列表。
11.根据权利要求9所述的系统,其中所述处理器还用于:
在标识所述第一项目子集之前,基于所述预定义依赖性信息来确定在所述第一项目集合与所述第二项目集合之间是否存在操作依赖性;以及
当确定所述第一项目集合在操作上独立于所述第二项目集合时,中止所述固件包的安装。
12.根据权利要求9所述的系统,其中所述处理器还用于:
基于所述预定义依赖性信息从所述第二项目集合中标识第三项目子集,其中来自第一子集的项目的可操作性依赖于来自所述第三项目子集的项目;以及
在中止所述固件包的安装之前,安装所述第三项目子集。
13.根据权利要求9所述的系统,其中所述处理器还用于:
在安装所述第一项目子集之前,安装所述正在进行安装的项目。
14.根据权利要求9所述的系统,其中所述预定义依赖性信息作为依赖性列表被存储在所述固件包的固件映像中,其中所述固件映像用于固件版本的升级。
15.根据权利要求14所述的系统,其中所述依赖性列表以可扩展标记语言(xml)文件格式、JavaScript对象表示法(json)文件格式和文本(txt)文件格式之一被存储为元数据文件。
16.一种非暂态计算机可读介质,包括计算机可读指令,所述计算机可读指令在由处理器执行时引起所述处理器:
在固件包的安装正在进行的同时接收中止安装命令,所述固件包包括多个项目,所述多个项目中的每个项目对应于硬件组件和系统软件组件的固件之一;
从所述多个项目中标识第一项目集合,其中所述第一项目集合包括成功安装的项目、正在进行安装的项目及其组合之一;
从所述多个项目中标识第二项目集合,其中所述第二项目集合正在等待安装;
基于预定义依赖性信息从所述第二项目集合中标识第一项目子集,所述预定义依赖性信息指示所述多个项目之间的操作依赖性,其中来自第一集合的项目的可操作性依赖于来自所述第一项目子集的项目;
安装所述正在进行安装的项目;以及
在中止所述固件包的安装之前,安装所述第一项目子集。
17.根据权利要求16所述的非暂态计算机可读介质,其中所述计算机可读指令在由所述处理器执行时还引起所述处理器:
在标识所述第一项目子集之后,基于所述预定义依赖性信息从所述第二项目集合中标识第二项目子集,其中所述第一项目集合的可操作性独立于所述第二项目子集;以及
从安装队列中删除所述第二项目子集,其中所述安装队列保持正在等待安装的项目的列表。
18.根据权利要求16所述的非暂态计算机可读介质,其中所述计算机可读介质在由所述处理器执行时还引起所述处理器:
在标识所述第一项目子集之前,基于所述预定义依赖性信息来确定在所述第一项目集合与所述第二项目集合之间是否存在操作依赖性;以及
当确定所述第一项目集合在操作上独立于所述第二项目集合时,中止所述固件包的安装。
19.根据权利要求16所述的非暂态计算机可读介质,其中所述计算机可读指令在由所述处理器执行时还引起所述处理器:
基于所述预定义依赖性信息从所述第二项目集合中标识第三项目子集,其中来自第一子集的项目的可操作性依赖于来自所述第三项目子集的项目;以及
在中止所述固件包的安装之前,安装所述第三项目子集。
20.根据权利要求16所述的非暂态计算机可读介质,其中所述预定义依赖性信息作为依赖性列表被存储在所述固件包的固件映像中,其中所述固件映像用于固件版本的升级。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/245,186 | 2019-01-10 | ||
US16/245,186 US11397570B2 (en) | 2019-01-10 | 2019-01-10 | Abort installation of firmware bundles |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111427588A true CN111427588A (zh) | 2020-07-17 |
Family
ID=71132194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010002036.9A Pending CN111427588A (zh) | 2019-01-10 | 2020-01-02 | 中止固件包的安装 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11397570B2 (zh) |
CN (1) | CN111427588A (zh) |
DE (1) | DE102019135079A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11385889B2 (en) * | 2019-12-04 | 2022-07-12 | Oracle International Corporation | Inferring intra package and module dependencies |
US11275574B2 (en) * | 2020-02-03 | 2022-03-15 | Dell Products L.P. | Recovering the last successful device update on a computing system |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6363499B1 (en) * | 1998-09-21 | 2002-03-26 | Microsoft Corporation | Method and system for restoring a computer to its original state after an unsuccessful installation attempt |
US20030018964A1 (en) * | 2001-07-19 | 2003-01-23 | International Business Machines Corporation | Object model and framework for installation of software packages using a distributed directory |
US20060010425A1 (en) * | 2001-10-29 | 2006-01-12 | Willadsen Gloria J | Methods and apparatus for automated mangement of software |
US7185335B2 (en) * | 2002-09-19 | 2007-02-27 | International Business Machines Corporation | Programmatic application installation diagnosis and cleaning |
US7478385B2 (en) * | 2003-01-17 | 2009-01-13 | National Instruments Corporation | Installing software using programmatic component dependency analysis |
US20050102666A1 (en) * | 2003-11-10 | 2005-05-12 | International Business Machines (Ibm) Corporation | Pre-deployment component hosting environment analyzer |
US20050125788A1 (en) * | 2003-12-03 | 2005-06-09 | International Business Machines Corporation | Wizard-based installation package with run-time debugging support |
US7568195B2 (en) * | 2003-12-16 | 2009-07-28 | Microsoft Corporation | Determining a maximal set of dependent software updates valid for installation |
US20050289513A1 (en) * | 2004-06-17 | 2005-12-29 | International Business Machines Corporation | Matrix pattern match techniques for uninstalling multiple dependent components |
CN101027639A (zh) | 2004-07-21 | 2007-08-29 | 索芙特瑞斯提股份有限公司 | 用于在软件应用程序储存库内提取和创建应用程序元信息的系统和方法 |
US20060031827A1 (en) * | 2004-08-05 | 2006-02-09 | International Business Machines Corporation | System, apparatus and method of assisting with software product update installations |
US8287381B2 (en) | 2005-07-18 | 2012-10-16 | Wms Gaming Inc. | Content dependency verification for a gaming machine |
US7779091B2 (en) * | 2005-12-19 | 2010-08-17 | Vmware, Inc. | Method and system for providing virtualized application workspaces |
US9112891B2 (en) | 2007-02-02 | 2015-08-18 | Sharp Laboratories Of America, Inc. | Remote firmware management for electronic devices |
US9575739B2 (en) * | 2013-03-06 | 2017-02-21 | International Business Machines Corporation | Performing unattended software installation |
US9921882B2 (en) * | 2013-04-17 | 2018-03-20 | Nec Corporation | Information processing system, deployment method, processing device, and deployment device |
US20140359593A1 (en) * | 2013-05-31 | 2014-12-04 | Microsoft Corporation | Maintaining known dependencies for updates |
US9182966B2 (en) * | 2013-12-31 | 2015-11-10 | International Business Machines Corporation | Enabling dynamic software installer requirement dependency checks |
US10152211B2 (en) * | 2014-11-11 | 2018-12-11 | Amazon Technologies, Inc. | Application delivery agents on virtual desktop instances |
DE102014118290A1 (de) | 2014-12-10 | 2016-06-16 | Océ Printing Systems GmbH & Co. KG | Verfahren zum Konfigurieren einer Steuerungseinrichtung für ein Produktionssystem und ein solches Produktionssystem |
US9710253B2 (en) * | 2015-04-16 | 2017-07-18 | Commvault Systems, Inc. | Managing a software-patch submission queue |
US10447814B2 (en) | 2017-02-02 | 2019-10-15 | Microsoft Technology Licensing, Llc | Joint servicing of software packages |
-
2019
- 2019-01-10 US US16/245,186 patent/US11397570B2/en active Active
- 2019-12-19 DE DE102019135079.4A patent/DE102019135079A1/de active Pending
-
2020
- 2020-01-02 CN CN202010002036.9A patent/CN111427588A/zh active Pending
-
2022
- 2022-06-28 US US17/809,392 patent/US11983519B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
DE102019135079A1 (de) | 2020-07-16 |
US11983519B2 (en) | 2024-05-14 |
US11397570B2 (en) | 2022-07-26 |
US20220326927A1 (en) | 2022-10-13 |
US20200225923A1 (en) | 2020-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9471365B2 (en) | Techniques for performing virtual machine software upgrades using virtual disk swapping | |
US8286154B2 (en) | Apparatus and method for live loading of version upgrades in a process control environment | |
US7774636B2 (en) | Method and system for kernel panic recovery | |
US9507581B2 (en) | Systems and methods of device firmware delivery for pre-boot updates | |
JP5444368B2 (ja) | アプリケーション復元ポイント | |
US8918783B2 (en) | Managing virtual computers simultaneously with static and dynamic dependencies | |
US9075695B2 (en) | Version conflict checking to installable unit | |
US11983519B2 (en) | Abort installation of firmware bundles | |
US8887149B2 (en) | Time shift configuration management for software product installation | |
US20120151258A1 (en) | System reset | |
US20150089494A1 (en) | Virtual machine template optimization | |
US9690564B2 (en) | Runtime detection of software configurations and upgrades | |
US20150113516A1 (en) | Assigning severity to a software update | |
US11669325B2 (en) | Desired state model for managing lifecycle of virtualization software | |
US11269609B2 (en) | Desired state model for managing lifecycle of virtualization software | |
US20110265072A1 (en) | Dynamic Installation of Files for Running Programs | |
WO2016111673A1 (en) | Multi-tenant upgrading | |
US9904574B2 (en) | Parallel computing without requiring antecedent code deployment | |
US20230342181A1 (en) | Validation of combined software/firmware updates | |
CN112631621A (zh) | 一种依赖包管理方法、装置、服务器及存储介质 | |
US11573779B2 (en) | Creating and upgrading of solutions for deployment in a virtualized computing environment | |
EP1160666A2 (en) | Switching versions of software in a system background | |
JP2016173746A (ja) | 情報処理装置及びその制御方法、プログラム | |
CN117472462A (zh) | 插件运行方法、装置、桌面操作系统、电子设备 | |
CN112667413A (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 |