《一种获取差分升级补丁的方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种获取差分升级补丁的方法及系统.pdf(10页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103123588 A(43)申请公布日 2013.05.29CN103123588A*CN103123588A*(21)申请号 201310046701.4(22)申请日 2013.02.05G06F 9/445(2006.01)H04L 29/08(2006.01)(71)申请人东莞宇龙通信科技有限公司地址 523500 广东省东莞市松山湖科技产业园区北部工业城区申请人宇龙计算机通信科技(深圳)有限公司(72)发明人陈二磊 罗李敏(74)专利代理机构广州三环专利代理有限公司 44202代理人郝传鑫 熊永强(54) 发明名称一种获取差分升级补丁的方法及系统(57) 。
2、摘要本发明实施例公开了一种获取差分升级补丁的方法,包括:获取升级目标版本原始数据;根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件;将所述生成的内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到镜像文件差分升级补丁。本发明实施例还公开了一种获取差分升级补丁的系统。采用本发明,可减小移动终端空中升级时所需下载的升级包的体积,节省用户升级时所需的数据业务网络流量,提高了用户体验。(51)Int.Cl.权利要求书2页 说明书6页 附图1页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书6页 附图1页(10)申请公布号 CN 103123588 AC。
3、N 103123588 A1/2页21.一种差分升级补丁的获取方法,其特征在于,所述方法包括:获取升级目标版本原始数据;根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件;将所述生成的内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到镜像文件差分升级补丁。2.根据权利要求1所述的方法,其特征在于,所述根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件包括:根据所述获取的升级目标版本原始数据生成对应的非压缩内核启动镜像文件。3.根据权利要求1或2所述的方法,其特征在于,所述将所述生成的非压缩内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到内核启动镜像文件。
4、差分升级补丁包括:比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分。4.根据权利要求3所述的方法,其特征在于,所述内核启动镜像文件差分升级补丁至少包括:附加数据块;所述比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分包括:获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据的不同部分,进行压缩并写入所述附加数据块。5.根据权利要求4所述的方法,其特征在于,所述内核启动镜像文件差分升级补丁至少包括:差分数据块;所述比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分包括:获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据的相。
5、同部分,进行差分算法处理,并进行压缩得到所述差分数据块。6.一种获取差分升级补丁的系统,其特征在于,所述系统包括:升级目标版本原始数据获取模块,用于获取升级目标版本原始数据;内核启动镜像文件生成模块,用于根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件;差分处理模块,用于将所述生成的内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到内核启动镜像文件差分升级补丁。7.根据权利要求6所述的系统,其特征在于,所述内核启动镜像文件生成模块根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件包括:根据所述获取的升级目标版本原始数据生成出对应的非压缩内核启动镜像文件。8.根据。
6、权利要求6或7所述的系统,其特征在于,所述差分处理模块包括:差分处理单元,用于比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分。9.根据权利要求8所述的方法,其特征在于,所述内核启动镜像文件差分升级补丁至少包括:附加数据块;所述差分处理单元还用于:获取所述内核启动镜像文件中与所述升级源版本内核启动权 利 要 求 书CN 103123588 A2/2页3镜像文件的不同数据部分,进行压缩并写入所述附加数据块。10.根据权利要求9所述的方法,其特征在于,所述内核启动镜像文件差分升级补丁至少包括:差分数据块;所述差分处理单元还用于:获取所述内核启动镜像文件中与所述升级源版本内核启动镜。
7、像文件的相同数据部分,进行差分算法处理,并进行压缩得到所述差分数据块。权 利 要 求 书CN 103123588 A1/6页4一种获取差分升级补丁的方法及系统技术领域0001 本发明涉及通讯领域,尤其涉及一种获取差分升级补丁的方法及系统。背景技术0002 OTA(Over-the-air Technology,空中下载技术)是通过移动通信的空中接口对SIM卡(Subscriber Identity Module,客户识别模块)数据及应用进行远程管理的技术,空中接口可以采用WAP(Wireless Application Protocol,无线应用协议)、GPRS(General Packet 。
8、Radio Service,通用分组无线服务技术)、CDMA1X(CDMA,Code-Division Multiple Access,码分多址,CDMA1X,CDMA2000的第一阶段)及短信息技术,使用户可以通过手机终端或服务器(网上)方式实现SIM卡内业务菜单的动态下载、删除与更新。0003 OTA升级是Android系统提供的标准软件升级方式,可通过网络自动下载OTA升级包和自动升级,也可以将OTA升级包下载到SD卡(Secure Digital Memory Card,安全数码卡)进行升级。OTA升级包的大小一般为几M到十几M,采用OTA升级无需备份数据。OTA升级包中一般包括内核启。
9、动镜像文件(boot.img)及系统部分(system.img)的差分升级文件。现有技术中的OTA包升级方案,内核启动镜像文件的大小约5M,作压缩处理后的内核启动镜像文件当制作差分补丁后的大小约4M,由于内核启动镜像文件经过压缩处理后,原有的数据结构已被打乱,当做差分处理时,整个升级包的体积很难减小,最终生成的OTA升级包体积较大,消耗用户升级时需要的网络流量,不利于用户的升级体验。发明内容0004 本发明实施例所要解决的技术问题在于,提供一种获取差分升级补丁的方法及系统。可减小升级包的体积,节省用户升级时所需的网络流量,增加了用户的体验。0005 为了解决上述技术问题,本发明实施例提供了一种。
10、获取差分升级补丁的方法,包括:0006 获取升级目标版本原始数据;0007 根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件;0008 将所述生成的内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到内核启动镜像文件差分升级补丁。0009 其中,所述根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件包括:0010 根据所述获取的升级目标版本原始数据生成对应的非压缩内核启动镜像文件。0011 其中,所述将所述生成的内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到内核启动镜像文件差分升级补丁包括:比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计。
11、算差分。0012 其中,所述内核启动镜像文件差分升级补丁至少包括:附加数据块;0013 所述比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差说 明 书CN 103123588 A2/6页5分包括:0014 获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据的不同部分,进行压缩并写入所述附加数据块。0015 其中,所述内核启动镜像文件差分升级补丁至少包括:差分数据块;0016 所述比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分包括:0017 获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据的相同部分,进行差分算法处理,并进行压缩得到所。
12、述差分数据块。0018 相应地,本发明实施例还提供了一种获取差分升级补丁的系统,包括:0019 升级目标版本原始数据获取模块,用于获取升级目标版本原始数据;0020 内核启动镜像文件生成模块,用于根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件;0021 差分处理模块,用于将所述生成的内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到内核启动镜像文件差分补丁。0022 其中,所述内核启动镜像文件生成模块根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件包括:0023 根据所述获取的升级目标版本原始数据生成对应的非压缩内核启动镜像文件。0024 其中,所述差分处理。
13、模块包括:0025 差分处理单元,用于比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分。0026 其中,所述内核启动镜像文件差分升级补丁至少包括:附加数据块;0027 所述差分处理单元还用于:获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据的不同部分,进行压缩并写入所述附加数据块。0028 其中,所述内核启动镜像文件差分升级补丁至少包括:差分数据块;0029 所述差分处理单元还用于:获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据的相同部分,进行差分算法运算,进行压缩并写入所述差分数据块。0030 实施本发明实施例,具有如下有益效果:采用非压缩内核。
14、启动镜像文件,生成的升级包体积较小,可减小移动终端空中升级时所需下载的升级包的体积,节省用户升级时所需的网络流量,增加了用户的体验。附图说明0031 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。0032 图1是本发明实施例中一种获取差分升级补丁的系统结构示意图;0033 图2是本发明实施例中一种获取差分升级补丁的方法的流程图。具体实施方式说 明 书CN 103123588 A3/6页6。
15、0034 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。0035 请参阅图1,图1为本发明实施例中一种获取差分升级补丁的系统结构示意图,该发明一种获取差分升级补丁的系统可以实现在OTA打包编译服务器端,如图所示本实施例中一种获取差分升级补丁的系统至少可以包括升级目标版本原始数据获取模块101、内核启动镜像文件生成模块102和差分处理模块103,其中:0036 升级目标版本原始数据获取。
16、模块101,用于获取升级目标版本原始数据。具体实现中,在OTA打包编译服务器端获取升级目标版本原始数据,升级目标版本原始数据包括但不局限于二进制数据,还可以为八进制数据等。本发明实施例中,升级目标版本原始数据可以为OTA升级包的原始数据,其中,OTA升级是在移动终端的Android系统下实现,通过移动终端向网络服务器请求下载OTA升级包,或通过网络自动下载OTA升级包,移动终端可以为手机、PDA(Personal Digital Assistant,个人数字助理,又名掌上电脑)、iPad(internet Personal access device,平板电脑)等。0037 内核启动镜像文件生。
17、成模块102,用于根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件。具体实现中,内核启动镜像文件生成模块102根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件包括:根据所述获取的升级目标版本原始数据生成对应的非压缩内核启动镜像文件。OTA升级包可以包括内核启动镜像文件(boot.img)及系统部分(system目录)的差分升级文件。内核启动镜像文件boot.img可以由:header、kernel、ramdisk、second stage组成,kernel段的内容是系统内核,如果是压缩内核,必须以0000A0E1数据的8次重复为开头,在0x24地址处是魔数0x016F2。
18、818,用以标志zlmage的存在;如果是非压缩内核,开头直接是内核的入口代码。0038 系统内核kernel编译的过程为:系统内核的本源是vmlinux,其生成的脚本位于kernelMakefile中。Vmlinux是从$(vmlinux-init)和#$(vmlinux-main)所定义的目标编译而来,主要为内核树中的顶层文件夹中的built-in.o文件,其余的由arch/$(ARCH)/Makefile文件定义。链接时$(vmlinux-init)必须是第一个,同时生成System.map以记录所有内核符号的地址。生成的vmlinux有116.6M(tegra4.1),是标准的Linu。
19、x下的ELF可执行文件。vmlinux经过objcopy后生成一个未经压缩的raw binary(Image,11M左右)。将Image以gzip格式压缩生成piggy.gz,然后与piggy.S链接生成piggy.o,piggy.S定义了一个名为.piggydata的段,该段中的数据就是piggy.gz。将生成的piggy.gz进行解压缩,将解压缩的结果作为内核,即kernel文件。0039 将生成的kernel文件与RAMDISK.img通过mkbootimg工具打包成boot.img,即升级目标版本原始数据对应的非压缩内核启动镜像文件boot.img。0040 差分处理模块103,用于将。
20、所述生成的内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到内核启动镜像文件差分升级补丁。具体实现中,差分处理模块103包括差分处理单元,其中差分处理单元用于比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分。其中,内核启动镜像文件差分升级补丁至少可以包括:附加数据块和差分数据块,则差分处理单元还可以用于:获取所述内核启动镜像文件中与说 明 书CN 103123588 A4/6页7所述升级源版本内核启动镜像文件数据的不同部分,进行压缩并写入附加数据块;获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据的相同部分,进行差分算法处理,并进行压缩得到差分数据块。。
21、0041 差分处理单元计算差分时,调用外部程序bsdiff进行,读取升级源版本内核启动镜像文件,将升级源版本内核启动镜像文件的数据内容读入一个字符串,然后对其进行quick suffix排序,该排序会统计每个字符出现的次数,以此作为差分处理的基础。读取内核启动镜像文件,将内核启动镜像文件的数据内容读入一个字符串。将内核启动镜像文件与升级源版本内核启动镜像文件进行比较,将数据相同部分进行压缩得到差分数据块,作差分时相同的数据部分会为零,例如:内核启动镜像文件中某一段的15个字符中仅前8个字符与升级源版本内核启动镜像文件对应段的15个字符中的前8个字符相同,作差分时相同的部分会为零,则内核文件中该。
22、8个字符赋值零。获取到内核启动镜像文件中与升级源版本内核启动镜像文件数据的相同部分后,对其进行差分算法处理,并进行压缩写入差分数据块。内核启动镜像文件为非压缩文件,都是原始数据,在进行差分时,可以读取所有的相同数据部分,作差分时相同的部分会为零,则压缩得到的差分数据块体积非常小。进一步可选的,如果读取到内核启动镜像文件中与升级源版本内核启动镜像文件数据的相似部分,也可以对其进行差分算法处理,进行压缩后写入差分数据块。如果是用压缩内核启动镜像文件做差分,升级目标版本原始数据的数据结构已被打乱,压缩内核启动镜像文件与升级源版本内核启动镜像文件作比较时,不能比较出全部相同数据,无法完全作差分,因此升。
23、级包的体积在3M4M,升级包体积较大。0042 将内核启动镜像文件与升级源版本内核启动镜像文件进行比较,将数据不相同部分进行压缩并写入附加数据块。又内核启动镜像文件差分升级补丁至少包括:附加数据块和差分数据块,OTA升级包的体积主要体现在内核启动镜像文件差分升级补丁的体积中,而差分数据块的内容赋值零所占的体积小,只剩下附加数据块,使得OTA升级包体积降到40k50k。0043 本发明实施例一种获取差分升级补丁的系统,采用非压缩内核启动镜像文件,使得生成的升级包体积较小,通过本发明,可减小移动终端空中升级时所需下载的升级包的体积,节省用户升级时所需的网络流量,增加了用户的体验。0044 图2为本。
24、发明实施例中一种获取差分升级补丁的方法的流程图,本实施例中的方法可以实现在上述实施例中,如图所示本实施例获取差分升级补丁的方法包括以下步骤:0045 步骤S201,获取升级目标版本原始数据。具体实现中,在OTA打包编译服务器端获取升级目标版本原始数据,升级目标版本原始数据包括但不局限于二进制数据,还可以为八进制数据等。本发明实施例中,升级目标版本原始数据可以为OTA升级包的原始数据,其中,OTA升级是在移动终端的Android系统下实现,通过移动终端向网络服务器请求下载OTA升级包,或通过网络自动下载OTA升级包,移动终端可以为手机、PDA、iPad等。0046 步骤S202,根据所述获取的升。
25、级目标版本原始数据生成对应的内核启动镜像文件。具体实现中,根据所述获取的升级目标版本原始数据生成对应的内核启动镜像文件包括:根据所述获取的升级目标版本原始数据生成对应的非压缩内核启动镜像文件。OTA升级包可以包括内核启动镜像文件(boot.img)及系统部分(system目录)的差分升级补丁文件。内核启动镜像文件boot.img可以由:header、kernel、ramdisk、second stage组成,说 明 书CN 103123588 A5/6页8kernel段的内容是系统内核,如果是压缩内核,必须以0000A0E1数据的8次重复为开头,在0x24地址处是魔数0x016F2818,用以。
26、标志zlmage的存在;如果是非压缩内核,开头直接是内核的入口代码。0047 系统内核kernel编译的过程为:系统内核的本源是vmlinux,其生成的脚本位于kernelMakefile中。Vmlinux是从$(vmlinux-init)和#$(vmlinux-main)所定义的目标编译而来,主要为内核树中的顶层文件夹中的built-in.o文件,其余的由arch/$(ARCH)/Makefile文件定义。链接时$(vmlinux-init)必须是第一个,同时生成System.map以记录所有内核符号的地址。生成的vmlinux有116.6M(tegra4.1),是标准的Linux下的ELF。
27、可执行文件。vmlinux经过objcopy后生成一个未经压缩的raw binary(Image,11M左右)。将Image以gzip格式压缩生成piggy.gz,然后与piggy.S链接生成piggy.o,piggy.S定义了一个名为.piggydata的段,该段中的数据就是piggy.gz。将生成的piggy.gz进行解压缩,将解压缩的结果作为内核,即kernel文件。0048 将生成的kernel文件与RAMDISK.img通过mkbootimg工具打包成boot.img,则生成升级目标版本原始数据对应的非压缩内核启动镜像文件boot.img。0049 步骤S203,将所述生成的内核启动。
28、镜像文件与升级源版本内核启动镜像文件进行差分处理,可以得到内核启动镜像文件差分升级补丁。具体实现中,将所述生成的内核启动镜像文件与升级源版本内核启动镜像文件进行差分处理得到内核启动镜像文件差分升级补丁包括:比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分。其中,内核启动镜像文件差分补丁至少可以包括:附加数据块和差分数据块,比较所述升级源版本内核启动镜像文件与所述内核启动镜像文件并计算差分包括:获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据较的不同部分,进行压缩并写入附加数据块;获取所述内核启动镜像文件中与所述升级源版本内核启动镜像文件数据的相同部分,进行差分算。
29、法处理,并进行压缩得到差分数据块。0050 计算差分时,调用外部程序bsdiff进行,读取升级源版本内核启动镜像文件,将升级源版本内核启动镜像文件的数据内容读入一个字符串,然后对其进行quick suffix排序,该排序会统计每个字符出现的次数,以此作为差分处理的基础。读取内核启动镜像文件,将内核启动镜像文件的数据内容读入一个字符串。将内核启动镜像文件与升级源版本内核启动镜像文件进行比较,将数据相似部分进行差分并压缩,得到差分数据块,作差分时相同的数据部分会为零,例如:内核启动镜像文件中某一段的15个字符中仅前8个字符与升级源版本内核启动镜像文件对应段的15个字符中的前8个字符相同,作差分时相。
30、同的部分会为零,则内核文件中该8个字符赋值零。获取到内核启动镜像文件中与升级源版本内核启动镜像文件数据的相同部分后,对其进行差分算法处理,内核启动镜像文件为非压缩文件,都是原始数据,在进行差分时,可以读取所有的相同数据部分,作差分时相同的部分会为零,则压缩得到的差分数据块体积非常小。进一步可选的,如果读取到内核启动镜像文件中与升级源版本内核启动镜像文件数据的相似部分,也可以对其进行差分算法处理,进行压缩后写入差分数据块。如果是用压缩内核启动镜像文件做差分,升级目标版本原始数据的数据结构已被打乱,压缩内核启动镜像文件与升级源版本内核启动镜像文件作比较时,不能比较出全部相同数据,无法完全作差分,因。
31、此升级包的体积在3M4M,升级包体积较大。说 明 书CN 103123588 A6/6页90051 将内核启动镜像文件与升级源版本内核启动镜像文件进行比较,将数据不相同部分进行压缩并写入附加数据块。又内核启动镜像文件差分升级补丁至少包括:附加数据块和差分数据块,OTA升级包的体积主要体现在内核启动镜像文件差分升级补丁的体积中,而差分数据块的内容赋值零所占的体积小,只剩下附加数据块,使得OTA升级包体积降到40k50k。0052 本发明实施例一种获取差分升级补丁的方法,采用非压缩内核启动镜像文件,使得生成的升级包体积较小,通过本发明,可减小移动终端空中升级时所需下载的升级包的体积,节省用户升级时。
32、所需的网络流量,增加了用户的体验。0053 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。0054 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。说 明 书CN 103123588 A1/1页10图1图2说 明 书 附 图CN 103123588 A10。