根据第一代码生成第二代码的制作方法

文档序号:9650582阅读:367来源:国知局
根据第一代码生成第二代码的制作方法
【专利说明】根据第一代码生成第二代码
【背景技术】
[0001] 计算系统可以包括执行计算系统的各种启动功能的代码。该代码可以包括基本输 入/输出系统(BIOS)代码。BIOS代码可以是窜改的目标,诸如由于通过计算系统中的恶意 软件或通过另一实体的窜改。
[0002] 由于窜改或其他系统错误,BIOS代码可以被损害。在某些情况下,BIOS代码的多 个映像可以被存储在计算系统中以虑及从对BIOS代码的映像之一的损害的恢复。如果第 一BIOS代码映像将被损害,则第二BIOS代码映像可以用来允许计算系统继续操作。
【附图说明】
[0003] 关于以下附图描述了某些实现。
[0004] 图1是根据某些实现的包括差别过滤器(differentialfilter)的示例系统的框 图。
[0005] 图2和图3是根据某些实现的过程的流程图。
[0006] 图4是根据某些实现的示例差别数据的示意图。
[0007] 图5是根据进一步实现的包括差别数据构建器(builder)的示例系统的框图。
【具体实施方式】
[0008]用来执行计算系统的启动的系统代码可以包括系统固件,其可以是在计算系统的 处理器(或多个处理器)上可执行的机器可读指令的形式。"系统固件"可以指能够执行计 算系统的启动的任何机器可读指令。计算系统的示例包括台式计算机、笔记本计算机、平板 计算机、个人数字助理(PDA)、智能电话、游戏器具、服务器计算机、存储节点、网络通信节点 等。
[0009] 系统固件可以包括基本输入/输出系统(BIOS)代码,所述基本输入/输出系统 (BIOS)代码可以初始化计算系统的各种部件并且加载计算系统的操作系统(OS)。BIOS代 码可以执行硬件部件的检查以确保硬件部件是存在的并且正在适当地运转。这可以是例如 上电自检(POST)过程的部分。在POST过程之后,BIOS代码可以通过引导序列的剩余序列 前进,在其之后BIOS代码可以加载0S并向0S传递控制。BIOS代码可以包括传统的BIOS 代码或统一可扩展固件接口(UEFI)代码。在某些示例中,BIOS代码可以包括在0S加载之 后执行的运行时间部分。
[0010] 系统固件可以被存储在非易失性存储器中,非易失性存储器诸如闪存或可编程的 任何其他持久(persistent)存储器。系统固件可以是通过恶意软件或其他实体窜改的主 题,这可以使得系统固件被损害。例如,系统固件可以被破坏(corrupt)使得其不再可以在 没有错误的情况下执行,或系统固件可以被修改使得系统固件执行未被授权的任务。系统 固件的损害的另一源包括在用于更新系统固件的更新过程期间的系统错误,诸如系统电力 丢失。由于在更新过程期间的系统错误,正被更新的系统固件可能变得不能用。
[0011] 在某些实现中,多个系统固件映像可以被存储在计算系统中。映像指代码的副本 或实例。系统固件映像中的一个是主要系统固件映像,其在正常操作期间在主要系统固件 映像没有被损害时执行。然而,如果主要系统固件映像被损害,则次要系统固件映像可以被 用来继续系统操作。应注意在某些情况下,次要系统固件映像可能被损害,在该情况下主要 系统固件映像可以被用来恢复被损害的次要系统固件映像。
[0012] 在计算系统中可执行的各种类型的代码可以依赖于(与非易失性存储器不同的) 主要系统存储器的可用性以允许代码使用可再定位的(或相关的)存储器地址用于引用对 象、调用函数或访问数据。通过使用可再定位的存储器地址,代码不必与物理存储器地址相 关,所述物理存储器地址对应于对象、函数或数据在存储器中物理上位于的位置。如果主要 系统存储器是可用的,则在加载到主要系统存储器中的代码中指定的可再定位地址可以被 转译(再定位)成物理地址。
[0013] 可再定位存储器地址被用来允许代码位于存储器中的各种物理地址处;可再定位 存储器地址不依赖于在构建代码时可用的信息。(例如,通过再定位加载器)该可再定位存 储器地址被转译成物理存储器地址以访问存储在物理存储器中的相应物理位置处的数据。
[0014] 针对使用可再定位存储器寻址的代码,主要系统存储器必须被首先初始化并且是 可用的。再定位加载器可以包括地址转译信息以在可再定位存储器地址和物理存储器地址 之间转译。
[0015] 早期在引导过程中初始化主要系统存储器。在某些实现中,主要系统存储器的初 始化可以由系统固件的引导块执行。引导块是在计算系统启动时执行的系统固件的第一部 分。在允许系统固件的其余部分执行之前首先执行引导块。引导块可以被用来检查系统固 件的完整性以及被用来执行其他初始功能,所述其他初始功能包括主要系统存储器的初始 化。
[0016] 在某些示例中,引导块还被称作系统固件的预先可扩展固件接口(Pre-EFI)初始 化(PEI)代码。
[0017] 因为引导块负责初始化系主要系统存储器,所以(在主要系统存储器的初始化之 前)从非易失性存储器执行的引导块的初始部分依赖于物理存储器地址而不是可再定位存 储器地址的使用。包括在引导块中的物理存储器地址在引导块的构建时间处被固定,并且 在引导块的构建之后不可以改变。
[0018] 如上文讨论的那样,针对增强的可靠性,包括引导块的多个映像的多个系统固件 映像可以被存储在计算系统中。如果主要引导块映像将被损害,则包括引导块的多个副本 虑及使用次要引导块映像的系统恢复。引导块的多个映像被存储在存储器的不同部分中, 并且更具体地被存储在非易失性存储器的不同部分中。因为引导块负责初始化主要系统存 储器,所以引导块映像(或引导块映像的至少第一部分)不能够依赖可再定位存储器寻址来 解析在引导块中引用的对象、函数、数据等的物理地址。有效地,每个引导块映像可以"在适 当的位置(inplace)"执行,换言之从在引导块映像被初始安装或稍后更新的时间处复制 引导块映像的物理地址执行。这意味着引导块的不同映像针对每个对象引用、函数调用、数 据引用等具有不同的物理地址。
[0019] 因此,因为两个引导块映像引用不同的物理地址,所以替代一个引导块映像("目 标引导块映像")的另一引导块映像("源引导块映像")的简单复制将不导致正确的执行。换 言之,如果源引导块映像将被复制到存储将被替代的目标引导块映像的存储器区域中,则 执行来自该存储器区域的源引导块映像将导致错误的操作,因为源引导块映像引用与由目 标引导块映像引用的物理地址不同的物理地址。
[0020] 根据某些实现,为了解决前述内容,可以通过使用差别数据来根据一个引导块映 像创建另一引导块映像。当根据源引导块映像创建目标引导块映像时,可以应用差别数据 来将源引导块映像中的物理地址修改成适于目标引导块映像的物理地址。另外,在某些实 现中,针对其中源和目标引导块映像不同的那些区域,还可以应用差别数据来修改源引导 块映像的其他内容。
[0021] 尽管在当前的讨论中参考了系统固件和引导块,但是应注意,根据某些实现的技 术或机制可以被应用于其他类型的引导代码,所述其他类型的引导代码可以被用于执行系 统的启动功能。
[0022] 另外,根据某些实现的技术或机制还可以被应用于其他
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1