CN103345412B - 打补丁的方法及装置 - Google Patents

打补丁的方法及装置 Download PDF

Info

Publication number
CN103345412B
CN103345412B CN201310289235.2A CN201310289235A CN103345412B CN 103345412 B CN103345412 B CN 103345412B CN 201310289235 A CN201310289235 A CN 201310289235A CN 103345412 B CN103345412 B CN 103345412B
Authority
CN
China
Prior art keywords
patch
file
guiding
patch file
retargetable
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.)
Active
Application number
CN201310289235.2A
Other languages
English (en)
Other versions
CN103345412A (zh
Inventor
刘崇山
晁晓峰
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310289235.2A priority Critical patent/CN103345412B/zh
Publication of CN103345412A publication Critical patent/CN103345412A/zh
Application granted granted Critical
Publication of CN103345412B publication Critical patent/CN103345412B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种打补丁的方法及装置。该方法包括:获取可重定向的引导补丁文件,该可重定向的引导补丁文件用于修复目标机系统启动中的问题;在该目标机系统重启时,加载该目标机系统的系统文件,加载该可重定向的引导补丁文件;在该系统文件中搜索符号表;根据该符号表由该可重定向的引导补丁文件生成可执行引导补丁文件;激活该可执行引导补丁文件;从该系统文件的入口启动该目标机系统,以执行该系统文件和该可执行引导补丁文件。本发明实施例的打补丁的方法及装置,可以无需重新编译系统文件而修复系统启动中的问题,能够减少维护工作量,提高维护效率。

Description

打补丁的方法及装置
技术领域
本发明涉及信息技术领域,并且更具体地,涉及打补丁的方法及装置。
背景技术
一个计算机系统生命周期中总是存在软硬件相关问题需要解决,针对一些可用度要求高的计算机系统,因为其业务存在长期运行和不可中断的特点,所以一般采用软件补丁技术,在不中断设备运行同时又能进行软件升级和维护,这一般称为热补丁技术。
然而这种热补丁技术也存在限制:只能修改运行过程中的错误,对于一些系统启动过程中实现的一些配置和初始化引入的问题无法修复,比如:系统空间分配不合理,线程和任务入口存在问题等。
对热补丁技术无法修复的问题,在大多数嵌入式实时系统,其目标代码为联合编译,只能重新编译并加载系统目标文件,即采用所谓冷补丁方式,然而这种方式在系统维护过程会导致主机目标文件改动工作量大,且分支版本多,维护工作量比较大。
发明内容
本发明实施例提供了一种打补丁的方法及装置,能够提高系统维护的效率。
第一方面,提供了一种打补丁的方法,包括:获取可重定向的引导补丁文件,该可重定向的引导补丁文件用于修复目标机系统启动中的问题;在该目标机系统重启时,加载该目标机系统的系统文件,加载该可重定向的引导补丁文件;在该系统文件中搜索符号表;根据该符号表由该可重定向的引导补丁文件生成可执行引导补丁文件;激活该可执行引导补丁文件;从该系统文件的入口启动该目标机系统,以执行该系统文件和该可执行引导补丁文件。
在第一种可能的实现方式中,获取可重定向的引导补丁文件,包括:从个人计算机(Personal Computer,PC)机获取该PC机制作的该可重定向的引导补丁文件。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,加载该可重定向的引导补丁文件,包括:在确定该可重定向的引导补丁文件校验正确时,加载该可重定向的引导补丁文件。
结合第一方面或第一方面的第一或二种可能的实现方式,在第三种可能的实现方式中,在该系统文件中搜索符号表,包括:根据该符号表的起始地址和大小搜索该符号表;或者,根据该符号表的规律搜索该符号表。
结合第一方面或第一方面的第一至三种可能的实现方式中的任一种可能的实现方式,在第四种可能的实现方式中,根据该符号表由该可重定向的引导补丁文件生成可执行引导补丁文件,包括:从该可重定向的引导补丁文件中分析出代码段,数据段和重定位段,根据该符号表生成该可执行引导补丁文件。
结合第一方面或第一方面的第一至四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,该方法还包括:获取热补丁文件;若该热补丁文件中包含补丁冲突指示信息,则根据该补丁冲突指示信息确定是否激活该热补丁文件。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,该补丁冲突指示信息包括引导补丁版本号和激活标识;根据该补丁冲突指示信息确定是否激活该热补丁文件,包括:若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为不激活,则不激活该热补丁文件;若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为激活,则激活该热补丁文件;若该可重定向的引导补丁文件的版本号与该引导补丁版本号不匹配,则激活该热补丁文件。
结合第一方面的第五或六种可能的实现方式,在第七种可能的实现方式中,获取热补丁文件,包括:从PC机获取该热补丁文件,其中,该热补丁文件由该PC机根据该热补丁文件与各版本的引导补丁的冲突情况添加或不添加该补丁冲突指示信息。
第二方面,提供了一种打补丁的装置,包括:获取模块,用于获取可重定向的引导补丁文件,该可重定向的引导补丁文件用于修复目标机系统启动中的问题;加载模块,用于在该目标机系统重启时加载该目标机系统的系统文件,加载该可重定向的引导补丁文件;搜索模块,用于在该系统文件中搜索符号表;处理模块,用于根据该符号表由该可重定向的引导补丁文件生成可执行引导补丁文件;激活模块,用于激活该可执行引导补丁文件;执行模块,用于从该系统文件的入口启动该目标机系统,以执行该系统文件和该可执行引导补丁文件。
在第一种可能的实现方式中,该获取模块具体用于从个人计算机PC机获取该PC机制作的该可重定向的引导补丁文件。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,该加载模块具体用于,在确定该可重定向的引导补丁文件校验正确时,加载该可重定向的引导补丁文件。
结合第二方面或第二方面的第一或二种可能的实现方式,在第三种可能的实现方式中,该搜索模块具体用于,根据该符号表的起始地址和大小搜索该符号表,或者,根据该符号表的规律搜索该符号表。
结合第二方面或第二方面的第一至三种可能的实现方式中的任一种可能的实现方式,在第四种可能的实现方式中,该处理模块具体用于,从该可重定向的引导补丁文件中分析出代码段,数据段和重定位段,根据该符号表生成该可执行引导补丁文件。
结合第二方面或第二方面的第一至四种可能的实现方式中的任一种可能的实现方式,在第五种可能的实现方式中,该获取模块还用于获取热补丁文件;该激活模块还用于,若该热补丁文件中包含补丁冲突指示信息,则根据该补丁冲突指示信息确定是否激活该热补丁文件。
结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,该补丁冲突指示信息包括引导补丁版本号和激活标识;该激活模块具体用于,若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为不激活,则不激活该热补丁文件,若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为激活,则激活该热补丁文件,若该可重定向的引导补丁文件的版本号与该引导补丁版本号不匹配,则激活该热补丁文件。
结合第二方面的第五或六种可能的实现方式,在第七种可能的实现方式中,该获取模块具体用于,从PC机获取该热补丁文件,其中,该热补丁文件由该PC机根据该热补丁文件与各版本的引导补丁的冲突情况添加或不添加该补丁冲突指示信息。
基于上述技术方案,本发明实施例的打补丁的方法及装置,通过在引导过程中由可重定向的引导补丁文件生成可执行引导补丁文件并激活可执行引导补丁文件,可以无需重新编译系统文件而修复系统启动中的问题,能够减少维护工作量,提高维护效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的打补丁的方法的示意性流程图。
图2是根据本发明实施例的制作可重定向的引导补丁文件的方法的示意性流程图。
图3是根据本发明另一实施例的打补丁的方法的示意性流程图。
图4是根据本发明实施例的热补丁格式的示意图。
图5是根据本发明实施例的热补丁激活的方法的示意性流程图。
图6是根据本发明又一实施例的打补丁的方法的示意图。
图7是一种计算机系统的补丁版本的示意图。
图8是另一计算机系统的补丁版本的示意图。
图9是根据本发明实施例的系统的补丁版本的示意图。
图10是根据本发明实施例的打补丁的装置的示意性框图。
图11是根据本发明另一实施例的打补丁的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1示出了根据本发明实施例的打补丁的方法100的示意性流程图。如图1所示,该方法100包括:
S110,获取可重定向的引导补丁文件,该可重定向的引导补丁文件用于修复目标机系统启动中的问题;
S120,在该目标机系统重启时,加载该目标机系统的系统文件,加载该可重定向的引导补丁文件;
S130,在该系统文件中搜索符号表;
S140,根据该符号表由该可重定向的引导补丁文件生成可执行引导补丁文件;
S150,激活该可执行引导补丁文件;
S160,从该系统文件的入口启动该目标机系统,以执行该系统文件和该可执行引导补丁文件。
在本发明实施例中,该方法100的执行主体为打补丁的装置。该打补丁的装置可以是目标机,也可以是目标机中的处理器,本发明实施例对此并不限定。但为描述方便,下述实施例将以目标机为例进行说明。
本发明实施例采用引导补丁修复目标机系统启动中的问题,由可重定向的引导补丁文件在引导过程中生成可执行引导补丁文件。可重定向的引导补丁文件和可执行引导补丁文件为引导补丁在不同阶段的表现形式。可重定向的引导补丁文件制作完成后存储到目标机。目标机获取到可重定向的引导补丁文件后,重启目标机系统,加载目标机系统的系统文件,同时加载可重定向的引导补丁文件。可选地,也可以是目标机获取到可重定向的引导补丁文件后,暂时不重启目标机系统,而是等到下次目标机系统重启(例如,故障恢复或手动重启动)时,加载目标机系统的系统文件,同时加载可重定向的引导补丁文件。为了能够执行引导补丁修复问题,目标机需要将可重定向的引导补丁文件生成可执行引导补丁文件。目标机在系统文件中搜索符号表,根据该符号表由可重定向的引导补丁文件生成可执行引导补丁文件,并激活可执行引导补丁文件,然后从系统文件入口进入目标机系统启动阶段,启动目标机系统。这样,通过在引导过程中由可重定向的引导补丁文件生成可执行引导补丁文件并激活,可以修复系统启动中的问题,不需要重新编译系统文件,不会增加分支版本,而且可重定向的引导补丁文件可以支持相同硬件环境不同版本的目标计算机系统。
因此,本发明实施例的打补丁的方法,通过在引导过程中由可重定向的引导补丁文件生成可执行引导补丁文件并激活可执行引导补丁文件,可以无需重新编译系统文件而修复系统启动中的问题,能够减少维护工作量,提高维护效率。
在S110中,目标机获取可重定向的引导补丁文件。
可重定向的引导补丁文件制作完成后存储到目标机。目标机可以从外部获取可重定向的引导补丁文件,例如,目标机可从PC机或者其他用户设备获取可重定向的引导补丁文件。本发明的实施例并不限于此,例如,还可以通过移动存储介质或者通过网络获取可重定向的引导补丁文件。
可选地,S110包括:
从PC机获取该PC机制作的该可重定向的引导补丁文件。
具体而言,引导补丁源代码在PC机上编译为可重定向的引导补丁文件。引导补丁制作编译后通过批处理增加加载需要的补丁头文件即可。
例如,制作可重定向的引导补丁文件的具体流程如图2所示:
201,引导补丁源代码及编译环境配置;
202,将引导补丁源代码编译为可重定向目标文件;
203,文件格式化,添加文件头,添加文件校验码,并增加运行时激活标志;
204,生成可重定向的引导补丁文件。
在本发明实施例中,引导补丁文件版本号和目标机系统版本号独立,也就是说,可重定向的引导补丁文件的版本号与目标机系统版本号不需一致。在将可重定向的引导补丁文件制作完成后,PC机将可重定向的引导补丁文件传输给目标机。例如,通过网卡传输给目标机。目标机将该可重定向的引导补丁文件存储到目标机的存储单元。
应理解,目标机获取可重定向的引导补丁文件的方式还可以采用其他方式,比如,可重定向的引导补丁文件制作完成后通过存储介质中转,目标机从存储介质中获取该可重定向的引导补丁文件。
在S120中,目标机重启目标机系统,加载该目标机系统的系统文件,加载该可重定向的引导补丁文件。
可重定向的引导补丁文件存储到目标机后,目标机重启,加载目标机系统的系统文件。目标文件为压缩格式时,需要先解压再加载。因为存在可重定向的引导补丁文件,目标机同时加载该可重定向的引导补丁文件。
可选地,加载该可重定向的引导补丁文件,包括:
在确定该可重定向的引导补丁文件校验正确时,加载该可重定向的引导补丁文件。
也就是说,在存在可重定向的引导补丁文件时,目标机首先校验该可重定向的引导补丁文件,在该可重定向的引导补丁文件校验正确时,加载该可重定向的引导补丁文件。
在S130中,目标机在系统文件中搜索符号表。
可重定向的引导补丁文件需要制作为可执行引导补丁文件才能运行。制作过程需要系统文件的符号表,因此,在加载可重定向的引导补丁文件后,目标机首先在系统文件中搜索符号表以便于制作可执行引导补丁文件。
可选地,S130包括:
根据该符号表的起始地址和大小搜索该符号表。
如果在编译系统文件时指定了符号表的起始地址和大小,则可以根据符号表的起始地址和大小直接获取系统文件的符号表的所有内容。
或者,可选地,S130包括:
根据该符号表的规律搜索该符号表。
如果在编译系统文件时没有指定符号表的起始地址和大小,则可以根据符号表的规律搜索。
具体而言,在编译规则固定情况下,符号表symTbl.o文件是链接的最后一个文件,按GNU(Gnu's Not Unix)编译器集合(GNU Compiler Collection,GCC)的编译规则,symTbl.c中的全局变量在数据段的最后,且非常有规律,如以下面符号表的两段为例:
{{NULL},"ExampleFunc",(char*)ExampleFunc0,N_EXT|N_TEXT},
{{NULL},"ExampleName",(char*)&ExampleName,0,N_EXT|N_DATA}。
每一段前面为0(4个字节);第二项为字符串地址(4个字节);第三项为代码段地址(4个字节);第四项为0(2个字节);第五项是符号的特性(是否外部符号,是全局数据还是代码,2个字节)。搜索可以从最后非0的位置开始按照间隔四项搜索,如果一定数量情况下全部匹配上述特征则认为当前即为符号表,然后根据当前搜索条件找到符号表的起始和结束位置。
在S140中,目标机根据符号表由可重定向的引导补丁文件生成可执行引导补丁文件。
在查找到系统文件的符号表后,目标机根据该符号表由可重定向的引导补丁文件生成可执行引导补丁文件。
可选地,S140包括:
从该可重定向的引导补丁文件中分析出代码段,数据段和重定位段,根据该符号表生成该可执行引导补丁文件。
可选地,目标机在生成该可执行引导补丁文件时,同时保存新增的注册接口和全局符号表文件。
在S150中,目标机激活该可执行引导补丁文件。
生成可执行引导补丁文件后,目标机激活该可执行引导补丁文件。目标机根据新增的符号表对应地址替换系统文件中的函数或全局变量,激活引导补丁。
在S160中,目标机从系统文件的入口启动目标机系统。
激活引导补丁后,目标机从系统文件入口进入目标机系统启动阶段,启动目标机系统。
由于在引导过程中激活了引导补丁,这样在接下来的启动过程中,通过运行引导补丁可以修复原来在启动过程中存在的问题。
因此,本发明实施例的打补丁的方法,通过在引导过程中由可重定向的引导补丁文件生成可执行引导补丁文件并激活可执行引导补丁文件,可以无需重新编译系统文件而修复系统启动中的问题,能够减少维护工作量,提高维护效率。
在本发明实施例中,可选地,如图3所示,该方法100还包括:
S170,获取热补丁文件;
S180,若该热补丁文件中包含补丁冲突指示信息,则根据该补丁冲突指示信息确定是否激活该热补丁文件。
可选地,若该热补丁文件中不包含补丁冲突指示信息,则激活该热补丁文件。
目标机进入系统启动阶段后,完成硬件初始化,内核初始化及软件初始化过程,然后,启动补丁管理过程,在系统有相应地热补丁时,管理并执行相应地热补丁。
因为引导补丁和热补丁都实现了对主机目标程序和数据的替换,引导补丁替换激活在前,热补丁替换激活在后,则如果引导补丁和热补丁有相同函数接口需要替换的情况下,存在热补丁会将引导补丁替换激活的函数又重新替换回去的可能。也就是说,热补丁可能会与引导补丁产生冲突,因此需要对热补丁做相应处理。
另一方面,引导补丁版本不同而热补丁版本相同的情况下,对热补丁需要针对不同的引导补丁做不同处理。比如引导补丁1版本中有一个函数冲突,引导补丁2中有另外一个函数冲突,需要能够区分并进行相应处理。
因此,在制作可重定向的引导补丁文件时,同时要对目标机系统的热补丁做相应处理。由于热补丁可能会与引导补丁产生冲突,因此需要根据热补丁与引导补丁的冲突情况在热补丁文件中添加或不添加补丁冲突指示信息。热补丁文件可以与可重定向的引导补丁文件一样在系统重启前传输给目标机,热补丁文件也可以在系统重启后,启动补丁管理时传输给目标机。也就是说,目标机获取热补丁文件可以在系统重启前,也可以在系统重启后。
可选地,S170包括:
从PC机获取该热补丁文件,其中,该热补丁文件由该PC机根据该热补丁文件与各版本的引导补丁的冲突情况添加或不添加该补丁冲突指示信息。
也就是说,PC机根据热补丁文件与各版本的引导补丁的冲突情况在热补丁文件中添加或不添加该补丁冲突指示信息。若热补丁与所有版本的引导补丁都不冲突,则不需添加补丁冲突指示信息;若热补丁与某一版本的引导补丁冲突,则在热补丁文件中添加补丁冲突指示信息。补丁冲突指示信息包括引导补丁的版本号,表示热补丁与该版本的引导补丁冲突。在冲突的情况下,还需要指示是否激活热补丁,即该补丁冲突指示信息还要包括激活标识,用于指示是否激活热补丁。添加补丁冲突指示信息的热补丁格式如图4所示。补丁冲突指示信息的字段可以使用保留字段,该保留字段承载引导补丁的版本号和激活标识。可选地,在不需要添加补丁冲突指示信息的情况下,该保留字段可以为默认标志。可选地,补丁冲突指示信息还可以利用一些以前不改变的标志来实现。
目标机在补丁管理过程中,根据热补丁文件中是否包含补丁冲突指示信息,处理热补丁与引导补丁的冲突情况。若该热补丁文件中不包含补丁冲突指示信息,则激活该热补丁文件;若该热补丁文件中包含补丁冲突指示信息,则根据该补丁冲突指示信息确定是否激活该热补丁文件。
在补丁冲突指示信息包括引导补丁版本号和激活标识时,根据该补丁冲突指示信息确定是否激活该热补丁文件,包括:
若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为不激活,则不激活该热补丁文件;
若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为激活,则激活该热补丁文件;
若该可重定向的引导补丁文件的版本号与该引导补丁版本号不匹配,则激活该热补丁文件。
具体而言,在补丁冲突指示信息包括引导补丁版本号和激活标识时,目标机根据引导补丁版本号确定热补丁是否与当前的引导补丁冲突,若可重定向的引导补丁文件的版本号与补丁冲突指示信息包括的引导补丁版本号不匹配,表明热补丁与当前的引导补丁不冲突,因此激活该热补丁文件;若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配,表明热补丁与当前的引导补丁冲突,这时需要根据补丁冲突指示信息包括的激活标识确定是否激活该热补丁文件,若该激活标识为不激活,则不激活该热补丁文件,若该激活标识为激活,则激活该热补丁文件。
例如,热补丁激活流程如图5所示。
501,读取当前引导补丁接口列表。
对每个热补丁进行下面的处理流程。
502,确定热补丁接口是否在该列表中,若不在该列表中则执行506;若在该列表中则执行503。
503,确定热补丁中是否包含补丁冲突指示信息,若不包含补丁冲突指示信息(如补丁冲突指示信息字段为默认标志),则执行506;若包含补丁冲突指示信息则执行504。
504,确定补丁冲突指示信息中的引导补丁版本号与当前引导补丁版本号(即可重定向的引导补丁文件的版本号)是否匹配,若不匹配则执行506;若匹配则执行505。
505,判断激活标识,若激活标识为不激活则执行507;若激活标识为激活则执行506。
506,激活热补丁。
507,不激活热补丁,继续对下一个热补丁进行处理。
下面将结合图6详细描述本发明实施例。应注意,这只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
如图6所示,目标机系统引导程序中加入了引导补丁工具。引导补丁工具在系统启动时能搜索到目标机系统文件的符号表,并读取加载的可重定向的引导补丁文件在跳转到系统文件入口之前制作可执行的引导补丁,同时还可以在系统跳转之前替换补丁函数激活引导补丁。通过补丁管理模块实现对引导补丁和热补丁冲突管理,实现引导补丁不影响现有热补丁的制作和管理,同时实现同一热补丁版本可以支持多个不同引导补丁版本。
PC机在601和602中分别制作引导补丁文件和热补丁文件,该引导补丁文件为可重定向的引导补丁文件,该热补丁文件分为冲突的补丁文件和非冲突的补丁文件,冲突的补丁文件包含补丁冲突指示信息。
在603中,PC及将引导补丁文件和热补丁文件传输给目标机。目标机将引导补丁文件和热补丁文件存储到不同的存储单元。
在目标机重启系统时,目标机中的引导补丁工具在604中读取引导补丁文件,在605中搜索系统文件的符号表,在606中根据符号表由引导补丁文件生成并激活可执行引导补丁。
在系统进入补丁管理过程时,目标机中的补丁管理模块在607中对引导补丁和热补丁进行冲突管理,根据补丁冲突指示信息确定是否激活热补丁。对于需要激活的热补丁,在608中进行激活。
本发明实施例在引导过程中,在跳转系统之前对目标机的系统文件制作并激活补丁,可以修复包括系统入口在内的所有系统启动过程中的问题。实际在嵌入式VxWorks系统中验证补丁制作和补丁激活功能时间都在1秒以内完成,因此系统引导时间的延长可以忽略不计。
在一个由软硬件集成的计算机系统生命周期中,在某一个版本的生命周期中可能存在多个问题,如果这些问题均可以采用热补丁解决,R1版本不用重新编译,直接可以打热补丁解决,如图7所示。
然而如果系统启动中引入问题则热补丁解决不了,则必须重新编译R1版本并出现一个R1S1分支版本,则在此情况下就必须将R1的多个热补丁均收编,同时要多维持一个分支版本R1S1,如图8所示。
如果系统启动中支持引导补丁,则R1版本不用重新编译,只需要系统重启让引导补丁生效且补丁管理模块同时管理两种补丁即可,如图9所示。
通过对比图8与图9,即可清楚引导补丁减少了实际应用系统的版本分支。
因为本发明实施例中的引导补丁采用的是可重定向的补丁,在引导程序启动过程中进行补丁制作和激活,因而相同的补丁可以加载到相同硬件环境的不同版本中,从而支持相同硬件环境不同版本的目标计算机系统。
另一方面,因为本发明实施例采用和主机版本无关的可重定向的引导补丁文件,并实现了对冲突的热补丁区分引导补丁版本的管理,从而相同版本(包括热补丁版本)的目标计算机系统可以采用不同的引导补丁版本解决不同的问题。
因此,本发明实施例的打补丁的方法,通过在引导过程中由可重定向的引导补丁文件生成可执行引导补丁文件并激活可执行引导补丁文件,可以无需重新编译系统文件而修复系统启动中的问题,不会增加分支版本,并且,同一个引导补丁支持相同硬件环境的不同版本的目标计算机系统,相同版本的目标计算机系统可以采用不同的引导补丁,从而能够减少维护工作量,提高维护效率。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上文中结合图1至图9,详细描述了根据本发明实施例的打补丁的方法,下面将结合图10和图11,描述根据本发明实施例的打补丁的装置。
图10示出了根据本发明实施例的打补丁的装置1000的示意性框图。该装置1000可以是目标机,也可以是目标机中的处理器。如图10所示,该装置1000包括:
获取模块1010,用于获取可重定向的引导补丁文件,该可重定向的引导补丁文件用于修复目标机系统启动中的问题;
加载模块1020,用于在该目标机系统重启时,加载该目标机系统的系统文件,加载该可重定向的引导补丁文件;
搜索模块1030,用于在该系统文件中搜索符号表;
处理模块1040,用于根据该符号表由该可重定向的引导补丁文件生成可执行引导补丁文件;
激活模块1050,用于激活该可执行引导补丁文件;
执行模块1060,用于从该系统文件的入口启动该目标机系统,以执行该系统文件和该可执行引导补丁文件。
本发明实施例的打补丁的装置,通过在引导过程中由可重定向的引导补丁文件生成可执行引导补丁文件并激活可执行引导补丁文件,可以无需重新编译系统文件而修复系统启动中的问题,能够减少维护工作量,提高维护效率。
在本发明实施例中,可选地,该获取模块1010具体用于从个人计算机PC机获取该PC机制作的该可重定向的引导补丁文件。
在本发明实施例中,可选地,该加载模块1020具体用于,在确定该可重定向的引导补丁文件校验正确时,加载该可重定向的引导补丁文件。
在本发明实施例中,可选地,该搜索模块1030具体用于,根据该符号表的起始地址和大小搜索该符号表,或者,根据该符号表的规律搜索该符号表。
在本发明实施例中,可选地,该处理模块1040具体用于,从该可重定向的引导补丁文件中分析出代码段,数据段和重定位段,根据该符号表生成该可执行引导补丁文件。
在本发明实施例中,可选地,该获取模块1010还用于获取热补丁文件;
该激活模块1050还用于,若该热补丁文件中包含补丁冲突指示信息,则根据该补丁冲突指示信息确定是否激活该热补丁文件。
可选地,该激活模块1050还用于若该热补丁文件中不包含补丁冲突指示信息,则激活该热补丁文件。
在本发明实施例中,可选地,该补丁冲突指示信息包括引导补丁版本号和激活标识;
该激活模块1050具体用于,若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为不激活,则不激活该热补丁文件,若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为激活,则激活该热补丁文件,若该可重定向的引导补丁文件的版本号与该引导补丁版本号不匹配,则激活该热补丁文件。
在本发明实施例中,可选地,该获取模块1010具体用于,从PC机获取该热补丁文件,其中,该热补丁文件由该PC机根据该热补丁文件与各版本的引导补丁的冲突情况添加或不添加该补丁冲突指示信息。
根据本发明实施例的打补丁的装置1000可对应于根据本发明实施例的打补丁的方法的执行主体,并且装置1000中的各个模块的上述和其它操作和/或功能分别为了实现图1至图9中的各个方法的相应流程,为了简洁,在此不再赘述。
本发明实施例的打补丁的装置,通过在引导过程中由可重定向的引导补丁文件生成可执行引导补丁文件并激活可执行引导补丁文件,可以无需重新编译系统文件而修复系统启动中的问题,不会增加分支版本,并且,同一个引导补丁支持相同硬件环境的不同版本的目标计算机系统,相同版本的目标计算机系统可以采用不同的引导补丁,从而能够减少维护工作量,提高维护效率。
图11示出了本发明另一个实施例提供的打补丁的装置的结构,包括至少一个处理器1102(例如CPU),至少一个网络接口1105或者其他通信接口,存储器1106,和至少一个通信总线1103,用于实现这些装置之间的连接通信。处理器1102用于执行存储器1106中存储的可执行模块,例如计算机程序。存储器1106可能包含高速随机存取存储器(RAM:Random AccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口1105(可以是有线或者无线)实现与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
在一些实施方式中,存储器1106存储了程序11061,程序11061可以被处理器1102执行,这个程序包括:
获取可重定向的引导补丁文件,该可重定向的引导补丁文件用于修复目标机系统启动中的问题;在该目标机系统时,加载该目标机系统的系统文件,加载该可重定向的引导补丁文件;在该系统文件中搜索符号表;根据该符号表由该可重定向的引导补丁文件生成可执行引导补丁文件;激活该可执行引导补丁文件;从该系统文件的入口启动该目标机系统,以执行该系统文件和该可执行引导补丁文件。
可选地,获取可重定向的引导补丁文件,包括:从个人计算机PC机获取该PC机制作的该可重定向的引导补丁文件。
可选地,加载该可重定向的引导补丁文件,包括:在确定该可重定向的引导补丁文件校验正确时,加载该可重定向的引导补丁文件。
可选地,在该系统文件中搜索符号表,包括:根据该符号表的起始地址和大小搜索该符号表;或者,根据该符号表的规律搜索该符号表。
可选地,根据该符号表由该可重定向的引导补丁文件生成可执行引导补丁文件,包括:从该可重定向的引导补丁文件中分析出代码段,数据段和重定位段,根据该符号表生成该可执行引导补丁文件。
可选地,还包括:获取热补丁文件;若该热补丁文件中包含补丁冲突指示信息,则根据该补丁冲突指示信息确定是否激活该热补丁文件。
可选地,还包括:若该热补丁文件中不包含补丁冲突指示信息,则激活该热补丁文件。
可选地,该补丁冲突指示信息包括引导补丁版本号和激活标识;根据该补丁冲突指示信息确定是否激活该热补丁文件,包括:若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为不激活,则不激活该热补丁文件;若该可重定向的引导补丁文件的版本号与该引导补丁版本号匹配且该激活标识为激活,则激活该热补丁文件;若该可重定向的引导补丁文件的版本号与该引导补丁版本号不匹配,则激活该热补丁文件。
可选地,获取热补丁文件,包括:从PC机获取该热补丁文件,其中,该热补丁文件由该PC机根据该热补丁文件与各版本的引导补丁的冲突情况添加或不添加该补丁冲突指示信息。
从本发明实施例提供的以上技术方案可以看出,本发明实施例通过在引导过程中由可重定向的引导补丁文件生成可执行引导补丁文件并激活可执行引导补丁文件,可以无需重新编译系统文件而修复系统启动中的问题,能够减少维护工作量,提高维护效率。
应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (16)

1.一种打补丁的方法,其特征在于,包括:
获取可重定向的引导补丁文件,所述可重定向的引导补丁文件用于修复目标机系统启动中的问题;
在所述目标机系统重启时,加载所述目标机系统的系统文件,加载所述可重定向的引导补丁文件;
在所述系统文件中搜索符号表;
根据所述符号表由所述可重定向的引导补丁文件生成可执行引导补丁文件;
激活所述可执行引导补丁文件;
从所述系统文件的入口启动所述目标机系统,以执行所述系统文件和所述可执行引导补丁文件。
2.根据权利要求1所述的方法,其特征在于,所述获取可重定向的引导补丁文件,包括:
从个人计算机PC机获取所述PC机制作的所述可重定向的引导补丁文件。
3.根据权利要求1或2所述的方法,其特征在于,所述加载所述可重定向的引导补丁文件,包括:
在确定所述可重定向的引导补丁文件校验正确时,加载所述可重定向的引导补丁文件。
4.根据权利要求1或2所述的方法,其特征在于,所述在所述系统文件中搜索符号表,包括:
根据所述符号表的起始地址和大小搜索所述符号表;或者,
根据所述符号表的规律搜索所述符号表。
5.根据权利要求1或2所述的方法,其特征在于,所述根据所述符号表由所述可重定向的引导补丁文件生成可执行引导补丁文件,包括:
从所述可重定向的引导补丁文件中分析出代码段,数据段和重定位段,根据所述符号表生成所述可执行引导补丁文件。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
获取热补丁文件;
若所述热补丁文件中包含补丁冲突指示信息,则根据所述补丁冲突指示信息确定是否激活所述热补丁文件。
7.根据权利要求6所述的方法,其特征在于,所述补丁冲突指示信息包括引导补丁版本号和激活标识;
所述根据所述补丁冲突指示信息确定是否激活所述热补丁文件,包括:
若所述可重定向的引导补丁文件的版本号与所述引导补丁版本号匹配且所述激活标识为不激活,则不激活所述热补丁文件;
若所述可重定向的引导补丁文件的版本号与所述引导补丁版本号匹配且所述激活标识为激活,则激活所述热补丁文件;
若所述可重定向的引导补丁文件的版本号与所述引导补丁版本号不匹配,则激活所述热补丁文件。
8.根据权利要求6所述的方法,其特征在于,所述获取热补丁文件,包括:
从PC机获取所述热补丁文件,其中,所述热补丁文件由所述PC机根据所述热补丁文件与各版本的引导补丁的冲突情况添加或不添加所述补丁冲突指示信息。
9.一种打补丁的装置,其特征在于,包括:
获取模块,用于获取可重定向的引导补丁文件,所述可重定向的引导补丁文件用于修复目标机系统启动中的问题;
加载模块,用于在所述目标机系统重启时,加载所述目标机系统的系统文件,加载所述可重定向的引导补丁文件;
搜索模块,用于在所述系统文件中搜索符号表;
处理模块,用于根据所述符号表由所述可重定向的引导补丁文件生成可执行引导补丁文件;
激活模块,用于激活所述可执行引导补丁文件;
执行模块,用于从所述系统文件的入口启动所述目标机系统,以执行所述系统文件和所述可执行引导补丁文件。
10.根据权利要求9所述的装置,其特征在于,所述获取模块具体用于从个人计算机PC机获取所述PC机制作的所述可重定向的引导补丁文件。
11.根据权利要求9或10所述的装置,其特征在于,所述加载模块具体用于,在确定所述可重定向的引导补丁文件校验正确时,加载所述可重定向的引导补丁文件。
12.根据权利要求9或10所述的装置,其特征在于,所述搜索模块具体用于,根据所述符号表的起始地址和大小搜索所述符号表,或者,根据所述符号表的规律搜索所述符号表。
13.根据权利要求9或10所述的装置,其特征在于,所述处理模块具体用于,从所述可重定向的引导补丁文件中分析出代码段,数据段和重定位段,根据所述符号表生成所述可执行引导补丁文件。
14.根据权利要求9或10所述的装置,其特征在于,所述获取模块还用于获取热补丁文件;
所述激活模块还用于,若所述热补丁文件中包含补丁冲突指示信息,则根据所述补丁冲突指示信息确定是否激活所述热补丁文件。
15.根据权利要求14所述的装置,其特征在于,所述补丁冲突指示信息包括引导补丁版本号和激活标识;
所述激活模块具体用于,若所述可重定向的引导补丁文件的版本号与所述引导补丁版本号匹配且所述激活标识为不激活,则不激活所述热补丁文件,若所述可重定向的引导补丁文件的版本号与所述引导补丁版本号匹配且所述激活标识为激活,则激活所述热补丁文件,若所述可重定向的引导补丁文件的版本号与所述引导补丁版本号不匹配,则激活所述热补丁文件。
16.根据权利要求14所述的装置,其特征在于,所述获取模块具体用于,从PC机获取所述热补丁文件,其中,所述热补丁文件由所述PC机根据所述热补丁文件与各版本的引导补丁的冲突情况添加或不添加所述补丁冲突指示信息。
CN201310289235.2A 2013-07-10 2013-07-10 打补丁的方法及装置 Active CN103345412B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310289235.2A CN103345412B (zh) 2013-07-10 2013-07-10 打补丁的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310289235.2A CN103345412B (zh) 2013-07-10 2013-07-10 打补丁的方法及装置

Publications (2)

Publication Number Publication Date
CN103345412A CN103345412A (zh) 2013-10-09
CN103345412B true CN103345412B (zh) 2016-08-24

Family

ID=49280210

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310289235.2A Active CN103345412B (zh) 2013-07-10 2013-07-10 打补丁的方法及装置

Country Status (1)

Country Link
CN (1) CN103345412B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461625A (zh) * 2014-12-04 2015-03-25 上海斐讯数据通信技术有限公司 一种热补丁实现方法和系统
CN105740001A (zh) * 2014-12-10 2016-07-06 中兴通讯股份有限公司 一种进程初始化阶段热补丁升级的方法、装置及终端设备
CN105159738A (zh) * 2015-08-20 2015-12-16 上海斐讯数据通信技术有限公司 一种热补丁实现方法及系统
CN105120322B (zh) * 2015-08-31 2018-07-24 深圳市茁壮网络股份有限公司 一种机顶盒开机方法及装置
CN106874022B (zh) * 2015-12-11 2021-06-25 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN105868639A (zh) * 2016-03-30 2016-08-17 百度在线网络技术(北京)有限公司 内核漏洞修复方法和装置
CN108073411A (zh) * 2017-12-11 2018-05-25 北京奇虎科技有限公司 一种补丁的内核加载方法及装置
CN110297666B (zh) * 2019-06-21 2022-06-17 百度在线网络技术(北京)有限公司 热修复方法、装置、系统及存储介质
CN110417874B (zh) * 2019-07-08 2022-02-25 新华三信息安全技术有限公司 一种获取补丁数据的方法及装置
CN114443109B (zh) * 2021-07-19 2023-08-22 荣耀终端有限公司 补丁修复方法、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1535418A (zh) * 2001-07-26 2004-10-06 用于管理无线通信设备系统软件现场下载的系统和方法
CN101154187A (zh) * 2006-09-29 2008-04-02 英特尔公司 用于为程序打补丁的方法、产品、服务处理器和系统
CN102722387A (zh) * 2012-05-29 2012-10-10 华为技术有限公司 动态打补丁的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8839225B2 (en) * 2008-01-23 2014-09-16 International Business Machines Corporation Generating and applying patches to a computer program code concurrently with its execution

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1535418A (zh) * 2001-07-26 2004-10-06 用于管理无线通信设备系统软件现场下载的系统和方法
CN101154187A (zh) * 2006-09-29 2008-04-02 英特尔公司 用于为程序打补丁的方法、产品、服务处理器和系统
CN102722387A (zh) * 2012-05-29 2012-10-10 华为技术有限公司 动态打补丁的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
嵌入式LINUX操作系统内核热补丁研究与实现;孙胜方;《中国优秀硕士论文全文数据库》;20110415;正文第三-第四章 *

Also Published As

Publication number Publication date
CN103345412A (zh) 2013-10-09

Similar Documents

Publication Publication Date Title
CN103345412B (zh) 打补丁的方法及装置
CN104239082B (zh) 嵌入式系统的热补丁实现方法
Higo et al. Code clone detection on specialized PDGs with heuristics
US9015686B2 (en) Redundant run-time type information removal
CN103744709B (zh) 补丁加载方法及装置
CN105630557B (zh) 热补丁方法和装置
CN105446723A (zh) 用于标识源代码版本之间的语义区别的方法和装置
CN105335137A (zh) 用于处理源文件的方法和装置
CN103473067A (zh) 嵌入式Linux分区与数据还原方法、系统及系统开发方法
CN104412229A (zh) 自适应可移植库
CN103164334A (zh) 检测web应用自动测试用例中的断裂点的系统和方法
CN110096271A (zh) 组件可视化方法、基于组件可视化的页面处理方法及装置
CN107632828A (zh) 多dts文件支持方法、编译装置及嵌入式设备
CN105159738A (zh) 一种热补丁实现方法及系统
US11231948B2 (en) Applying security mitigation measures for stack corruption exploitation in intermediate code files
CN103473059B (zh) 一种支持多种体系架构的通用操作系统
Vasilakis et al. Pash: Light-touch data-parallel shell processing
Lawall et al. Fast and precise retrieval of forward and back porting information for linux device drivers
CN106681783A (zh) 一种svn代码检测方法及其系统
CN106569863A (zh) 基于资源和代码模块化的安卓app资源更新和修复的方法
US20130185602A1 (en) Heap dump occurrence detection
Handa et al. An order-aware dataflow model for parallel unix pipelines
CN103645888A (zh) 一种自动构建操作系统的系统及方法
CN111142922B (zh) 应用程序更新方法、装置、终端及服务器
Six Optimized and formally-verified compilation for a VLIW processor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant