CN117836770A - 生成和分发定制的嵌入式操作系统 - Google Patents

生成和分发定制的嵌入式操作系统 Download PDF

Info

Publication number
CN117836770A
CN117836770A CN202280056945.8A CN202280056945A CN117836770A CN 117836770 A CN117836770 A CN 117836770A CN 202280056945 A CN202280056945 A CN 202280056945A CN 117836770 A CN117836770 A CN 117836770A
Authority
CN
China
Prior art keywords
image package
image
package
manifest
target device
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
Application number
CN202280056945.8A
Other languages
English (en)
Inventor
S·胡鲁利
R·R·奥林斯基
M·A·考斯顿
R·L·霍尔特
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 CN117836770A publication Critical patent/CN117836770A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及构建和最终完成OS映像包,使得允许OS映像的灵活性和定制化的同时防止在一个或多个目标设备(例如,嵌入式设备)上部署操作系统(OS)映像包之后的某些运行时修改。例如,本文描述的系统可基于来自提供目标OS的声明式摘要的OS清单的信息来构建OS映像包。本文描述的系统还可以通过在OS映像包上执行一个或多个动作来最终完成OS映像包,这些动作防止最终用户在部署OS映像包之后对目标OS执行各种运行时修改。该最终完成过程提供了用于实现OS更新的改进流水线,同时提供了针对与大规模部署OS映像包相关联的各种安全风险的保护措施。

Description

生成和分发定制的嵌入式操作系统
背景技术
近年来已经看到计算设备在各种应用中的使用急剧增加。随着计算设备变得越来越普遍,具有不同级别的能力和功能的各种计算设备已经在更多种类的应用和设备上实现。例如,除了其上实现的越来越复杂的微处理器的计算系统和服务器设备之外,嵌入式系统在消费者、工业、汽车、医疗和其它应用中变得越来越常见。
随着这些嵌入式系统和相关联的嵌入式设备在复杂性和连接性方面的增加,出现了多个困难。例如,随着嵌入式设备的复杂性增加并且变得更加集成在无线通信网络中,这些嵌入式设备引起了安全问题,特别是在可以相对容易地修改嵌入式设备的专用功能的情况下。此外,随着嵌入式设备的复杂性增加并提供更广范围的功能特征,多个嵌入式设备经重新编程或重新配置以从未预期的方式操作,这可引起安全性和/或安全风险的组合。
在广泛的规模上存在与部署嵌入式设备和相关联的嵌入式系统有关的这些和其它挑战。
附图说明
图1示出了根据一个或多个实施例的其中操作系统(OS)映像生成系统在计算设备上实现的示例环境。
图2示出了根据一个或多个实施例的用于构建和封装OS映像包的OS映像生成系统的示例实现。
图3示出了根据一个或多个实施例的在最终完成之前生成并更新OS映像包的示例实现。
图4示出了根据一个或多个实施例更新和重新部署所部署的OS映像包的示例实现。
图5示出了根据一个或多个实施例的包括目标设备OS的声明式摘要的示例OS清单(manifest)。
图6示出了根据一个或多个实施例的由OS映像生成系统生成的OS映像包的示例实现。
图7示出了根据一个或多个实施例的用于构建、最终完成和部署OS映像包的示例动作系列。
图8示出了可包括在计算机系统内的某些组件。
具体实施方式
本公开总体上涉及构建和最终完成OS映像包,使得防止在目标类别设备(例如,嵌入式设备)上部署和安装OS映像包之后的运行时修改。具体地,OS映像生成系统可基于来自OS清单的信息来构建OS映像包,该OS清单提供要在特定目标设备类别的一个或多个目标设备上实例化的目标设备OS的声明式摘要(declarative summary)。OS映像生成系统还可以通过在(多个)目标设备上安装目标设备OS时封装包并防止对最终完成的OS映像包的运行时修改来最终完成OS映像包。本申请还描述了涉及部署OS映像包以及进一步开发(例如,在最终完成之前或之后)和向OS映像包提供部署后更新有关的特征,使得提供OS映像包的定制以及针对与大规模部署OS映像包相关联的各种安全风险的保障。
作为说明性示例,并且如下面将进一步详细讨论,其上实现有OS映像生成系统的计算设备可以接收OS清单,该OS清单包括要在目标设备类别的目标设备上实例化的目标设备OS的声明式摘要,并且包括多个资源标识符。OS映像生成系统可以基于包含在OS清单内的信息从基础OS模板构建OS映像包。例如,OS清单可包括可在OS映像包内安装或以其他方式实现的各种资源(例如,可执行包、OS内核、各种模块)的指示。OS映像生成系统还可以通过封装OS映像包来生成最终完成的OS映像包,使得防止在将OS映像包分发到多个目标设备之后对最终完成的OS映像包进行运行时修改。OS映像生成系统还可以使OS映像包被部署到一个或多个目标设备(例如,类似的目标设备类的)。
本公开包括提供益处和/或解决与大规模生成和分发OS映像包相关联的问题的多个实际应用,使得实现定制和灵活功能同时还防止在一个或多个目标设备上部署OS映像包之后的运行时修改。下面进一步详细讨论这些应用和益处的一些非限制性示例。
例如,通过根据本文描述的实施例最终完成(例如,封装)OS映像包,系统防止可用于暴露(多个)目标设备的安全风险的运行时修改。例如,如将在下面进一步详细讨论的,系统可以执行一个或多个最终完成动作,其防止可以在开发者和/或设备所有者不知道的情况下安装的设备的可能有害的应用。
作为另一示例,根据本文描述的一个或多个实施例最终完成OS映像包可促进目标OS的方便且高效的更新,即使在部署了最终完成的OS映像包之后。例如,在针对特定目标类别在目标设备集上部署OS映像包的情况下,可以由目标设备的开发者或制造商执行进一步的更新,并且以统一的方式在该目标机器集上重新部署。特别地,作为封装OS映像包以防止运行时修改的结果,基于目标设备上的目标OS在OS安装之后没有被修改的安全假设,更新映像包可以是跨目标设备类的多个设备的标准过程。与由于已应用于选择性目标系统的单独运行时修改的结果而具有不同依赖性和在其上实现的应用程序的操作系统相比,更新过程的这种标准化使得能够以更小的难度和费用来调出OS更新。
本文所描述的系统还可促进在离线环境中的OS映像内安装各种资源。该离线实现使得OS映像包能够在各种平台上被实例化。例如,如本文将讨论的,本文所描述的系统的一个或多个实施例可以以使得能够在开发机器而不是目标机器上运行后处理脚本的方式来模拟目标设备的运行时环境(例如,在由开发者机器提供的离线环境中)。此外,与为每个平台分发和测试驱动程序的困难且耗时的过程相比,本文所描述的系统可并入通常以个别包或馈送为目标的资源标识符,因此提供使开发者能够存取特定硬件(例如,微处理器)支持的最新操作系统的简单管线。这允许增加驱动器并促进更容易的在下游的分发,而不需要开发者单独选择库、包和驱动器组件。此外,在目标设备的体系结构不同于开发机器的情况下,本文描述的各种源的安装可能是困难的。
如将在下面进一步详细讨论的,可以实现本文描述的益处的每个,同时仍然允许在OS映像包内并入的特征和功能中的定制和灵活性。例如,因为可以以离线方式执行OS映像包的构建和更新,所以不同开发者机器上的多个开发者可以在部署最终完成的OS映像包之前参与OS映像包的开发。这种离线开发还使能够以使OS映像生成系统能够利用可经由各种馈送访问的包和其它资源的方式从多个资源馈送(resource feed)中拉取资源。实际上,如将在本文中进一步详细讨论的,这些资源馈送可以源自任何数目的源,并且在一些情况下,指由开发者本身创建的定制的或本地的馈送。
如前述讨论中所示,本公开利用各种术语来描述本文所描述的系统的特征和优点。现在提供关于一些示例性术语的含义的附加的细节。
例如,如本文所使用的,“目标设备”可以指为其开发操作系统(OS)映像包的任何计算或处理设备。在本文描述的一个或多个实施例中,目标设备具体指嵌入式设备或多个嵌入式设备的系统。在一个或多个实施例中,目标设备是指具有专用计算硬件的嵌入式设备,该专用计算硬件可以具有或可以不具有到一个或多个附加计算设备的连通性。本文所描述的一个或多个实施例中,目标设备可以具有安装在其上的OS,该OS将目标设备配置为执行一个或多个应用的离散集合。在一个或多个实施例中,目标设备可以指其上具有传感器、相机或任何其他内容捕获设备的物联网(IOT)设备,该设备能够执行数据的一些处理并通过本地或非本地网络将数据传输到一个或多个附加设备。
如本文所使用的,“OS映像”或“OS映像包”可交换地指文件或文件集,其包含操作系统、可执行包以及与可在设备(例如,目标设备)上执行的一个或多个应用相关的任何数据(例如,数据文件、文件系统)。在本文描述的一个或多个实施例中,OS映像包可以指逻辑上由OS内核、可执行包、二进制文件(binary)、数据内容(例如,映像、文本)、元数据和本文描述的任何其它内容组成的线性比特集。如本文将进一步详细讨论的,OS映像可以通过添加或安装与OS清单内引用的各种标识符相关联的各种资源来构建。
如本文所使用的,“资源”或“OS资源”可指可被安装或以其它方式添加到OS映像包的各种对象或内容。例如,在本文描述的一个或多个实施例中,资源可以指可执行包,其可以包括与开发者可以添加到OS的各种特征和功能相关联的二进制文件。可执行包(或简称为“包”)可指具有其它包的身份和版本以及要求和/或依赖的文件和/或配置的自包含集合。在一个或多个实施例中,资源是指资源馈送,其可包括可添加到OS的包和其它内容的集合。其它示例资源可包括所标识的依赖、格式和内容文件。
现在将提供关于在此关于描绘示例实现的说明性附图描绘的系统的附加细节。例如,图1示出了包括一个或多个计算设备102和多个目标设备104a-n的示例环境100。如图1所示,(多个)计算设备102包括在其上实现的OS映像生成系统106。如进一步所示,OS映像生成系统106可包括清单管理器108、包构建器110、映像最终完成管理器112和包更新管理器114。虽然图1示出了其中在单个计算设备102上实现OS映像生成系统106的组件108-114的实现,但其它实现可涉及跨一个或多个计算设备实现的OS映像生成系统106的组件108-114中的一个或多个或任何特征和功能。
(多个)计算设备102可以指能够在各种计算环境中操作的各种设备。例如,在一个或多个实施例中,(多个)计算设备102可以包括移动设备,诸如移动电话、智能电话、个人数字助理(PDA)、平板电脑或膝上型电脑。附加地或备选地,(多个)计算设备102可包括一个或多个非移动设备,诸如台式计算机、服务器设备或其它非便携式设备。在本文描述的一个或多个实施例中,根据一个或多个实施例,基于(多个)计算设备102的用户开发要被部署在多个目标设备104a-n上的OS映像,(多个)计算设备102被称为开发者设备(或开发者机器)。图1所示的(多个)计算设备102和其它设备可以包括以下结合图8描述的特征和功能。
在一个或多个实施例中,(多个)计算设备102可以指一个或多个服务器设备,其被配置为托管提供本文所描述的OS映像生成系统106的任何特征的服务。例如,OS映像生成系统106可以指基于云的服务或(多个)应用,其提供使开发者能够利用云计算系统的资源来构建OS映像、最终完成OS映像,以及在任何数目的目标设备(例如,目标设备104a-n)上部署OS映像的特征和功能。因此,虽然本文描述的一个或多个实施例具体指其上实现的OS映像生成系统106的计算设备,但是应当理解,结合单个计算设备上的OS映像生成系统106描述的特征可以指OS映像生成系统106的实现,其中子组件108-114跨多个设备和计算环境分布。
如上所述,并且如图1所示,环境100可以包括多个目标设备104a-n。在一个或多个实施例中,目标设备104a-n是指其上部署有嵌入式操作系统(OS)105a-n的嵌入式设备。在一个或多个实现中,目标设备104a-n指类似目标设备类的目标设备集。例如,目标设备104a-n可以指具有类似功能集合和/或被配置为在类似计算平台上操作的类似设备集。如下面将进一步详细讨论的,OS映像生成系统106可以基于根据一个或多个实施例生成和部署的最终完成的OS映像包,使嵌入式OS105a-n部署在目标设备104a-n上。
如图1所示,(多个)计算设备102和目标设备104a-n可以经由网络118通信。应当理解,(多个)计算设备102还可以经由网络118与其它计算设备和资源馈送116通信。网络118可以包括使用一个或多个通信平台或技术来传输数据的一个或多个网络。例如,网络118可以包括互联网或能够在(多个)计算设备102和环境100的任何其它设备之间运输电子数据的其它数据链路。
如上所述,OS映像生成系统106可以包括清单管理器108。清单管理器108可以标识或以其他方式接收OS清单,其包括要在目标设备上部署的嵌入式OS的声明式摘要。在该示例中,清单管理器108可以标识包括基础OS模板的标识的OS清单。OS清单还可以包括与各种类型的资源相关联的多个数据字段,这些资源可以被安装或以其他方式被并入基于来自OS清单的信息而构造的OS映像包中。实际上,OS清单可以包括与多种资源类型相关的任何数目的数据字段。下面将结合图5讨论与示例OS清单有关的附加信息。
除了接收或以其他方式标识OS清单之外,清单管理器108还可以经由(多个)计算设备102的图形用户界面向用户呈现清单,以使OS映像生成系统106的用户能够提供与各种资源相关联的数据。例如,在一个或多个实施例中,开发者可选择、添加或以其他方式标识针对各种包、格式、馈送、配置、策略的一个或多个资源,以及可安装到由OS清单标识或以其他方式引用的基础OS模板的其他资源。
如图1中进一步所示,OS映像生成系统106可以包括包构建器110。包构建器110可提供与根据被包括或以其他方式被添加到OS清单的各种资源标识符而从基础OS映像构造OS映像包相关的特征和功能。如将在下面进一步详细讨论的,包构建器110可标识由资源标识符指示的各种源(例如,包、馈送),将一个或多个构件(artifact)添加到基础OS模板,解析OS映像包内的各种依赖,并根据被包括在OS清单内的声明来执行各种操作。实际上,如下面将进一步详细讨论的,包构建器110可以通过对基础OS模板执行任意数目的操作以创建具有反映来自OS清单的声明的状态的OS映像文件来生成OS映像包。
如图1中进一步所示,OS映像生成系统106可以包括映像最终完成管理器112,用于最终完成由包构建器110构造的OS映像包。如将在下面进一步详细讨论的,映像最终完成管理器112可以以多个方式并在开发过程的不同阶段最终完成OS映像包。具体地,映像最终完成管理器112可以对OS映像包执行一个或多个动作,这些动作在被执行时使得OS映像包被封装,并且防止在目标设备104a-n上被部署后进行运行时修改。下面将讨论与最终完成OS映像包有关的附加信息。
如图1中进一步所示,OS映像生成系统106可包括包更新管理器114。如上所述,OS映像包可以在开发过程的多个阶段被最终完成。例如,在一个或多个实施例中,包更新管理器114提供使一个或多个开发者能够提供对OS映像包和/或OS清单的编辑或修改的特征和功能,以在部署在目标设备104a-n上之前修改或以其他方式细化OS映像包的功能。或者,在一个或多个实施例中,包更新管理器114提供使一个或多个开发者能够在部署之后细化或修改OS映像包的特征和功能,使得嵌入式OS105a-n可以跨类似设备类的多个目标设备104a-n大规模地更新。下面将结合图3和图4讨论与在部署之前或之后更新OS映像包有关的附加信息。
如图1所示,环境100可以附加地包括多个资源馈送116。这些资源馈送116可以指各种存储源,其提供对OS清单所引用的多个资源的访问。例如,资源馈送116的一个或多个可以指包馈送,其提供对可被添加到OS映像包的多个可执行包的访问和与之相关联的信息。此外,资源馈送116可以提供依赖信息,该依赖信息促进在构建时解决各种可执行包和其它资源之间的依赖。
在一个或多个实施例中,资源馈送116标识或引用随时间改变的存储源。例如,OS清单可标识对应于特定目标设备、格式或目标设备平台的特定资源馈送,以提供对当前存在于资源馈送内的包数据和/或依赖信息的访问。这样,如果随时间更新资源馈送,则不需要更新OS清单。相反,在一个或多个实施例中,可以向资源馈送添加或更新一个或多个资源而不修改OS清单,并且OS映像包将反映在构建OS映像包时(例如,由包构建器110)资源馈送的当前状态。
如上所述,并且如图1所示,OS映像生成系统106可以使最终完成的OS映像包被部署到目标设备。如本文所使用的,将OS映像包部署到目标设备可以包括经由网络118向目标设备提供可执行OS映像包的动作。在一个或多个实施例中,部署OS映像包附加地可包括基于OS映像包将目标OS安装在目标设备上。因此,如本文所使用的,使OS映像包被部署可以包括向目标设备104a-n提供可执行OS映像包以及使嵌入式OS105a-n在目标设备104a-n上被安装或被实例化。
如上所述,OS映像包使一个或多个开发者能够创建能够提供本文所述的任意数目的益处的定制的OS映像包。例如,如下面将讨论的,OS映像包可以在最终完成并将最终完成的OS映像包部署到目标设备104a-n之前由一个或多个开发者更新任意次数。此外,或者作为备选,OS映像生成系统106使开发者能够继续开发OS映像,并且在对先前部署的OS映像包进行改进的修改之后,向(多个)目标设备104a-n上的(多个)嵌入式OS105提供更新,该更新可以跨目标设备集104a-n普遍地应用。下文将结合所说明的示例来讨论与这些和其它实现有关的附加的细节。
图2示出了根据本文讨论的一个或多个实施例示出可由OS映像生成系统106执行的示例工作流200的示例实现。具体地,图2示出了工作流200,该工作流200从而示出了OS映像生成系统106可以构建OS映像包、最终完成OS映像包以及将最终完成的OS映像包部署到特定设备类的多个嵌入式设备的过程。
如图2所示,清单管理器108可以生成OS清单,OS清单中包括的各种信息。如上所述,清单管理器108可以接收或以其他方式访问包括多个数据字段的清单模板,这些数据字段使得开发者能够指示要被并入OS映像包中的资源。例如,OS清单可包括多个数据字段,其指示开发者可修改以指示特定资源或(多个)资源馈送的资源类型。
清单管理器108可以使开发者能够提供对应于一个或多个资源的多个资源标识符。例如,OS清单可包括用于引用特定基础或模板OS映像的数据字段。在一个或多个实施例中,OS清单包括或引用由软件供应商提供的模板映像,该模板映像可以包括文本描述,该文本描述包括所得到的OS映像包的期望配置的声明式摘要。OS清单可以附加地包括对可安装到OS映像包的框架中的可选包的引用。例如,OS清单可包括指向可并入OS映像包内的可执行包的资源标识符,并且该资源标识符可在嵌入式设备上安装时向嵌入式OS提供各种特征和功能。
实际上,如下面将进一步详细讨论的,OS清单可包括各种资源类型的引用标识符。例如,在一个或多个实施例中,OS清单包括指示可从中解析包依赖的资源馈送集的引用标识符。在一个或多个实施例中,OS清单引用指示具有不同依赖的软件单元的一个或多个不同的格式。在一个或多个实施例中,OS清单包括描述在启动最终完成过程之前要运行并应用于OS映像包的定制动作的附加配置脚本。OS清单还可以包括用于包含在OS映像包中的附加策略数据和访问控制。下面将结合图5所示的示例OS清单来讨论附加的信息。
实际上,如上所述,清单管理器108可以提供使开发者能够生成OS清单的组合工具,该OS清单提供指示OS映像包的期望状态的多个声明。清单管理器108可以将完成的清单202提供给包构建器110,用于构建OS映像包。
如图2所示,包构建器110可接收完成的清单202的声明式意图并基于清单202构建OS映像包。在一个或多个实施例中,包构建器110通过获取清单的声明式意图并将其操作为迭代步骤来生成未封装的OS映像包204。然后,根据本文描述的一个或多个实施例,包构建器110可以执行这些步骤以产生OS映像构件(例如,可扩展OS映像包)。
在一个或多个实施例中,包构建器110通过访问OS清单202内标识的各种包和其它资源来构建OS映像包。如图2所示,这些资源可通过由相应引用标识符指示的一个或多个资源馈送116来访问。例如,包构建器110可访问第一资源馈送以拉取内核和设备树。包构建器110可以访问第二一个或多个资源馈送,以拉取在构建嵌入式OS的文件系统时使用的各种包。在一个或多个实施例中,包构建器110可以在生成并入了在OS清单内标识的各种资源的OS映像包中访问任何数目的资源馈送。
作为说明性示例,在一个或多个实施例中,包构建器110通过将OS清单202的声明式组件(例如,(多个)内核、包)组合为形成OS映像包的单元来构建OS包。在OS映像包指定依赖的情况下,包构建器110可将依赖和其它传递依赖添加到所得到的单元,而无需个体用户标识。除了向OS映像包添加离散组件之外,包构建器110在某些情况下可以扩展已经存在的各个组件。例如,包构建器110可以供应附加的内核参数。在一个或多个实施例中,用户(例如,开发者)可以自省决定定制组合阶段。包管理系统的可扩展性可提供支持其它类型包的逻辑。如本文将更详细讨论的,在一个或多个实施例中,包构建器110可运行在组合期间执行的脚本(例如,后处理),并且可执行各种功能,包括动态地创建新内容、删除现有内容或修改现有内容。
在构建OS映像包之后,包构建器110可以将未封装的OS映像包204提供给映像最终完成管理器112,以用于在部署之前进一步处理和最终完成OS映像包。如上所述,映像最终完成管理器112可以通过对未封装的OS映像包204执行各种最终完成动作中的一个或多个来生成最终完成的OS映像206。
例如,在一个或多个实施例中,映像最终完成管理器112通过向OS映像包应用数字签名来最终完成OS映像。在一个或多个实施例中,映像最终完成管理器112对OS映像包进行加密签名,以防止对已被并入OS映像包内的各种包的未经授权的修改。
作为另一示例,映像最终完成管理器112可通过从OS映像包中移除包数据库内容来最终完成OS映像包。例如,在一个或多个实施例中,包构建器110可利用包数据库内容来构造OS映像包的主体并解析其中的各种依赖。然后,映像最终完成管理器112可移除包数据库内容作为最终完成过程的一部分。移除包数据库内容可防止嵌入式设备208的用户执行运行时修改或以其它方式修改嵌入式OS。
在该实现中,即使已经以使修改所部署的OS映像包更加困难的方式移除包数据库内容,但是应当注意,OS映像生成系统106仍然可以维护审计日志。例如,OS映像生成系统106可以维护对基础OS映像所做的动作或其它修改的记录,作为生成OS映像包的过程的一部分。此外,在一个或多个实施例中,OS映像生成系统106可以在最终完成的映像包内包括审计日志。虽然该审计日志不具体包括包数据库内容,但是审计日志可以提供详细说明应用于OS映像包以达到期望状态的转换的机制。
因此,虽然映像最终完成管理器112可以从最终完成的OS映像包中移除包数据库内容,但是OS映像生成系统106仍然可以以可解析格式在审计日志中留下足够的数据,该审计日志描述在基础OS模板上执行的动作以产生结果。该审计日志允许(多个)目标设备的开发人员或所有者获取模板映像或最终完成的映像并对其进行检查,以验证OS映像包是否正确进行了数字签名,以及检查添加和删除了什么。审计日志还使开发者能够查看针对OS映像包运行了哪些脚本。
在一个或多个实施例中,映像最终完成管理器112使用安全标签来最终完成OS映像包。例如,在一个或多个实施例中,映像最终完成管理器112可以通过跟踪组成的策略、计算组成的策略的逻辑结论以及将逻辑结论应用于针对OS映像包的文件内容,来应用一个或多个安全策略。在一个或多个实施例中,映像最终完成管理器112压缩OS映像包,使得最终完成的OS映像包(例如,经压缩的OS映像包)在嵌入式设备上部署之后不能经由运行时修改而被修改。
在图2所示的示例中,在最终完成OS映像包之后,映像最终完成管理器112可以将最终完成的OS映像包206提供给任何数目的嵌入式设备208,用于在其上部署最终完成的OS映像包206。如图2所示,嵌入式设备208可以基于提供给嵌入式设备208中的每个嵌入式设备的最终OS映像包206在其上安装或实现嵌入式OS。
作为构建、最终完成或部署过程的一部分,在一个或多个实施例中,OS映像生成系统106可以生成除被包括在OS映像包内的各种包之外的调试映像。例如,因为嵌入式设备可能缺乏足够的空间来将调试符号(symbol)包括在所部署的OS映像包中,所以OS映像生成系统106可以为OS映像包的各个片段组装调试副本以创建调试映像。当试图分析或调试所部署的系统时,开发过程或(多个)调试器可以使用该调试映像。
现在将结合其中可以根据一个或多个实施例来更新OS映像包的示例实现来讨论附加细节。例如,图3示出了其中多个开发者可以在将OS映像包最终完成和部署到目标设备之前协作地提供OS映像包的输入和修改版本的示例实现。此外,如将在下面进一步详细讨论的,图4示出了示例实现,其中结合与生成可跨目标设备集以统一方式更新的经更新的封装OS映像包相关的一系列动作,在目标设备集上部署封装OS映像包。应当理解,结合图3和图4描述的实现不是互斥的。因此,结合相应示例中的每个示例描述的一个或多个特征可适用于本文描述的一个或多个附加的实施例。
图3示出了第一计算设备302(例如,第一开发者机器)、第二计算设备304(例如,第二开发者机器)和目标设备306(例如,嵌入式设备)之间的一系列动作和交互。如图3所示,第一计算设备302可执行组成OS清单的动作308。如上所述,OS清单可包括目标设备OS的声明式摘要,并且可包括与可执行包、资源馈送和可被包括在OS映像包内的其它资源相关联的任何数目的资源标识符。组成OS清单的动作308可以包括在此描述的涉及接收、标识或以其他方式组成OS清单的其他动作。
如进一步所示,第一计算设备302可以执行构建OS映像包的动作310。具体地,第一计算设备302可根据包括在OS清单内的声明和其它信息(例如,资源标识符)来构建OS映像包。在一个或多个实施例中,第一计算设备添加所引用的应用包、可执行二进制文件、OS内核、内核模块、以及可被添加到OS清单所引用的基础OS模板的任何其它资源。
虽然本文描述的一个或多个实施例涉及在构建OS映像包之后不久或就最终完成OS映像包,但是图3示出了示出向第二计算设备304提供未封装的OS映像包的动作312的示例。未封装OS映像包的这种预分发使得一个或多个附加的开发者(例如,第二计算设备304的用户)能够在最终完成和部署到目标设备集之前协作生成OS映像包。
在一个或多个实施例中,第二计算设备304是指具有与第一计算设备302类似的特征和功能的另一计算设备。这些计算设备302-304中的每个可以包括与以上结合图1描述的(多个)计算设备102类似的特征。在一个或多个实施例中,第二计算设备304可以提供使能够模拟目标环境或目标平台(例如,目标格式)的配置或计算环境,该配置或计算环境使得开发者能够在由第二计算设备304模拟的环境上测试出OS映像包的各种特征。作为示例,第二计算设备304可被配置成模拟比第一计算设备302更接近地反映目标设备306的目标平台的进程和运行指令。例如,计算设备302-304中的一个或两个可被配置为通过将(多个)目标设备的文件系统挂载在计算设备302-304的OS上并运行一个或多个后处理脚本以解析OS映像包的一个或多个依赖,来模拟(多个)目标设备的运行时环境。
如图3所示,第二计算设备304可执行修改由第一计算设备302提供的初始OS映像包的OS构建的动作314。例如,第二计算设备304可修改资源标识符中的一个或多个、添加新的资源标识符、移除其它资源标识符、选择新的OS基础模板、或改变由第一计算设备302提供的未封装的OS映像包所指示的资源标识符的任何其它(多个)修改。如图2所示,第二计算设备304可执行向第一计算设备302提供经修改的OS映像包以用于进一步开发和/或最终完成的动作316。备选地,在一个或多个实施例中,第二计算设备304可以根据本文描述的一个或多个实施例来最终完成OS映像包。
如图3所示,在接收到经修改的OS映像包时,第一计算设备可在最终完成之前对OS映像包执行一个或多个附加修改。在图3所示的示例中,第一计算设备302可执行最终完成OS映像包的动作318。第一计算设备302可以以多个方式封装修改的OS映像包,包括例如对OS映像包进行加密签名、移除一个或多个系统文件、压缩(多个)OS映像包文件、和/或防止在目标设备306上安装之后对OS的运行时修改的其他最终完成过程。
如图3所示,第一计算设备302可执行将封装的OS映像包提供给目标设备306以供在其上部署的动作320。在一个或多个实施例中,第一计算设备302将更大规模的最终完成的OS映像包分发到对应的设备类的多个目标设备。在图3所示的示例中,在接收到最终完成的OS映像包时,目标设备306可执行在目标设备206上安装或以其他方式实例化OS映像包的动作322。如上所述,目标设备可以指基于被提供给目标设备206的最终完成的OS映像包而在其上加载了嵌入式OS的嵌入式设备。
图4示出了根据本文描述的一个或多个实施例的可以更新OS映像包的另一示例实现。具体地,图4示出了其中最终完成的映像包由计算设备402部署到目标设备集404并使用离线过程以促进跨目标设备404的方便且统一的更新过程的方式来更新的示例。
如图4所示,计算设备402可以执行组成OS清单的动作406。如进一步所示,计算设备402可以执行构建OS映像包的动作408。组成OS清单并构建OS映像包的动作406-408可包括与以上结合图3讨论的动作308-310类似的特征。
如图4中进一步所示,计算设备402可以执行最终完成(例如,封装)OS映像包的动作410。如图4所示,计算设备402可附加地执行向目标设备集404提供封装的OS映像包以在其上部署的动作412。如图4所示,目标设备集404可以基于由计算设备402提供的封装OS映像包来执行将目标OS安装在各个设备上的动作414。应当理解,最终完成OS映像包提供封装的OS映像包以及将目标OS安装在目标设备404上的动作410-414可以包括结合上面讨论的一个或多个实施例描述的类似特征和动作。
如图4中进一步所示,计算设备402可以执行提供OS反馈的动作416。这可以包括提供指示与部署在目标设备404上的目标OS的性能相关联的度量和/或各种问题的反馈。例如,在一个或多个实施例中,目标设备404(或在其上实现目标设备404的系统)可以提供反馈,该反馈指示性能统计、错误或设备故障、以及与诊断一个或多个问题相关的任何其他信息,这些问题可以在将来的更新和部署中改进。
应注意,可在假设未对相应目标设备404的操作系统(例如,OS映像包)执行运行时修改的情况下接收来自目标设备404的反馈。基于OS映像封装的封装性质的这种假设使得计算设备402(或分析反馈的(多个)其它设备)能够准确地诊断对于整个类别的目标设备存在的问题以及对于特定目标设备和/或在特定计算环境内实现的目标设备可能是个别的问题。
基于该反馈,计算设备402可以执行生成更新的OS映像包的动作418。在一个或多个实施例中,这涉及在最终完成之前获得OS映像构建的副本,并对OS映像包的现有框架应用一个或多个改变。在一个或多个实施例中,计算设备402通过标识不同的资源馈送、访问不同的OS基础模板、或对OS清单和/或构建过程应用任何数目的修改来修改OS映像包以生成修改的OS映像包。
在生成更新的OS映像包时,计算设备402可以执行最终完成更新的OS映像包的动作420。最终完成更新的OS映像包的动作420可以包括与最终完成先前部署到目标设备404的初始OS映像包的动作410类似的动作。例如,计算设备402可对更新的OS映像包进行加密签名、移除一个或多个系统文件,或本文所描述的其它最终完成动作。
在最终完成OS映像包之后,计算设备402可以执行向目标设备404提供封装的更新的OS映像包的动作422。在接收到封装的更新的OS映像包时,目标设备404可以基于封装的更新的OS映像包来执行更新目标OS的动作。
如上所述,作为初始OS映像包被最终完成以防止对相应目标设备的运行时修改的结果,更新目标设备404上的OS映像包的动作可以是跨整个目标设备集404的统一的或可预测的过程。例如,因为OS映像包应当具有未改变的内容,所以可以跨目标设备集404以类似的方式来执行对设备的更新。跨设备类别的这种一致性促进更有效的更新过程,其调试的错误更少。这是对传统更新的改进,在传统更新中,所部署的OS的依赖、系统文件和其它特征可能已经在逐个设备的基础上被修改或定制。
图5示出了根据一个或多个实施例的示例OS清单。例如,如图5所示,示例OS清单500可包括指示可并入OS映像内的对应的资源的各种资源标识符。将更详细地讨论一些非限制性示例标识符。作为第一示例,OS清单500可以包括指向基础OS模板的第一资源标识符502。这在示例OS清单500中被指示为“资源”标识符。该OS模板可以指由软件供应商提供的OS映像包的模板或由任何数目的源提供的定制模板。在一个或多个实施例中,OS模板可经由可由第一资源标识符502标识的资源馈送来获得。
作为另一示例,OS模板500可以包括指向目标硬件的第二资源标识符504。这在示例OS清单500中被指示为“目标”标识符。这可以指示要在其上部署目标OS的嵌入式硬件的特定设备类型、设备类别或特定模型。
OS清单500还说明了其它引用标识符。例如,第三引用标识符506(“内核”标识符)可以引用OS内核。在一个或多个实施例中,内核标识符标识基于版本可选择的预构建内核和设备树的文件名或其它资源。在一个或多个实施例中,内核标识符包括用于配置OS内核将如何表现的一个或多个内核参数。
OS清单500可附加地包括一个或多个第四标识符508,其指示可在OS映像包内实现的多个可选包。例如,(多个)第四标识符508可指示内核模块、OSS组件、可安装应用、对应的格式和/或平台。在一个或多个实施例中,OS清单500可标识提供对标识的包的访问的特定资源馈送。如进一步所示,OS清单500可附加地包括指示所得到的OS映像包的各种功能的一个或多个第五标识符510。例如,如图5所示,第五标识符510可以标识OS映像包的网络访问(例如,允许的连接、允许的服务器端口)、外围设备使用和可变存储特性。
图6示出了根据本文描述的一个或多个实施例的OS映像包602的示例实现。例如,图6示出了使用线性数据格式构建的示例OS映像包602,其包括内核604、设备树606(例如,.dtb文件)、应用OS的文件系统608、元数据610和签名612。如进一步所示,OS映像生成系统106可以从多个资源馈送中拉取包括。例如,在一个或多个实施例中,OS映像生成系统106可从第一资源馈送614a拉取内核604和设备树606。如进一步所示,OS映像生成系统106可从第二资源馈送614b(例如,容器注册表)拉取系统文件和各种包和/或二进制文件。其他实现可以包括附加的或更少的资源馈送。
现在转到图7,该图图示了根据本文描述的一个或多个实施例的包括用于构建、最终完成和部署封装的OS映像包的一系列动作的示例流程图。虽然图7示出了根据一个或多个实施例的动作,但是备选的实施例可以省略、添加、重新排序和/或修改图7所示的任何动作。图7的动作可以作为方法的部分来执行。备选地,非暂态计算机可读介质可以包括当由一个或多个处理器执行时使计算设备(例如,服务器设备)执行图7的动作的指令。在更进一步的实施例中,系统可以执行图7的动作。
图7示出了与将封装的OS映像包构建、最终完成和部署到一个或多个目标设备有关的一系列动作700。如图7所示,动作系列700可包括接收包括目标设备OS的声明式摘要和资源标识符的操作系统(OS)清单的动作710。例如,在一个或多个实施例中,动作710可包括在计算设备处接收包括要在目标设备类的目标设备上实例化的目标设备OS的声明式摘要的操作系统(OS)清单,其中OS清单包括多个资源标识符。在一个或多个实现中,目标设备类包括具有对应的功能特征集的嵌入式设备的目标类。
如进一步所示,一系列动作700可以包括通过将对应于资源标识符的资源安装到基础OS模板来从基础OS模板构建OS映像包的动作720。例如,在一个或多个实施例中,动作720涉及由计算设备通过将对应于多个资源标识符的资源安装到基础OS模板来从OS清单所引用的基础OS模板构建OS映像包。
如进一步所示,一系列动作700可包括通过封装OS映像包以防止对最终完成的OS映像包的运行时修改来生成最终完成的OS映像包的动作730。例如,在一个或多个实施例中,动作730涉及由计算设备通过封装OS映像包以防止在目标设备上安装目标设备OS时对最终完成的OS映像包的运行时修改来生成最终完成的OS映像包。
如进一步所示,一系列动作700可包括使最终完成的OS映像包部署到多个目标设备的动作740。例如,在一个或多个实施例中,动作740涉及使最终完成的OS映像包部署到目标设备类的多个目标设备。
在一个或多个实施例中,多个资源标识符引用一个或多个可执行包,所述一个或多个可执行包被配置为被添加到OS映像包中,并结合多个目标设备上的最终完成的OS映像包来部署。在一个或多个实施例中,一个或多个可执行包包括OS内核和被配置为插入到OS内核中的一个或多个模块。在一个或多个实施例中,多个资源标识符引用一个或多个资源馈送。资源馈送可以包括被配置为添加到OS映像包的可执行包的集合。可执行包的集合可以包括与目标设备类别相关联的一个或多个可执行二进制文件。
在一个或多个实施例中,构建OS映像包包括组成线性数据集,该线性数据集包括OS内核的内容和从OS清单内引用的一个或多个馈送获得的资源。在一个或多个实施例中,构建OS映像包包括,在封装OS映像包之前,通过将给定目标设备的文件系统挂载在计算设备的OS上并运行一个或多个后处理脚本以解析OS映像包的一个或多个依赖来模拟给定目标设备的运行时环境。在一个或多个实施例中,封装OS映像包包括对OS映像包进行加密签名。
在一个或多个实施例中,构建OS映像包包括安装被依赖以解析OS映像包中的依赖的包数据库。此外,在一个或多个实施例中,封装OS映像包包括在将OS映像包部署到多个目标设备之前移除包数据库。在一个或多个实施例中,生成最终完成的OS映像包还包括在OS映像包中添加审计日志,该审计日志包括对在基础OS模板上执行的动作的指示,以根据来自OS清单的目标设备OS的声明式摘要来生成OS映像包。
在一个或多个实施例中,一系列动作700包括向第二计算设备提供OS映像包的未封装副本。动作系列700还可包括从第二计算设备接收对OS清单的一个或多个修改。动作系列700还可包括基于对OS清单的一个或多个修改来执行OS映像包的更新。
在一个或多个实施例中,执行更新包括基于至少一个修改的资源标识符来构建包括一个或多个附加资源的修改的OS映像包、通过封装修改的OS映像包以防止在将被部署在目标设备类别的目标设备上的更新的OS的安装时对修改的OS映像包的运行时修改来生成更新的最终完成的OS映像包,以及使更新的最终完成的OS映像被部署到目标设备类的多个目标设备。
图8示出了可包括在计算机系统800内的某些组件。一个或多个计算机系统800可用于实现本文所述的各种设备、组件和系统。
计算机系统800包括处理器801。处理器801可以是通用单芯片或多芯片微处理器(例如,高级RISC(精简指令集计算机)机器(ARM))、专用微处理器(例如,数字信号处理器(DSP))、微控制器、可编程门阵列等。处理器801可称为中央处理单元(CPU)。虽然在图8的计算机系统800中仅示出了单个处理器801,但是在备选的配置中,可以使用处理器的组合(例如,ARM和DSP)。
计算机系统800还包括与处理器801电子通信的存储器803。存储器803可以是能够存储电子信息的任何电子组件。例如,存储器803可实施为随机存取存储器(RAM)、只读存储器(ROM)、磁盘存储媒体、光学存储媒体、RAM中的快闪存储器设备、包含在处理器中的板上存储器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)存储器、寄存器等,包含其组合。
指令805和数据807可以存储在存储器803中。指令805可由处理器801执行以实现本公开的功能中的一些或全部。执行指令805可以包括使用存储在存储器803中的数据807。本文所描述的模块和组件的各种示例中的任何一个可以部分地或全部地实现为存储在存储器803中并由处理器801执行的指令805。本文描述的数据的各种示例中的任何一个可以是存储在存储器803中并且在处理器801执行指令805期间使用的数据807。
计算机系统800还可以包括用于与其它电子设备通信的一个或多个通信接口809。(多个)通信接口809可以基于有线通信技术、无线通信技术或两者。通信接口809的一些示例包括通用串行总线(USB)、以太网适配器、根据电气和电子工程师协会(IEEE)802.11无线通信协议操作的无线适配器、无线通信适配器和红外(IR)通信端口。
计算机系统800还可以包括一个或多个输入设备811和一个或多个输出设备813。输入设备811的一些示例包括键盘、鼠标、麦克风、遥控设备、按钮、操纵杆、跟踪球、触摸板和光笔。输出设备813的一些示例包括扬声器和打印机。可以包括在计算机系统800中的一种特定类型的输出设备是显示设备815。与本公开的实施例一起使用的显示设备815可以利用任何合适的映像投影技术,例如液晶显示器(LCD)、发光二极管(LED)、气体等离子体、电致发光等。还可以提供显示控制器817,用于将存储在存储器803中的数据807转换成显示在显示设备815上的文本、图形和/或运动映像(适当时)。
计算机系统800的各个组件可以通过一个或多个总线耦合在一起,该总线可以包括电源总线、控制信号总线、状态信号总线、数据总线等。为了清楚起见,在图8中将各个总线示为总线系统819。
本文所描述的技术可以以硬件、软件、固件或其任何组合来实现,除非明确描述为以特定方式实现。被描述为模块、组件等的任何特征也可以一起实现在集成逻辑设备中,或者单独实现为离散但可互操作的逻辑设备。如果以软件实施,那么技术可至少部分由包含指令的非暂态处理器可读存储媒体实现,该指令在由至少一个处理器执行时执行本文所描述的方法中的一个或多个。指令可被组织成例程、程序、对象、组件、数据结构等,其可执行特定任务和/或实现特定数据类型,并且其可在各种实施例中按需组合或分布。
如在此所使用的,非暂态计算机可读存储介质(设备)可以包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(“SSD”)(例如,基于RAM)、闪存、相变存储器(“PCM”)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、可以用于以计算机可执行指令或数据结构的形式存储期望的程序代码手段并且可以由通用或专用计算机访问的任何其他介质。
本文描述的方法的步骤和/或动作可以在不脱离权利要求的范围的情况下彼此互换。换句话说,除非所描述的方法的正确操作需要步骤或动作的特定顺序,否则可在不脱离权利要求的范围的情况下修改特定步骤和/或动作的顺序和/或使用。
术语“确定”涵盖多种动作,因此,“确定”可包括计算、运算、处理、导出、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。而且,“确定”可以包括解析、选择、挑选、建立等。
术语“包含”、“包括”和“具有”旨在是包括性的,并且意味着可以存在除了所列出的要素之外的附加的要素。附加地,应当理解,对本公开的“一个实施例”或“实施例”的引用不旨在被解释为排除还结合了特征的附加实施例的存在。例如,关于本文的实施例描述的任何要素或特征可以与本文描述的任何其他实施例的任何要素或特征在兼容处组合。
本公开可以在不脱离其精神或特性的情况下以其他特定形式来体现。所描述的实施例应被认为是说明性的而非限制性的。因此,本公开的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同物的含义和范围内的改变将包含在其范围内。

