CN105408858A - 根据第一代码生成第二代码 - Google Patents

根据第一代码生成第二代码 Download PDF

Info

Publication number
CN105408858A
CN105408858A CN201380078462.9A CN201380078462A CN105408858A CN 105408858 A CN105408858 A CN 105408858A CN 201380078462 A CN201380078462 A CN 201380078462A CN 105408858 A CN105408858 A CN 105408858A
Authority
CN
China
Prior art keywords
code
physical address
bootstrap block
rely
difference data
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.)
Granted
Application number
CN201380078462.9A
Other languages
English (en)
Other versions
CN105408858B (zh
Inventor
B.安巴扎根
P.L.吉邦斯
C.H.斯图尔特
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN105408858A publication Critical patent/CN105408858A/zh
Application granted granted Critical
Publication of CN105408858B publication Critical patent/CN105408858B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • 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/575Secure boot
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • 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/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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

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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

使用差别数据根据第一物理地址依赖代码生成第二物理地址依赖代码,其中生成包括将第一物理地址依赖代码的区域中的第一物理地址转换到第二不同的物理地址用于包括在第二物理地址依赖代码的相应区域中。

Description

根据第一代码生成第二代码
背景技术
计算系统可以包括执行计算系统的各种启动功能的代码。该代码可以包括基本输入/输出系统(BIOS)代码。BIOS代码可以是窜改的目标,诸如由于通过计算系统中的恶意软件或通过另一实体的窜改。
由于窜改或其他系统错误,BIOS代码可以被损害。在某些情况下,BIOS代码的多个映像可以被存储在计算系统中以虑及从对BIOS代码的映像之一的损害的恢复。如果第一BIOS代码映像将被损害,则第二BIOS代码映像可以用来允许计算系统继续操作。
附图说明
关于以下附图描述了某些实现。
图1是根据某些实现的包括差别过滤器(differentialfilter)的示例系统的框图。
图2和图3是根据某些实现的过程的流程图。
图4是根据某些实现的示例差别数据的示意图。
图5是根据进一步实现的包括差别数据构建器(builder)的示例系统的框图。
具体实施方式
用来执行计算系统的启动的系统代码可以包括系统固件,其可以是在计算系统的处理器(或多个处理器)上可执行的机器可读指令的形式。“系统固件”可以指能够执行计算系统的启动的任何机器可读指令。计算系统的示例包括台式计算机、笔记本计算机、平板计算机、个人数字助理(PDA)、智能电话、游戏器具、服务器计算机、存储节点、网络通信节点等。
系统固件可以包括基本输入/输出系统(BIOS)代码,所述基本输入/输出系统(BIOS)代码可以初始化计算系统的各种部件并且加载计算系统的操作系统(OS)。BIOS代码可以执行硬件部件的检查以确保硬件部件是存在的并且正在适当地运转。这可以是例如上电自检(POST)过程的部分。在POST过程之后,BIOS代码可以通过引导序列的剩余序列前进,在其之后BIOS代码可以加载OS并向OS传递控制。BIOS代码可以包括传统的BIOS代码或统一可扩展固件接口(UEFI)代码。在某些示例中,BIOS代码可以包括在OS加载之后执行的运行时间部分。
系统固件可以被存储在非易失性存储器中,非易失性存储器诸如闪存或可编程的任何其他持久(persistent)存储器。系统固件可以是通过恶意软件或其他实体窜改的主题,这可以使得系统固件被损害。例如,系统固件可以被破坏(corrupt)使得其不再可以在没有错误的情况下执行,或系统固件可以被修改使得系统固件执行未被授权的任务。系统固件的损害的另一源包括在用于更新系统固件的更新过程期间的系统错误,诸如系统电力丢失。由于在更新过程期间的系统错误,正被更新的系统固件可能变得不能用。
在某些实现中,多个系统固件映像可以被存储在计算系统中。映像指代码的副本或实例。系统固件映像中的一个是主要系统固件映像,其在正常操作期间在主要系统固件映像没有被损害时执行。然而,如果主要系统固件映像被损害,则次要系统固件映像可以被用来继续系统操作。应注意在某些情况下,次要系统固件映像可能被损害,在该情况下主要系统固件映像可以被用来恢复被损害的次要系统固件映像。
在计算系统中可执行的各种类型的代码可以依赖于(与非易失性存储器不同的)主要系统存储器的可用性以允许代码使用可再定位的(或相关的)存储器地址用于引用对象、调用函数或访问数据。通过使用可再定位的存储器地址,代码不必与物理存储器地址相关,所述物理存储器地址对应于对象、函数或数据在存储器中物理上位于的位置。如果主要系统存储器是可用的,则在加载到主要系统存储器中的代码中指定的可再定位地址可以被转译(再定位)成物理地址。
可再定位存储器地址被用来允许代码位于存储器中的各种物理地址处;可再定位存储器地址不依赖于在构建代码时可用的信息。(例如,通过再定位加载器)该可再定位存储器地址被转译成物理存储器地址以访问存储在物理存储器中的相应物理位置处的数据。
针对使用可再定位存储器寻址的代码,主要系统存储器必须被首先初始化并且是可用的。再定位加载器可以包括地址转译信息以在可再定位存储器地址和物理存储器地址之间转译。
早期在引导过程中初始化主要系统存储器。在某些实现中,主要系统存储器的初始化可以由系统固件的引导块执行。引导块是在计算系统启动时执行的系统固件的第一部分。在允许系统固件的其余部分执行之前首先执行引导块。引导块可以被用来检查系统固件的完整性以及被用来执行其他初始功能,所述其他初始功能包括主要系统存储器的初始化。
在某些示例中,引导块还被称作系统固件的预先可扩展固件接口(Pre-EFI)初始化(PEI)代码。
因为引导块负责初始化系主要系统存储器,所以(在主要系统存储器的初始化之前)从非易失性存储器执行的引导块的初始部分依赖于物理存储器地址而不是可再定位存储器地址的使用。包括在引导块中的物理存储器地址在引导块的构建时间处被固定,并且在引导块的构建之后不可以改变。
如上文讨论的那样,针对增强的可靠性,包括引导块的多个映像的多个系统固件映像可以被存储在计算系统中。如果主要引导块映像将被损害,则包括引导块的多个副本虑及使用次要引导块映像的系统恢复。引导块的多个映像被存储在存储器的不同部分中,并且更具体地被存储在非易失性存储器的不同部分中。因为引导块负责初始化主要系统存储器,所以引导块映像(或引导块映像的至少第一部分)不能够依赖可再定位存储器寻址来解析在引导块中引用的对象、函数、数据等的物理地址。有效地,每个引导块映像可以“在适当的位置(inplace)”执行,换言之从在引导块映像被初始安装或稍后更新的时间处复制引导块映像的物理地址执行。这意味着引导块的不同映像针对每个对象引用、函数调用、数据引用等具有不同的物理地址。
因此,因为两个引导块映像引用不同的物理地址,所以替代一个引导块映像(“目标引导块映像”)的另一引导块映像(“源引导块映像”)的简单复制将不导致正确的执行。换言之,如果源引导块映像将被复制到存储将被替代的目标引导块映像的存储器区域中,则执行来自该存储器区域的源引导块映像将导致错误的操作,因为源引导块映像引用与由目标引导块映像引用的物理地址不同的物理地址。
根据某些实现,为了解决前述内容,可以通过使用差别数据来根据一个引导块映像创建另一引导块映像。当根据源引导块映像创建目标引导块映像时,可以应用差别数据来将源引导块映像中的物理地址修改成适于目标引导块映像的物理地址。另外,在某些实现中,针对其中源和目标引导块映像不同的那些区域,还可以应用差别数据来修改源引导块映像的其他内容。
尽管在当前的讨论中参考了系统固件和引导块,但是应注意,根据某些实现的技术或机制可以被应用于其他类型的引导代码,所述其他类型的引导代码可以被用于执行系统的启动功能。
另外,根据某些实现的技术或机制还可以被应用于其他类型的代码,如果代码是“物理地址依赖代码”的话。物理地址依赖代码指使用物理存储器地址而不是可再定位存储器地址来引用对象、调用函数或引用数据的代码。
图1是示例系统100的框图,所述示例系统100包括一个或多个处理器102和非易失性存储器104。处理器可以包括微处理器、微控制器、处理器模块或子系统、可编程集成电路、可编程门阵列,或者另一控制或计算设备。非易失性存储器104可以包括一个或多个存储器设备,诸如(一个或多个)闪存设备、(一个或多个)基于盘的存储设备等。可以利用即使从系统100移除电力也能够维持存储在(一个或多个)存储设备中的数据的任何存储设备(或多个存储设备)来实现非易失性存储器104。
非易失性存储器104存储包括引导块108的系统固件。另外,另一引导块118还可以被存储在非易失性存储器104中。引导块(也被称作引导块映像)108和118被存储在非易失性存储器104的不同存储器区域中。不同的存储器区域可以在分离的存储器设备中或在相同存储器设备的不同分区中。系统固件可以进一步包括存储在非易失性存储器104中的(未示出的)其他部分。
多个引导块108和118的存在提供更可靠和稳健的系统。引导块108可以是主要引导块,而引导块118可以是次要引导块。如果主要引导块108被损害,则可以代替地使用次要引导块118以允许系统100继续操作。
可以更新存储在非易失性存储器104中的系统固件,所述非易失性存储器104包括引导块108和118。图1图示了其中用于更新引导块的引导块更新信息110由更新控制逻辑116接收的示例。应注意引导块更新信息110可以是用于更新系统固件的其他部分的较大更新信息的部分。引导块更新信息110包括更新的引导块112和差别数据114。
引导块更新信息110中的更新的引导块112可以是次要引导块118的更新版本。在引导块更新信息110的接收时,更新的引导块112连同差别数据114可以被存储在非易失性存储器104中来替代次要引导块118。以该方式,利用接收的引导块更新信息110中的更新的引导块112来有效地更新次要引导块118。为了节省非易失性存储器104的空间,主要引导块108的更新版本没有被包括在引导块信息110中。相反地,如上文记载的那样,通过使用差别数据114转换(一个或多个)物理地址来根据更新的引导块112产生主要引导块108的更新版本。
非易失性存储器104中的空间节省在以下情况中可以是有益的:其中主要引导块108(以及可能地系统固件的其他部分)被存储在诸如通过系统100的芯片组锁定的非易失性存储器104的(一个或多个)存储器区域中。芯片组指执行计算系统100的指定功能的系统100的电路,所述指定功能诸如视频功能、总线接口功能、存储器控制器功能等。例如,芯片组可以包括I/O控制器,诸如来自Intel公司的平台控制器集线器(PCH)。PCH可以包括各种功能,包括到图形子系统的显示接口、到各种I/O设备可以连接到的系统总线的系统总线接口等。在其他示例中,可以使用其他类型的I/O控制器。
如果主要引导块108被存储在锁定的存储器区域中,则在系统100的运行时间期间该存储器区域不可用来被写入(用于更新)。因此,在运行时间期间不可以更新主要引导块108。锁定的存储器区域因此减少在运行时间期间用于写的非易失性存储器104中的可用空间的量。
在其中非易失性存储器104的可用空间的量受限的实现中,可能不存在充足的空间将两个更新的引导块映像(一个更新主要引导块108并且另一个更新次要引导块118)写到非易失性存储器104的未锁定的区域中。
根据某些实现,代替将两个更新的引导块映像写到非易失性存储器,更新控制逻辑116可以将单个的更新的引导块映像(更新的引导块112)连同差别数据114写到非易失性存储器104的未锁定存储器区域,所述差别数据114具有比更新的引导块映像小的大小。
一旦使用引导块更新信息110中的更新的引导块112来替代次要引导块118,更新控制逻辑116中的差别过滤器117就可以使用差别数据114来创建主要引导块108的更新版本,其中主要引导块的更新版本被用来替代主要引导块108以完成引导块更新。
更新控制逻辑116和差别过滤器117可以被实现为在(一个或多个)处理器102上可执行的机器可读指令。在某些示例中,更新控制逻辑116和差别过滤器117可以是系统固件的部分。尽管在图1中差别过滤器117被描绘为是更新控制逻辑116的部分,但应注意在其他示例中差别过滤器117可以与更新控制逻辑116分离。
在引导过程期间,可以执行包括引导块、更新控制逻辑116和差别过滤器117的系统固件。
更新控制逻辑116首先将更新的引导块112和差别数据114写到非易失性存储器104来替代次要引导块118。接着,通过将差别数据应用于更新的引导块112,差别过滤器117能够根据更新的引导块112产生主要引导块108的更新版本。生成主要引导块108的更新版本涉及将更新的引导块112的(一个或多个)相应区域中的一个或多个物理地址转换成被包括在主要引导块108的更新版本中的(一个或多个)不同的相应物理地址。
例如,假设存在被称作引导块A和引导块B的两个引导块映像,并且每个包含被称作BootStart的模块。调用BootStart模块以启动相应的引导块映像。针对引导块A中的BootStart模块调用的物理地址可以是第一物理地址(例如 ),并且针对引导块B中的BootStart模块调用的物理地址可以是第二不同的物理地址(例如 )。通过根据相应的不同物理地址执行相应的BootStart模块可以启动引导块A和引导块B。尽管这虑及执行的冗余(其中如果检测到引导块A被损害则可以执行引导块B),但是由于针对BootStart模块的不同的物理地址的使用,不可以从引导块B恢复引导块A,即使引导块A和引导块B中的逻辑可以是相同的。当引导块B的BootStart模块从引导块A的位置启动时,将引导块B简单地复制到引导块A的存储器区域将导致错误。
并且,构建环境频繁地构造针对由引导块访问的数据的寻址方案,所述数据在引导块中内部相干。然而,当这些寻址方案表示物理地址而不是可再定位地址时,引导块映像的一个区域内的任何地址可以与位于另一引导块映像的相应区域中的相应的内部相干的地址不同。
在替代的实现中,代替使用更新控制逻辑116和差别过滤器117更新引导块映像,可以更新其他类型的物理地址依赖代码映像。这些物理地址依赖代码映像可以被存储在非易失性存储器104中。
图2是根据某些实现的过程200的流程图,所述过程200例如可以由图1的差别过滤器117执行。过程200接收(在202处)第一物理地址依赖代码(例如更新的引导块112),其中第一物理地址依赖代码包含包括第一物理地址的区域。
差别过滤器117使用差别数据(例如114)根据第一物理地址依赖代码生成(在204处)第二物理地址依赖代码(例如引导块108的更新版本),其中生成包括将第一物理地址依赖代码的区域中的第一物理地址转换成第二不同的物理地址用于包括在第二物理地址依赖代码的相应区域中。
图3是根据某些实现的引导代码更新过程300的流程图。例如,更新过程300可以由更新控制逻辑116和差别过滤器117执行。
更新过程300接收(在302处)引导代码更新信息(例如图1中的110),所述引导代码更新信息包括更新的引导代码(例如图1中的112)和差别数据(例如图1中的114)。更新过程300将更新的引导代码和差别数据写(在304处)到存储器(例如图1中的非易失性存储器104)。到存储器的更新的引导代码的写替代(更新)一个引导代码(例如图1中的次要引导块118)。
通过将差别数据应用于更新的引导代码,更新过程300生成(在306处)另一引导代码(例如图1中的主要引导块108)的更新版本。更新过程300然后将另一引导代码的更新版本写(在308处)到另一引导代码的当前版本位于的存储器区域来替代另一引导代码的当前版本。在在308处写之前,可以首先解锁存储器区域。以该方式,可以使用仅一个更新的引导代码(连同差别数据)来更新存储器中的引导代码的两个实例。
多个差别技术中的任何差别技术可以由差别过滤器117采用以根据一个引导块映像产生另一引导块映像。在某些实现中,第一差别技术被应用在以下情况中:其中引导块映像在仅物理地址中不同——换言之,在引导块映像的其他内容中不存在差异。
在具体示例中,可以确定由两个引导块映像引用的物理地址在物理地址的最低有效部分(例如物理地址的最低两个字节)中不同。在这样的示例中,在第一引导块映像的第一区域中引用的物理地址与在第二引导块映像的相应的第一区域中引用的物理地址相差恒定量(例如两个字节长度的地址差异)。在某些示例中,在第一引导块映像的第二区域中引用的物理地址可以与在第二引导块映像的相应的第二区域中引用的物理地址相差不同的恒定量。
例如,在引导块A和B的第一区域中,地址差异可以是0xE1F。在引导块A的第一区域中的物理地址可以是,并且在引导块B的相应第一区域中的物理地址可以是(0xE1F的差异)。在引导块A的第一区域中,另一物理地址可以是并且在引导块B的第一区域中的相应物理地址可以是(仍是的差异)。然而,在引导块A和B的第二区域中,物理地址差异可以改变成
在前述的示例中,可以看到在引导块A的区域中的物理地址与引导块B的相应区域中的物理地址之间的差异在相应的物理地址的最后两个字节中(两个字节长的地址差异)。然而,在其他示例中,在不同的引导块映像中的物理地址可以相差多于两个字节或相差少于两个字节。
利用第一差别技术,差别数据(例如图1中的114)可以包括对应于引导块映像的不同区域的多个条目。每个条目针对引导块映像中的每个的相应区域指定不同的物理地址。例如,差别数据的第一条目可以针对引导块映像的第一区域指定第一物理地址差异、差别数据的第二条目可以针对引导块映像的第二区域指定第二物理地址差异,以此类推。
在前述实现中,假设在引导块映像之间的差异包括仅物理地址中的差异。在其他实现中,引导块映像可以在物理地址中以及在引导块映像的其他内容中不同是可能。例如,引导块映像可以在包含在相应的引导块区域中的串或其他元素的物理位置中不同。在不同的引导块映像中涉及的串本身可以是相同的,但在引导块区域中的它们的位置是不同的。
在这些较后的实现中,可以使用第二差别技术,其中不同类型的差别数据可以由差别过滤器117(图1)应用。在这样的实现中,差别数据可以被分成多个段,包括其中引导块映像的相应区域的内容相同的段以及其中引导块映像的相应区域的内容不同的段。
图4图示了可以由第二差别技术使用的差别数据114的示例。图4的差别数据114包括使差别数据114的不同的段402、404、406和408分离的分离标签(示出的标签1、2、3和4)。分离标签可以是指定值,例如OxFF。在其他示例中,分离标签可以是不同的值。
标签1标识差别数据114的第一段402,所述第一段402对应于具有相同内容的引导块映像的第一区域。第一段402还指定引导块映像的第一区域中的每个的长度403(例如字节的数量)。
标签2标识差别数据114的第二段404,所述第二段404对应于具有不同内容的引导块映像的第二区域。第二段404还指定引导块映像的第二区域的长度405(例如字节的数量)。
标签3标识差别数据114的第三段406,所述第三段406对应于具有相同内容的引导块映像的第三区域。第三段406还指定引导块映像的第三区域的长度407(例如字节的数量)。
标签4标识差别数据114的第四段408,所述第四段408对应于具有不同内容的引导块映像的第四区域。第四段408还指定引导块映像的第四区域的长度409(例如字节的数量)。
另外,第二段404还包括描述引导块映像的第二区域中的内容中的差异的信息。在某些实现中,代替包括差别数据114的第二段404中的内容中的差异,一个或多个索引可以被包括在第二段中。每个索引指向另一数据结构410(例如表格)中的相应位置,所述另一数据结构410包含内容中的差异(在图4中被描绘为“diff字节”或“差异字节”)。
第四段408还包括描述引导块映像的第四区域中的内容中的差异的信息。第四段408进一步包括指向数据结构410的条目的索引。
在其中分离标签(例如标签1、2、3和4)被指定有值0xFF的示例中,使用基础(base)15对长度信息(例如403、405、407和409)编码以防止与分离标签的任何可能的碰撞。基础15允许任何数字的最高半字节(nibble)是0xE而不是0xF。另一方面,利用基础16编码将允许最高半字节具有值0xF。通过使用基础15编码,长度信息(403、405、407和409)的任何半字节的最大值是0xE,其确保长度信息将不具有与0xFF(在某些示例中分离标签的值)碰撞的值。
在数据结构410中,不保持引导块映像的实际内容,而是保持引导块映像的内容之间的差异。在某些示例中,数据结构410的每个条目包括值,所述值是第一引导块映像中的字节与第二引导块映像中的相应字节的差异。在其中差别数据114被用来跟踪引导块映像的字节中的差异的示例中,在数据结构410中可以存在高达255个差异值。例如,根据0x01到0xFE的范围,数据结构410的一个条目可以指定0x35的差异值,数据结构410的另一条目可以指定0x8C的差异值,以此类推。数据结构410的条目不必以连续增序或降序指定差异值。代之以,可以在构建时间处以字节差异被检测的顺序来创建数据结构410的条目。
可以避免数据结构406的条目与分离标签(例如0xFF)的碰撞,因为在一个引导块映像与另一引导块映像的任何单个字节之间仅可以存在直到255个差异值。按照定义,第256个差异值是相同的字节,即零的差异。
如果引导块映像的区域包含相同的内容(相同的字节),则差别数据114中的诸如段402或406之类的段被用来指定具有相同内容的引导块映像的每个这样的区域的长度(例如字节的数量)。
如上文记载的那样,布置包括在第二或第四段404或408中的索引使得索引将不与表示分离标签的值(例如0xFF)冲突。例如,索引可以是基于零的索引(从零开始的索引),使得对第255个字节差异的索引是0xFE而不是0xFF。
通过将差别数据114添加到第一引导块映像,图4的差别数据114可以用于根据第一引导块映像来创建第二引导块映像。替代地,可以通过从第二引导块映像减去差别数据114来根据第二引导块映像创建第一引导块映像。
图5是示例系统500的框图,所述示例系统500包括被实现为在一个或多个处理器504上可执行的机器可读指令的差别数据构建器502。系统500进一步包括网络接口506(以允许系统500通过网络通信)和存储介质(或多个存储介质)508。
存储介质(或多个存储介质)508可以存储多个引导块映像(例如引导块A和引导块B)。差别数据构建器502能够将引导块A与引导块B进行比较来创建差别数据114,所述差别数据114可以被发送到图1的系统100。针对其中引导块A与B仅在物理地址中不同的情况,创建的差别数据114可以是标识仅物理地址差异的差别数据。替代地,针对其中引导块A与B在物理地址和其他内容中不同的情况,创建的差别数据114可以是图4的差别数据114。
尽管系统500被描绘为是与系统100分离的,但应注意在其他示例中系统100和500可以是相同的系统。
数据和指令被存储在相应的存储设备中,所述存储设备被实现为一个或多个计算机可读或机器可读存储介质。存储介质包括不同形式的存储器,所述不同形式的存储器包括:半导体存储器设备,诸如动态或静态随机访问存储器(DRAM或SRAM)、可擦除且可编程只读存储器(EPROM)、电可擦除且可编程只读存储器(EEPROM)以及闪存;磁盘,诸如固定的软盘和可移除盘;包括带的其他磁介质;光学介质,诸如压缩盘(CD)或数字视频盘(DVD);或其他类型的存储设备。应注意上文讨论的指令可以被提供在一个计算机可读或机器可读存储介质上,或替代地可以被提供在分布在可能具有复数个节点的大系统中的多个计算机可读或机器可读存储介质上。(一个或多个)这样的计算机可读或机器可读存储介质被视为是物品(或制品)的部分。物品或制品可以指任何制造的单个部件或多个部件。(一个或多个)存储介质可以位于运行机器可读指令的机器中或位于可以通过网络从其下载用于执行的机器可读指令的远程站点处。
在前述的描述中,记载了多个细节以提供对本文中公开的主题的理解。然而,可以在没有这些细节中的某些或全部的情况下实施实现。其他实现可以包括根据上文讨论的细节的修改和变型。意图是所附权利要求书覆盖这样的修改和变型。

Claims (15)

1.一种方法,包括:
由具有处理器的系统接收第一物理地址依赖代码,第一物理地址依赖代码包含包括第一物理地址的区域;以及
由系统使用差别数据根据第一物理地址依赖代码生成第二物理地址依赖代码,其中生成包括将第一物理地址依赖代码的区域中的第一物理地址转换成第二不同的物理地址用于包括在第二物理地址依赖代码的相应区域中。
2.如权利要求1所述的方法,其中接收第一物理地址依赖代码包括接收第一引导代码,并且其中生成第二物理地址依赖代码包括生成第二引导代码。
3.如权利要求1所述的方法,进一步包括利用生成的第二物理地址依赖代码更新第二物理地址依赖代码的当前版本。
4.如权利要求1所述的方法,其中差别数据标识在第一物理地址依赖代码与第二物理地址依赖代码之间的物理地址中的至少一个差异。
5.如权利要求1所述的方法,其中差别数据标识在第一物理地址依赖代码与第二物理地址依赖代码之间的物理地址中的多个差异。
6.如权利要求1所述的方法,其中使用差别数据根据第一物理地址依赖代码生成第二物理地址依赖代码进一步包括修改第一物理地址依赖代码的其他内容以产生第二物理地址依赖代码。
7.如权利要求6所述的方法,其中差别数据标识在第一物理地址依赖代码与第二物理地址依赖代码之间的内容中的多个差异。
8.如权利要求7所述的方法,其中差别数据包括对包括内容中的多个差异的数据结构的条目的索引。
9.如权利要求8所述的方法,其中差别数据进一步包括标识差别数据的相应段的分离标签,其中段中的第一个对应于相同的第一物理地址依赖代码与第二物理地址依赖代码的区域,并且段中的第二个包括索引。
10.一种系统,包括:
存储器,用以存储第一引导代码的当前版本;
至少一个处理器;以及
更新控制逻辑,其在至少一个处理器上可执行以:
 接收包括更新的引导代码和差别数据的引导代码更新信息;以及
 基于使用差别数据将更新的引导代码中的物理地址转换成不同的物理地址来生成第一引导代码的更新版本。
11.如权利要求10所述的系统,其中存储器进一步存储在系统中的故障的情况下可用于提供系统恢复的附加的引导代码,并且其中更新的引导代码是附加的引导代码的更新版本。
12.如权利要求10所述的系统,其中差别数据标识在第一引导代码与更新的引导代码之间的内容中的差异。
13.如权利要求10所述的系统,其中存储第一引导代码的当前版本的存储器的存储器区域在系统的运行时间期间是锁定的存储器区域。
14.一种包括存储指令的至少一个机器可读存储介质的物品,所述指令在执行时使得系统:
基于第一物理地址依赖代码和第二物理地址依赖代码来确定差别数据,第一物理地址依赖代码包含包括第一物理地址的区域,
其中差别数据包括信息以根据第一物理地址依赖代码生成第二物理地址依赖代码,其中生成包括将第一物理地址依赖代码的区域中的第一物理地址转换成第二不同的物理地址用于包括在第二物理地址依赖代码的相应区域中。
15.如权利要求14所述的物品,其中第一物理地址依赖代码包括第一引导代码,并且第二物理地址依赖代码包括第二引导代码。
CN201380078462.9A 2013-07-31 2013-07-31 用于计算系统的方法和系统 Expired - Fee Related CN105408858B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/052877 WO2015016865A1 (en) 2013-07-31 2013-07-31 Generating a second code from a first code

Publications (2)

Publication Number Publication Date
CN105408858A true CN105408858A (zh) 2016-03-16
CN105408858B CN105408858B (zh) 2019-11-12

Family

ID=52432231

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380078462.9A Expired - Fee Related CN105408858B (zh) 2013-07-31 2013-07-31 用于计算系统的方法和系统

Country Status (4)

Country Link
US (1) US10360148B2 (zh)
EP (1) EP3028141B1 (zh)
CN (1) CN105408858B (zh)
WO (1) WO2015016865A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102468737B1 (ko) * 2017-12-19 2022-11-21 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11169818B2 (en) * 2019-04-25 2021-11-09 Dell Products L.P. Systems and methods for dynamically locating and accessing operating system (OS) file system data from a pre-boot environment
US11481277B2 (en) * 2019-07-30 2022-10-25 EMC IP Holding Company, LLC System and method for automated restoration of recovery device
WO2021154200A1 (en) * 2020-01-27 2021-08-05 Hewlett-Packard Development Company, L.P. Firmware corruption recovery

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
CN1495610A (zh) * 2002-09-13 2004-05-12 国际商业机器公司 用于固件更新的方法和装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230316B1 (en) 1998-04-17 2001-05-08 Symantec Corporation Patching rebased and realigned executable files
JP2003186668A (ja) 2001-12-14 2003-07-04 Mitsubishi Electric Corp 命令コード変換ユニットおよび命令コード変換方法
US7036007B2 (en) * 2002-09-09 2006-04-25 Intel Corporation Firmware architecture supporting safe updates and multiple processor types
US7024551B2 (en) * 2003-01-07 2006-04-04 Sun Microsystems, Inc. Method and apparatus for updating boot code using a system controller
KR100506203B1 (ko) 2003-09-17 2005-08-05 삼성전자주식회사 부팅 및 부트 코드 업데이트 방법 및 시스템
US20050273588A1 (en) 2004-06-08 2005-12-08 Ong Soo K Bootstrap method and apparatus with plural interchangeable boot code images
KR100746012B1 (ko) * 2005-11-07 2007-08-06 삼성전자주식회사 코드 이미지를 안전하게 갱신하고 부팅하는 방법 및 장치
WO2008075646A1 (ja) 2006-12-18 2008-06-26 International Business Machines Corporation 情報処理システムおよび該システムの起動/リカバリ方法
US8621187B2 (en) * 2008-02-11 2013-12-31 Nxp, B.V. Method of program obfuscation and processing device for executing obfuscated programs
CN102567042B (zh) 2010-12-14 2015-04-15 国际商业机器公司 利用引导块重定位来管理多个软件镜像的方法和系统
US8997085B2 (en) 2011-06-24 2015-03-31 International Business Machines Corporation Image delta-based upgrade of complex stack in software appliance
JP5840451B2 (ja) * 2011-10-18 2016-01-06 ルネサスエレクトロニクス株式会社 メモリ制御装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
CN1495610A (zh) * 2002-09-13 2004-05-12 国际商业机器公司 用于固件更新的方法和装置

Also Published As

Publication number Publication date
CN105408858B (zh) 2019-11-12
EP3028141A4 (en) 2017-05-10
US10360148B2 (en) 2019-07-23
WO2015016865A1 (en) 2015-02-05
US20160140038A1 (en) 2016-05-19
EP3028141A1 (en) 2016-06-08
EP3028141B1 (en) 2020-01-08

Similar Documents

Publication Publication Date Title
US20180232146A1 (en) Method and apparatus for memory management
US8296535B2 (en) Generating incremental program updates
CN1809813B (zh) 利用渴望压缩、故障保险提取和重新启动时压缩扫描来存储固件变量的方法
US10261709B2 (en) Memory data hole enabled management system
US9665496B2 (en) Non-volatile memory write mechanism
US20140304497A1 (en) Electronic device having function of booting operating system by bootloader, method of performing the same function, and storage medium
CN101145107B (zh) 保持早期硬件配置状态
US20060064576A1 (en) Boot systems and methods
CN106062708A (zh) 在具有地址空间布局随机化的系统中的二进制转化重用
US20090172252A1 (en) Memory device and method for performing a write-abort-safe firmware update
JP7482261B2 (ja) チップ起動制御方法、チップ、表示パネル及び電子機器
CN105408858A (zh) 根据第一代码生成第二代码
US10698696B2 (en) Chipset fuse programming system
US11449427B2 (en) Microprocessor-based system memory manager hardware accelerator
CN101484878B (zh) 为基于efi的固件中的预efi初始化模块使用全局变量的方法
JP2004021990A (ja) プロセッサを含むコンピュータのファームウェア・セレクタ
US11221766B2 (en) System and method for persistent memory rotation based on remaining write endurance
CN102473090B (zh) 可用于访问bios的多个接口文件
US6385716B1 (en) Method and apparatus for tracking coherence of dual floating point and MMX register files
CN112148377A (zh) EFI Shell环境下防止SSD异常掉电的方法和装置
TWI549056B (zh) 以函式庫作業系統達成之應用程式相容性
US11989435B2 (en) Re-partitioning of a flash memory device
US11068276B2 (en) Controlled customization of silicon initialization

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20191112

CF01 Termination of patent right due to non-payment of annual fee