用于修改有效固件的固件包的制作方法
【专利摘要】一种计算设备包括非易失性存储部件,该非易失性存储部件具有第一部分以及第二部分,该第一部分包括用于计算设备的部件的有效固件,并且第二部分包括固件包以修改有效固件。计算设备安装来自固件包的固件并在接着安装来自固件包的后续固件之前确定固件是否被成功安装。如果来自固件包的固件安装失败,则计算设备卸载固件包以恢复有效固件。
【专利说明】用于修改有效固件的固件包
【背景技术】
[0001] 在更新计算设备上的固件时,用户可以最初访问第一固件文件并接着更新计算设 备的第一固件。一旦第一固件已被更新,用户可以重复这个过程,以用于更新计算设备的每 个其他固件。在一些实例中,固件可以被错误安装,并且可能不将失败的安装通告给用户。 最终,计算设备可以被呈现不稳定或不可用。此外,用户可能必须识别之前使用的固件并接 着安装导致用户消耗时间且经历不愉快的之前使用的固件。
【专利附图】
【附图说明】
[0002] 通过以下结合附图的具体描述,公开实施例的各个特征和优点将会显而易见,通 过示例,这些附图一起示出了公开实施例的特征。
[0003] 图1示出根据示例的具有非易失性存储部件的计算设备。
[0004] 图2示出根据示例的接收固件包的计算设备。
[0005] 图3示出根据示例的利用固件包修改有效固件的计算设备的框图。
[0006] 图4示出根据示例的卸载固件包以恢复有效固件的计算设备的框图。
[0007] 图5是示出根据示例的用于管理计算设备的方法的流程图。
[0008] 图6是示出根据另一个示例的用于管理计算设备的方法的流程图。
【具体实施方式】
[0009] 计算设备可以包括具有第一部分和第二部分的非易失性存储部件,以将对应于计 算设备的部件的有效固件与用于修改有效固件的固件包分开。计算设备按照第一次序安装 来自固件包的每个固件并在接着安装来自固件包的后续固件之前确定每个固件是否被成 功安装。计算设备可以保持每个固件安装的状态日志,以识别成功和/或不成功的安装。 [0010] 如果来自固件包的每个固件都被成功安装,则计算设备的有效固件可以被成功修 改。如果计算设备检测到不成功的固件安装,则计算设备可以终止安装来自固件包的任何 附加固件并接着按照相反于第一方向的第二方向卸载来自固件包的每个固件,以恢复有效 固件。每个之前安装的来自固件包的固件可以被一个接一个地卸载,以回滚(rollback)并 恢复计算设备的有效固件。卸载来自固件包的固件可以包括计算设备重新安装对应部件的 主固件或最后知道的稳定固件,以将计算设备恢复为最后知道的稳定状态。
[0011] 图1不出根据不例的具有非易失性存储部件140的计算设备100。计算设备100可 以是膝上型电脑、笔记本电脑、平板电脑、上网本、一体化系统、台式机、工作站、和/或服务 器。在另一个实施例中,计算设备100可以是蜂窝设备、PDA (个人数字助理)、和/或E (电 子)_阅读器、和/或任何具有非易失性存储部件140的附加计算设备。
[0012] 如图1所示,计算设备100包括控制器120、非易失性存储部件140、至少一个部件 130、以及用于计算设备100和/或计算设备100的一个或多个部件之间互相通信的通信通 道150。在一个实施例中,计算设备100附加地包括存储在联接至计算设备100的非瞬态计 算机可读存储器上的部件应用程序。部件应用程序是可以结合控制器120使用以管理计算 设备100的应用程序。
[0013] 非易失性存储部件140可以包括闪存、存储驱动器,例如硬盘驱动器或光盘驱动 器、和/或可以包括第一部分150和第二部分155的任何附加非易失性存储设备。第一部 分150是非易失性存储部件140包括用于计算设备100的部件130的有效固件160的空间 或区域。为了本申请的目的,有效固件160包括驱动器和/或软件,其被计算设备100使用 以管理和操作部件130。在一个实施例中,有效固件160还包括驱动器和/或软件,其被计 算系统200的嵌入式操作系统使用。部件130可以包括视频、音频、通信部件、和/或任何 被计算设备1〇〇使用的附加部件。
[0014] 第二部分155包括非易失性存储部件140与第一部分140分开并包括固件包165 的空间或区域。固件包165包括用于计算设备100的部件130的可安装固件。在一个实施 例中,固件包165包括用于计算设备100的每个部件130的可安装固件。通过安装来自固 件包165的固件,计算设备100的对应的有效固件160可以被修改。固件包165可以由计 算设备100从与计算设备100联接的第二计算设备接收。
[0015] 控制器120和/或部件应用程序可以发出使用固件包165修改有效固件160的请 求。控制器120和/或部件应用程序可以从第二部分155找回固件包165并接着按照第一 方向依次安装来自固件包165的每个固件。例如,第一固件可以被安装,随后任何后续固件 可以被安装,直到最后的固件被安装。
[0016] 在来自固件包165的每个固件被安装之后,控制器120和/或部件应用程序可以 在接着安装后续固件之前确定固件是否成功安装。在确定固件是否成功安装时,控制器120 和/或部件应用程序可以确定对应的有效固件160是否被成功修改。在一个实施例中,控 制器120和/或部件应用程序可以询问使用修改的有效固件165的部件130。如果响应被 接收,则对应的有效固件160被成功修改并且固件被成功安装。在另一个实施例中,控制器 120和/或部件应用程序可以在部件130上运行诊断测试以确定部件130是否正使用修改 的有效固件165正确操作。
[0017] 如果部件130不响应于询问或诊断测试失败,则控制器120和/或部件应用程序 可以确定对应的有效固件160未被成功修改并且固件未成功安装。如果来自固件包165的 固件安装失败,则控制器120和/或部件应用程序可以接着按照相反于第一方向的第二方 向卸载固件包165,以恢复计算设备200的有效固件160。
[0018] 控制器120和/或部件应用程序可以终止来自固件包165的任何附加部件的安装 并继续依次回滚来自固件包165的之前的固件安装。在回滚之前的固件安装时,控制器120 和/或部件应用程序识别最后安装的固件和从固件包165安装的每个之前的固件。然后, 控制器120和/或部件应用程序可以接着卸载最后安装的固件,随后卸载从固件包165安 装的每个之前的固件,直到卸载来自固件包165的每个固件。
[0019] 在卸载来自固件包165的固件时,控制器120和/或固件应用程序可以重新安装 对应的部件130的主固件。主固件可以被存储在非易失性存储部件140上。主固件对应 于用于计算设备1〇〇的部件130的备份固件。对于从固件包165卸载的每个固件,控制器 120和/或部件应用程序可以重新安装来自用于对应的部件130的主固件的驱动器和/或 软件。在一个实施例中,控制器120和/或部件应用程序可以重新安装计算设备100的每 个部件130的主固件。
[0020] 图2示出根据示例的接收固件包265的计算设备200。计算设备200可以接收来 自第二计算设备205的固件包265。类似于计算设备200,第二计算设备205可以是膝上型 电脑、笔记本电脑、平板电脑、上网本、一体化系统、台式机、工作站、服务器、便携式计算设 备和/或任何可以将固件包265发送至计算设备200的附加计算设备。
[0021] 如图2所示,固件包265可以包括可安装固件,以修改计算设备200的有效固件 260。固件包265可以包括用于计算设备200的一个或多个部件的固件。在一个实施例中, 固件包265还包括用于计算设备200的嵌入式操作系统的固件。固件可以包括用于计算设 备200的对应的部件和/或嵌入式操作系统的驱动器和/或软件。
[0022] 如上所述,计算设备200的部件可以包括通信部件270、视频部件、音频部件、和/ 或安全部件280。在其他实施例中,部件可以是计算设备200可以具有对应的有效固件260 的任何附加硬件或软件部件。计算设备200可以使用通信部件270从第二计算设备205接 收作为文件或数据包的固件包265。通信部件270是计算设备200的硬件部件,以在计算设 备200和第二计算设备205之间接收和/或发送数据。在一个实施例中,通信部件270可 以包括网络接口部件、无线电设备、蓝牙设备和/或红外设备。
[0023] 响应于计算设备200接收固件包265,安全部件280可以认证固件包265。安全部 件280是计算设备200的硬件和/或软件部件,例如可以认证固件包265的受信任平台模 块和/或远程控制管理模块。安全部件280可以通过确认固件包265的签名和/或确认第 二计算设备200的身份来认证固件包265。在一个实施例中,安全部件280可以包括固件包 265的授权签名和/或第二计算设备205的授权标识的白名单。在确定固件包265是否被 认证时,安全部件280可以访问白名单。
[0024] 如果固件包265被成功认证,则固件包265可以被存储在非易失性存储部件240 的第二部分255上。如上所述,非易失性存储部件240是硬件存储设备,其包括第一部分 250以及用于存储固件包265的第二部分255,第一部分250包括用于计算设备200的部件 的有效固件260。非易失性存储部件240可以包括闪存、硬盘驱动器、光盘驱动器和/或包 括非易失性存储器的任何附加硬件存储设备。
[0025] 在一个实施例中,如图2所示,第二部分255另外包括用于计算设备200的部件的 状态日志295和主固件290。为了本申请的目的,状态日志295可以是文件、列表和/或表 格,其保持计算设备200的每个对应的有效固件260的状态。在一个实施例中,状态日志 295可以是XML(可扩展标识语言)文件或S0L(结构化查询语言数据)文件。主固件290 对应于用于计算设备200的部件的备份固件。在一个实施例中,主固件290包括用于计算 设备200的部件的最后知道的稳定固件。在另一个实施例中,主固件290包括计算设备200 的有效固件260的全部拷贝。
[0026] 在一个实施例中,安全部件280可以将第二部分255和第二部分255上的内容对 控制器220和/或部件应用程序210隐藏。在隐藏第二部分255时,安全部件280可以禁用 处理器、控制器、和/或用于控制和管理第二部分255的固件,以使第二部分255对于控制 器220和/或部件应用程序210是不可见的。最终,固件包265、主固件290、状态日志295 和/或任何附加内容可以被保护以免受到恶意程序或未授权用户的影响。安全部件280可 以继续将第二部分255对控制器220和/或部件应用程序210隐藏,直到控制器220和/ 或部件应用程序210开始固件更新过程。
[0027] 为了本申请的目的,部件应用程序210可以是嵌入到计算设备200的一个或多个 部件上的固件。在另一个实施例中,部件应用程序210可以是可从计算设备的非易失性计 算机可读存储器访问的应用程序。计算机可读存储器是包含、存储、通信或输运应用程序以 被设备使用或结合设备使用的有形装置。在一个实施例中,计算机可读存储器是硬盘驱动 器、光盘、闪存盘、网络驱动器或联接至计算设备的任何其他形式的有形装置。
[0028] 图3不出根据不例的利用固件包365修改有效固件360的计算设备的框图。在一 个实施例中,控制器320和/或部件应用程序310可以发出开始固件更新过程的请求。该请 求可以识别与固件包365相关联的版本或序列号。安全部件380可以通过确定控制器320 和/或部件应用程序310所列出的版本或序列号是否匹配包括在非易失性存储部件340的 第二部分355内的固件包365的信息来认证该请求。在一个实施例中,在确定是否许可访 问固件包365时,安全部件380附加地认证固件包365。
[0029] 如果该请求和固件包365被认证,则安全部件380可以允许访问固件包365和包 括在第二部分355中的其他内容。控制器320和/或部件应用程序310可以接着访问固件 包365并且可以接着安装来自固件包365的每个固件。在一个实施例中,控制器320和/ 或部件应用程序310附加地访问来自第二部分355的状态日志395,以识别计算设备上每个 有效固件的状态。
[0030] 在安装来自固件包365的任何固件之前,控制器320和/或部件应用程序310可 以重置状态日志395上的每个有效固件360的状态。在一个实施例中,重置状态日志395 上的每个有效固件360的状态包括控制器320和/或部件应用程序310访问来自第二部分 355的对应的主固件390并安装对应的主固件390以重置每个有效固件360的状态。在另 一个实施例中,控制器320和/或部件应用程序310可以利用包括有主固件390的嵌入式 操作系统的主版本,附加地回滚计算设备的嵌入式操作系统。
[0031] 一旦每个有效固件365和/或嵌入式操作系统的状态已被重置,则控制器320和/ 或部件应用程序310接着按照第一次序安装固件包365。第一次序可以包括控制器320和 /或部件应用程序310 -个接一个并按照第一至最后的次序访问并安装来自固件包365的 每个固件。在另一个实施例中,第一次序可以包括按照最后至第一次序一个接一个访问并 安装每个固件。在每个固件被安装之后,控制器320和/或部件应用程序310可以确定对 应的有效固件是否被成功修改。
[0032] 如本实施例所示,控制器320和/或部件应用程序310可以安装固件1 :视频,并 在接着安装固件2 :音频并确定有效固件2 :音频是否被成功修改之前确定有效固件1 :视 频是否被成功修改,并且随后安装固件3 :通信和固件4 :系统。在安装固件时,控制器320 和/或部件应用程序310使用来自固件的驱动器和/或软件覆写有效固件365的任何驱动 器和/或软件。
[0033] 在确定对应的有效固件365是否被成功修改时,控制器320和/或部件应用程序 310可以做出响应而询问修改的有效固件365,或者使用修改的有效固件365在对应的部件 上运行诊断,以确定对应的部件330是否操作正确。如果修改的有效固件365响应于该询 问或者对应的部件330通过诊断测试,则有效固件365被确定为成功修改。
[0034] 控制器320和/或部件应用程序310还可以更新状态日志395,以指示对应的有 效固件360被成功修改。在一个实施例中,如果计算设备上的每个有效固件360都被成功 修改,则控制器320和/或部件应用程序310可以更新状态日志395,以指示有效固件中的 全部都被成功修改。此外,控制器320和/或部件应用程序310可以使用修改的有效固件 360覆写第二部分355上的主固件360。
[0035] 如果修改的有效固件365不响应于该询问或者对应的部件330未通过诊断测试, 则控制器320和/或部件应用程序310确定有效固件365未被成功修改,并且状态日志395 可以被更新以指示对应的有效固件360未被成功修改。如果状态日志395指示任何的有效 固件都未被成功修改,则控制器320和/或部件应用程序310终止来自固件包365的附加固 件的安装,并接着按照相反于第一次序的第二次序卸载固件包365,以恢复有效固件360。
[0036] 图4不出根据不例的卸载固件包465以恢复有效固件的计算设备的框图。如本实 施例所示,控制器420和/或部件应用程序410可以从状态日志495确定出固件3未被成 功安装并且有效固件3未被成功修改。作为响应,控制器420和/或部件应用程序410按 照第二次序继续卸载固件包465。
[0037] 控制器420和/或部件应用程序410继续卸载最近安装的固件,固件3 :通信。在 一个实施例中,卸载固件包括控制器420和/或部件应用程序410访问来自第二部分的主 固件并安装主固件以恢复有效固件。例如,控制器420和/或部件应用程序410可以访问 有效固件3的主固件并继续安装主固件的驱动器和/或软件以恢复有效固件3。一旦有效 固件3以已被恢复,则控制器420和/或部件应用程序410可以接着卸载固件2 :音频,并 恢复具有主固件的有效固件2。然后,一旦有效固件2被恢复,则控制器420和/或部件应 用程序410可以卸载固件1 :视频,并继续恢复有效固件1以及主固件。
[0038] 图5是示出根据示例的用于管理计算设备的方法的流程图。如上所述,部件应用 程序可以独立使用和/或与控制器结合使用来管理计算设备。在500,控制器和/或部件应 用程序可以最初从非易失性存储部件的第二部分找回固件包。固件包可以从例如服务器的 第二计算设备接收。在510,控制器和/或部件应用程序可以按照第一次序安装来自固件包 的固件,以修改每个对应的有效固件并确定在每个固件安装之后对应的有效固件是否被成 功修改。在来自固件包的每个固件都被安装之后,控制器和/或部件应用程序可以访问状 态日志并更新状态日志的对应于修改的有效固件的条目。
[0039] 如果对应的有效固件被成功修改,则控制器和/或部件应用程序可以更新对应的 条目,以指示固件被成功安装并且对应的有效固件被成功修改。在另一个实施例中,如果对 应的有效固件未被成功修改,则控制器和/或部件应用程序可以更新对应的条目,以指示 固件未被成功安装并且对应的有效固件未被成功修改。在520,如果来自计算设备的任何有 效固件未被成功修改,则控制器和/或应用程序可以按照相反于第一次序的第二次序接着 卸载来自固件包每个固件,以使计算设备的每个有效固件都被恢复。然后,方法完成。在其 他实施例中,除了和/或代替图5描述的内容,图5的方法包括附加的步骤。
[0040] 图6是示出根据另一个示例的用于管理计算设备的方法的流程图。在600,控制 器和/或部件应用程序可以最初地确定固件包是否已经被接收。在600,如果未接收固件 包,则控制器和/或部件应用程序继续检测固件包。在610,如果固件包被接收,则控制器和 /或部件应用程序通过访问固件包的授权签名和/或第二计算设备的授权标识的白名单来 确定固件包是否被认证。在600,如果固件包未被认证,则控制器和/或部件应用程序删除 固件包并继续检测固件包。
[0041] 如果固件包被认证,则控制器和/或固件包可以将固件包存储在非易失性存储部 件的第二部分上。在一个实施例中,安全部件将第二部分对控制器和/或部件应用程序隐 藏,直到固件更新请求已经被控制器和/或部件应用程序启动。如果检测到固件更新请求, 则安全部件可以使得控制器和/或处理器能够控制第二部分以使第二部分对于控制器和/ 或部件应用程序是可见的。
[0042] 在620,控制器和/或部件应用程序然后可以使用来自第二部分的主固件恢复计 算设备的每个有效固件。在630,控制器和/或部件应用程序还访问第二部分上的状态日志 并重置每个有效固件的状态。在640,控制器和/或部件应用程序然后可以按照第一次序安 装来自固件包中的每个固件。在650,在每个固件被安装后,控制器和/或部件应用程序通 过询问该部件或在该部件上运行诊断测试来确定对应的固件是否被成功修改。
[0043] 在660,如果有缘固件被成功修改,则状态日志被更新以指示有效固件被成功修 改。在670,控制器和/或部件应用程序确定是否存在来自固件包的任何附加固件要安装。 如果存在附加固件要安装,则控制器和/或部件应用程序安装固件,确定对应的有效固件 被成功修改,并相应地更新状态日志。在680,如果不存在附加固件要安装,则状态日志可以 被完全更新。此外,在690,可以使用当前有效固件来覆写主固件。
[0044] 在另一个实施例中,在695,如果控制器和/或部件应用程序之前确定对应的有效 固件未被成功修改,则控制器和/或部件应用程序可以按照相反于第一次序的第二次序卸 载固件包,以恢复计算设备的有效固件。然后,方法完成。在其他实施例中,图6的方法包 括除了图6中描述的那些之外和/或代替图6中描述的那些的其他步骤。
【权利要求】
1. 一种计算设备,包括: 具有第一部分和第二部分的非易失性存储部件; 其中所述第一部分包括用于所述计算设备的部件的有效固件,并且所述第二部分包括 用于修改所述有效固件的固件包;以及 控制器,用于安装来自所述固件包的固件,并在接着安装来自所述固件包的后续固件 之前确定所述固件是否被成功安装; 其中如果来自所述固件包的固件安装失败,则所述控制器卸载所述固件包以恢复所述 有效固件。
2. 根据权利要求1所述的计算设备,其中所述非易失性存储部件的所述第二部分包括 对应于所述有效固件的主固件和所述计算设备的嵌入式操作系统的主版本中的至少一个。
3. 根据权利要求1所述的计算设备,其中所述非易失性存储部件的所述第二部分包括 状态日志,以追踪要被所述固件包修改的有效固件的状态。
4. 根据权利要求1所述的计算设备,进一步包括用于从第二计算设备接收所述固件包 的通信部件。
5. 根据权利要求1所述的计算设备,进一步包括用于认证所述固件包的安全部件。
6. 根据权利要求5所述的计算设备,其中如果所述固件包未被认证,则所述安全部件 将所述非易失性存储器的所述第二部分对所述控制器隐藏。
7. 根据权利要求5所述的计算设备,其中如果所述固件包被认证,则所述安全部件使 所述非易失性存储器的所述第二部分对于所述控制器可见。
8. -种用于管理计算设备的方法,包括: 从非易失性存储部件的第二部分接收固件包; 其中所述非易失性存储部件的第一部分包括用于所述计算设备的部件的有效固件; 按照第一次序安装所述固件包以修改所述有效固件,并确定所述有效固件是否被成功 修改,以及 如果有效固件未被成功修改,则按照相反于所述第一次序的第二次序卸载所述固件 包,以恢复所述有效固件。
9. 根据权利要求8所述的用于管理计算设备的方法,进一步包括:访问来自所述非易 失性存储器的所述第二部分的状态日志,以识别所述计算设备上的每个有效固件的状态。
10. 根据权利要求9所述的用于管理计算设备的方法,进一步包括:在安装所述固件包 之前,重置所述状态日志上的每个有效固件的状态。
11. 根据权利要求10所述的用于管理计算设备的方法,进一步包括:在使用所述固件 包修改对应的有效固件时,更新所述状态日志上的每个有效固件的状态。
12. 根据权利要求10所述的用于管理计算设备的方法,其中重置所述状态日志上的每 个有效固件的状态包括:安装来自所述非易失性存储部件的所述第二部分的主固件,以修 改所述有效固件。
13. 根据权利要求12所述的用于管理计算设备的方法,其中重置所述日志文件上的每 个有效固件的状态包括:使用嵌入式操作系统的主版本回滚所述嵌入式操作系统。
14. 一种计算机可读媒介,包括指令,如果所述指令被执行,则促使控制器: 从非易失性存储部件的第二部分找回固件包,其中所述非易失性存储部件的第一部分 包括用于计算设备的部件的有效固件; 按照第一次序安装来自所述固件包的每个固件,以修改所述有效固件; 确定在安装每个固件之后每个对应的有效固件是否被成功修改,以及 如果任何有效固件未被成功修改,则按照相反于所述第一次序的第二次序卸载所述固 件包,以恢复所述有效固件。
15.包括权利要求14所述的包括指令的计算机可读媒介,其中如果来自所述固件包的 每个固件被成功安装,则所述控制器使用修改的有效固件覆写主固件。
【文档编号】G06F9/44GK104220981SQ201280072039
【公开日】2014年12月17日 申请日期:2012年2月23日 优先权日:2012年2月23日
【发明者】埃里克·A·拉米雷斯, 杰米尔·J·艾瓦兹, 李·A·普赖梅斯贝格尔 申请人:惠普发展公司,有限责任合伙企业