Claims (15)

1.一种方法,包括:
在计算设备处接收操作系统(OS)清单,所述OS清单包括要在目标设备类别的目标设备上被实例化的目标设备OS的声明式摘要,其中所述OS清单包括多个资源标识符;
由所述计算设备通过将与所述多个资源标识符相对应的资源安装到由所述OS清单引用的基础OS模板,来从所述基础OS模板构建OS映像包;
由所述计算设备通过封装所述OS映像包以防止在所述目标设备上安装所述目标设备OS时对最终完成的OS映像包的运行时修改,来生成所述最终完成的OS映像包;以及
使所述最终完成的OS映像包被部署到所述目标设备类别的多个目标设备。
2.根据权利要求1所述的方法,其中所述多个资源标识符引用一个或多个可执行包,所述一个或多个可执行包被配置为被添加到所述OS映像包并且结合在所述多个目标设备上的所述最终完成的映像包而被部署。
3.根据权利要求1所述的方法,其中所述多个资源标识符引用一个或多个资源馈送,其中资源馈送包括被配置为被添加到所述OS映像包的可执行包集合,并且其中所述可执行包集合包括与所述目标设备类别相关联的一个或多个可执行二进制文件。
4.根据权利要求1所述的方法,其中构建所述OS映像包包括组成线性数据集,所述线性数据集包括OS内核的内容以及从在所述OS清单内被引用的一个或多个馈送获得的所述资源。
5.根据权利要求1所述的方法,其中构建所述OS映像包包括:在封装所述OS映像包之前,通过将给定目标设备的文件系统挂载在所述计算设备的OS上并且运行一个或多个后处理脚本以解析所述OS映像包的一个或多个依赖,来模拟针对所述给定目标设备的运行时环境。
6.根据权利要求1所述的方法,其中封装所述OS映像包包括对所述OS映像包进行加密签名。
7.根据权利要求1所述的方法,
其中构建所述OS映像包包括安装被依赖以解析所述OS映像包内的依赖的包数据库,并且
其中封装所述OS映像包包括在将所述OS映像包部署到所述多个目标设备之前移除所述包数据库。
8.根据权利要求1所述的方法,其中生成所述最终完成的OS映像包还包括:在所述OS映像包内添加审计日志,所述审计日志包括在所述基础OS模板上被执行的、用以根据来自所述OS清单的所述目标设备OS的所述声明式摘要来生成所述OS映像包的动作的指示。
9.根据权利要求1所述的方法,还包括:
向第二计算设备提供所述OS映像包的未封装副本;
从所述第二计算设备接收对所述OS清单的一个或多个修改;以及
基于对所述OS清单的所述一个或多个修改来执行所述OS映像包的更新。
10.根据权利要求1所述的方法,其中所述目标设备类别包括具有对应的一组功能特征的嵌入式设备的目标类别。
11.一种系统,包括:
一个或多个处理器;
存储器,与所述一个或多个处理器电子通信;以及
指令,被存储在所述存储器中,所述指令由所述一个或多个处理器可执行以:
在计算设备处接收操作系统(OS)清单,所述OS清单包括要在目标设备类别的目标设备上被实例化的目标设备OS的声明式摘要,其中所述OS清单包括多个资源标识符;
由所述计算设备通过将与所述多个资源标识符相对应的资源安装到由所述OS清单引用的基础OS模板,来从所述基础OS模板构建OS映像包;
由所述计算设备通过封装所述OS映像包以防止在所述目标设备上安装所述目标设备OS时对最终完成的OS映像包的运行时修改,来生成所述最终完成的OS映像包;以及
使所述最终完成的OS映像包被部署到所述目标设备类别的多个目标设备。
12.根据权利要求11所述的系统,其中所述多个资源标识符引用一个或多个可执行包,所述一个或多个可执行包被配置为被添加到所述OS映像包并且结合所述多个目标设备上的所述最终完成的OS映像包而被部署。
13.根据权利要求11所述的系统,其中所述多个资源标识符引用一个或多个资源馈送,其中资源馈送包括被配置为被添加到所述OS映像包的可执行包集合,并且其中所述可执行包集合包括与所述目标设备类别相关联的一个或多个可执行二进制文件。
14.根据权利要求11所述的系统,其中封装所述OS映像包包括以下一项或多项:
对所述OS映像包进行加密签名;以及
在将所述OS映像包部署到所述多个目标设备之前,移除已经被安装并且被依赖以解析所述OS映像包内的依赖的包数据库。
15.一种非暂态计算机可读介质,所述非暂态计算机可读介质上存储指令,所述指令在由一个或多个处理器执行时,使计算设备:
接收操作系统(OS)清单,所述OS清单包括要在目标设备类别的目标设备上被实例化的目标设备OS的声明式摘要,其中所述OS清单包括多个资源标识符;
通过将与所述多个资源标识符的相对应资源安装到由所述OS清单引用的基础OS模板,来从所述基础OS模板构建OS映像包;
通过封装所述OS映像包以防止在所述目标设备上安装所述目标设备OS时对最终完成的OS映像包的运行时修改,来生成所述最终完成的OS映像包;以及
使所述最终完成的OS映像包被部署到所述目标设备类别的多个目标设备。
CN202280056945.8A 2021-08-25 2022-07-15 生成和分发定制的嵌入式操作系统 Pending CN117836770A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/411,975 2021-08-25
US17/411,975 US11809850B2 (en) 2021-08-25 2021-08-25 Generating and distributing customized embedded operating systems
PCT/US2022/037231 WO2023027826A1 (en) 2021-08-25 2022-07-15 Generating and distributing customized embedded operating systems

Publications (1)

Publication Number Publication Date
CN117836770A true CN117836770A (zh) 2024-04-05

Family

ID=83080986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280056945.8A Pending CN117836770A (zh) 2021-08-25 2022-07-15 生成和分发定制的嵌入式操作系统

Country Status (3)

Country Link
US (2) US11809850B2 (zh)
CN (1) CN117836770A (zh)
WO (1) WO2023027826A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230259345A1 (en) * 2022-02-17 2023-08-17 Nuance Communications, Inc. Declarative deployment of a software artifact
US20230342475A1 (en) * 2022-04-25 2023-10-26 Dell Products L.P. Smart network interface controller signature database emulation

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7379982B2 (en) 2002-04-15 2008-05-27 Bassam Tabbara System and method for custom installation of an operating system on a remote client
US20040221146A1 (en) 2003-04-30 2004-11-04 International Business Machines Corporation Build time dynamic installation of drivers on cloned systems
CN1286009C (zh) * 2003-06-05 2006-11-22 中兴通讯股份有限公司 在嵌入式系统中使用x86处理器的单一bootrom的制作方法
US20050132357A1 (en) 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7614051B2 (en) 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7549042B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US8321859B2 (en) 2005-12-22 2012-11-27 Alan Joshua Shapiro Method and apparatus for dispensing on a data-storage medium customized content comprising selected assets
JP5468921B2 (ja) * 2010-01-27 2014-04-09 株式会社日立製作所 シミュレーション支援システム及びシミュレーション支援方法
WO2012122994A1 (en) * 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
US9208041B2 (en) * 2012-10-05 2015-12-08 International Business Machines Corporation Dynamic protection of a master operating system image
US9875090B2 (en) * 2012-12-20 2018-01-23 Microsoft Technology Licensing, Llc Program analysis based on program descriptors
US9851993B2 (en) * 2013-09-24 2017-12-26 International Business Machines Corporation Virtual machine template optimization
CN104794393B (zh) * 2015-04-24 2017-11-10 杭州字节信息技术有限公司 一种嵌入式分区映像安全认证及内核可信引导方法及其设备
US10768941B2 (en) * 2015-06-26 2020-09-08 Hewlett-Packard Development Company, L.P. Operating system management
US10261782B2 (en) * 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US10958435B2 (en) * 2015-12-21 2021-03-23 Electro Industries/ Gauge Tech Providing security in an intelligent electronic device
US11104502B2 (en) * 2016-03-01 2021-08-31 Jeffrey S. Melcher Multi-function compact appliance and methods for a food or item in a container with a container storage technology
US10509932B2 (en) * 2016-03-07 2019-12-17 ShoCard, Inc. Large data transfer using visual codes with feedback confirmation
US10579363B2 (en) * 2017-11-29 2020-03-03 Citrix Systems, Inc. Cloud service automation of common image management
US10705825B2 (en) * 2018-09-20 2020-07-07 Hewlett Packard Enterprise Development Lp Creation of images
US11372977B2 (en) * 2018-11-12 2022-06-28 Thirdwayv, Inc. Secure over-the-air firmware upgrade
US11533182B2 (en) * 2019-03-06 2022-12-20 Cisco Technology, Inc. Identity-based security platform and methods
US11100233B2 (en) * 2019-06-26 2021-08-24 International Business Machines Corporation Optimizing operating system vulnerability analysis
US11544381B2 (en) * 2019-07-01 2023-01-03 Hewlett Packard Enterprise Development Lp Configuration of server using stored security elements
US11645086B2 (en) 2019-11-20 2023-05-09 Jpmorgan Chase Bank, N.A. System and method for implementing a filesystem agent management solution
US11593118B2 (en) * 2020-02-28 2023-02-28 Nutanix, Inc. Bootstrapping a microservices registry
US20220129539A1 (en) * 2020-10-23 2022-04-28 Red Hat, Inc. Embedding security requirements in container images

Also Published As

Publication number Publication date
US20230069485A1 (en) 2023-03-02
US20240078103A1 (en) 2024-03-07
US11809850B2 (en) 2023-11-07
WO2023027826A1 (en) 2023-03-02

Similar Documents

Publication Publication Date Title
US10303589B2 (en) Testing functional correctness and idempotence of software automation scripts
CN109643270B (zh) 用于多层测试套件生成的方法和系统
US20240078103A1 (en) Generating and distributing customized embedded operating systems
US9830135B2 (en) Declarative and pluggable business logic for systems management
CN102402427B (zh) 一种Java应用程序的更新方法及装置
KR102341154B1 (ko) 모바일 장치들의 원격 구성을 허용하기 위해 모바일 장치들 상에 설치되는 고속 어플리케이션
US10656971B2 (en) Agile framework for vertical application development and delivery
US20150220308A1 (en) Model-based development
US9507748B2 (en) Platform runtime abstraction
US9459859B2 (en) Template derivation for configuration object management
CN110888652B (zh) 基于jenkins插件的多版本构建方法及终端
US20200183683A1 (en) Application architecture generation
CN114077423A (zh) 基于移动跨平台的机场app开发容器架构
US11481197B1 (en) Distributed software development pipeline for coherent graphical user interface
CN112769706B (zh) 组件化路由方法及系统
US9626251B2 (en) Undo configuration transactional compensation
CN107077342B (zh) 固件模块运行权限
US10540151B1 (en) Graphical customization of a firmware-provided user interface (UI)
Yim et al. Treble: Fast software updates by creating an equilibrium in an active software ecosystem of globally distributed stakeholders
US11023220B2 (en) Firmware update with integrated smart sequence and action engine
CN115220873A (zh) 一种在Android系统中运行Open Harmony应用的方法
Boyer et al. A robust reconfiguration protocol for the dynamic update of component‐based software systems
US20210271458A1 (en) Managing an app method and system
US8135943B1 (en) Method, apparatus, and computer-readable medium for generating a dispatching function
US20230059134A1 (en) Systems and methods for in-place application upgrades

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