CN113641394A - 一种多操作***设备的差分升级方法 - Google Patents
一种多操作***设备的差分升级方法 Download PDFInfo
- Publication number
- CN113641394A CN113641394A CN202110925726.6A CN202110925726A CN113641394A CN 113641394 A CN113641394 A CN 113641394A CN 202110925726 A CN202110925726 A CN 202110925726A CN 113641394 A CN113641394 A CN 113641394A
- Authority
- CN
- China
- Prior art keywords
- file
- differential
- upgrade
- partition
- operating system
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种多操作***设备的差分升级方法,包括:根据每个来宾操作***中待升级的分区的***类型以及宿主操作***的可用内存制作差分升级包;获取差分升级包并在校验成功时解析得到差分文件及升级脚本文件;针对各来宾操作***的每个待升级的分区,判断分区的***类型是否为***扩展文件***:若是,则根据对应的差分文件和升级脚本文件对分区的分区数据进行修改;若否,则根据获取的分区的源版本和差分文件进行还原运算得到一目标版本,并将目标版本写回分区;重复执行上述过程,直至所有来宾操作***的所有待升级的分区升级完毕。有益效果是实现较小升级包、较快升级速度以及较小内存消耗的平衡,满足不同***类型的分区的升级需求。
Description
技术领域
本发明涉及空中下载技术领域,尤其涉及一种多操作***设备的差分升级方法。
背景技术
Hypervisor,又称虚拟机监视器,是用来建立与执行虚拟机器的软件、固件或硬件。被Hypervisor用来执行一个或多个虚拟机器的电脑称为主体机器,这些虚拟机器则称为客体机器。Hypervisor提供虚拟的作业平台来执行客体操作***,负责管理其他客体操作***的执行阶段;这些客体操作***,共同分享虚拟化后的硬件资源。
基于Hypervisor技术的发展,越来越多的厂家将多个复杂操作***从软件层面整合到单个片上***上,从而达到节约成本,降低功耗,提高了交互效率且各个操作***又相对安全独立的目的。但这给基于空中下载技术的差分升级的实施带来了新的难题:若采用不同的操作***独立升级,则总体升级耗时加长,用户体验不佳,且加大了空中下载技术整体实施的耦合度;若采用在某个操作***内统一对该操作***及其它操作***进行升级,则由于各个操作***采用的文件***分区类型可能各不相同,且有的操作***中还使用了dm-verity技术,导致不能使用文件***文件差分的方式。
发明内容
针对现有技术中存在的问题,本发明提供一种多操作***设备的差分升级方法,所述多操作***设备包括一宿主操作***和多个来宾操作***,每个所述来宾操作***包括至少一分区,所述宿主操作***具有各所述来宾操作***的分区读写权限;
所述差分升级方法包括:
步骤S1,针对每个待升级的所述来宾操作***,根据所述来宾操作***中待升级的所述分区的***类型以及所述宿主操作***的可用内存制作一差分升级包并发布;
所述差分升级包包括差分文件及对应的升级脚本文件;
步骤S2,所述宿主操作***获取所述差分升级包并进行校验,所述校验是否成功:
若否,则提示升级失败并退出;
若是,则所述宿主操作***解析所述差分升级包得到所述差分文件及所述升级脚本文件,随后转向步骤S3;
步骤S3,针对各所述来宾操作***的每个待升级的所述分区,所述宿主操作***判断所述分区的所述***类型是否为***扩展文件***:
若是,则根据对应的所述差分文件和所述升级脚本文件对所述分区的分区数据进行修改,随后转向步骤S4;
若否,则根据获取的所述分区的源版本和所述差分文件进行还原运算得到一目标版本,并将所述目标版本写回所述分区,随后转向步骤S4;
步骤S4,重复执行所述步骤S3,直至所有所述来宾操作***的所有待升级的所述分区升级完毕。
优选的,所述步骤S1包括:
步骤S11,获取所述来宾操作***的待升级的所述分区的所述***类型,针对每个所述分区,判断所述***类型是否为文件***类型:
若是,则转向步骤S12;
若否,则转向步骤S14;
步骤S12,判断所述文件***类型是否为***扩展文件***:
若是,则获取所述分区对应的一源版本和一目标版本,根据所述源版本和所述目标版本之间各文件的差异生成相应的所述差分文件及所述升级脚本文件;
若否,则转向步骤S13;
步骤S13,判断所述文件***类型是否能够被所述宿主操作***识别挂载:
若是,则根据所述源版本和所述目标版本分别对各个所述文件进行差分得到对应的所述差分文件并将各所述文件的文件属性记录在所述升级脚本文件中;
若否,则转向步骤S14;
步骤S14,获取所述宿主操作***的可用内存,根据所述分区的所述源版本和所述目标版本处理得到升级所需内存,并根据所述升级所需内存和所述可用内存进行差分运算得到对应的所述差分文件及所述升级脚本文件;
步骤S15,根据所述来宾操作***的所有待升级的所述分区的所述差分文件以及所述升级脚本文件生成所述来宾操作***的所述差分升级包。
优选的,所述步骤S12中,所述文件***类型为所述***扩展文件***时,所述差分文件及所述升级脚本文件的生成过程包括:
针对所述***扩展文件***中的文件数据区,将所述文件数据区对应的所述源版本和所述目标版本中的各所述文件进行比较,根据所述源版本和所述目标版本之间各所述文件的文件内容以及存储位置的差异生成相应的所述差分文件及所述升级脚本文件;
针对所述***扩展文件***中的非文件数据区,由所述目标版本中读取所述非文件数据区的非数据文件,将所述非数据文件以全包的方式存储作为所述差分文件,在所述升级脚本文件中记录所述非数据文件在所述目标版本中的存储位置,并在所述升级脚本文件中配置全包写入命令作为所述文件的升级处理命令。
优选的,所述文件内容以及所述存储位置的差异包括:
所述文件在所述源版本中且不在所述目标版本中,则所述步骤S12中,在所述升级脚本文件中记录所述文件在所述源版本中的存储位置,并在所述升级脚本文件中配置删除命令作为所述文件的升级处理命令;或
所述文件不在所述源版本中且在所述目标版本中,则所述步骤S12中,将所述文件作为差分文件,在所述升级脚本文件中记录所述文件在所述目标版本中的存储位置,并在所述升级脚本文件中配置***命令作为所述文件的升级处理命令;或
所述文件分别在所述源版本和所述目标版本中的不同存储位置且所述文件的文件内容不变,则所述步骤S12中,在所述升级脚本文件中记录所述文件在所述目标版本中的存储位置,并在所述升级脚本文件中配置移动命令作为所述文件的升级处理命令;或
所述文件同时在所述源版本和所述目标版本中且所述文件内容发生变化,则对所述源版本和所述目标版本中的所述文件进行差分运算得到所述差分文件,在所述升级脚本文件中记录所述文件在所述目标版本中的存储位置,并在所述升级脚本文件中配置还原命令作为所述文件的升级处理命令。
优选的,所述步骤S14包括:
步骤S141,获取所述宿主操作***的可用内存,根据所述分区的所述源版本和所述目标版本处理得到升级所需内存,并判断所述升级所需内存是否小于所述可用内存:
若是,则将所述分区对应的所述源版本和所述目标版本进行差分运算得到所述差分文件,随后转向所述步骤S15;
若否,则对所述源版本和所述目标版本进行分块得到多个数据块,每个所述数据块的所述升级所需内存小于所述可用内存,随后转向步骤S142;
步骤S142,将各所述数据块按照分块顺序依次进行差分运算得到所述差分文件。
优选的,执行所述步骤S15之前,还包括在所述升级脚本文件中分别记录每个待升级的所述分区的所述源版本和所述目标版本的哈希值。
优选的,所述步骤S2包括:
步骤S21,所述宿主操作***获取所述差分升级包并对所述差分升级包进行合法性校验,判断是否校验成功:
若否,则提示升级失败并退出;
若是,则转向步骤S22;
步骤S22,所述宿主操作***读取所有待升级的所述来宾操作***中的需要差分升级的各所述分区的分区数据,计算所述分区数据的哈希值,并判断所述哈希值与所述差分升级包中记录的所述源版本的哈希值是否一致:
若是,则所述宿主操作***解析所述差分升级包得到所述差分文件及所述升级脚本文件,随后转向步骤S3;
若否,则提示升级失败并退出。
优选的,所述步骤S3中,根据对应的所述差分文件和所述升级脚本文件对所述分区的分区数据进行修改后,还包括:
计算修改后的所述分区数据的哈希值,并判断所述哈希值与所述差分升级包中记录的所述目标版本的哈希值是否一致:
若是,则转向所述步骤S4;
若否,则报错退出。
优选的,所述步骤S3中,将所述目标版本写回所述分区后,还包括:
计算写回所述分区的所述分区数据的哈希值,并判断所述哈希值与所述目标版本的哈希值是否一致:
若是,则转向所述步骤S4;
若否,则报错退出。
优选的,在写回所述分区的所述分区数据的哈希值与所述目标版本的哈希值不一致时,还包括一重复执行写回动作的过程,包括:
步骤A1,所述宿主操作***重复执行将所述目标版本写回所述分区的写回动作,并在执行所述写回动作后,判断所述分区数据的所述哈希值与所述目标版本的哈希值是否一致:
若是,则转向所述步骤S4;
若否,则转向步骤A2;
步骤A2,所述宿主操作***统计所述写回动作的重复执行次数,判断所述重复执行次数是否小于一预设次数:
若是,则返回所述步骤A1;
若否,则报错退出。
上述技术方案具有如下优点或有益效果:
1)根据来宾操作***中待升级分区的***类型结合宿主操作***的可用内存进行差分升级包的制作,实现较小升级包、较快升级速度以及较小内存消耗的平衡;
2)所有来宾操作***同时升级,有效缩短总体升级耗时,提升用户体验;
3)根据来宾操作***中待升级分区的***类型采用差异化的升级方式,满足不同***类型的分区的升级需求。
附图说明
图1为本发明的较佳的实施例中,一种多操作***设备的差分升级方法的流程示意图;
图2为本发明的较佳的实施例中,差分升级包的制作过程的流程示意图;
图3为本发明的较佳的实施例中,根据宿主操作***的可用内存及升级所需内存生成差分文件及升级脚本文件的流程示意图;
图4为本发明的较佳的实施例中,差分升级包校验过程的流程示意图;
图5为本发明的较佳的实施例中,重复执行写回动作的过程的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本发明并不限定于该实施方式,只要符合本发明的主旨,则其他实施方式也可以属于本发明的范畴。
本发明的较佳的实施例中,基于现有技术中存在的上述问题,现提供一种多操作***设备的差分升级方法,多操作***设备包括一宿主操作***和多个来宾操作***,每个来宾操作***包括至少一分区,宿主操作***具有各来宾操作***的分区读写权限;
如图1所示,差分升级方法包括:
步骤S1,针对每个待升级的来宾操作***,根据来宾操作***中待升级的分区的***类型以及宿主操作***的可用内存制作一差分升级包并发布;
差分升级包包括差分文件及对应的升级脚本文件;
步骤S2,宿主操作***获取差分升级包并进行校验,校验是否成功:
若否,则提示升级失败并退出;
若是,则宿主操作***解析差分升级包得到差分文件及升级脚本文件,随后转向步骤S3;
步骤S3,针对各来宾操作***的每个待升级的分区,宿主操作***判断分区的***类型是否为***扩展文件***:
若是,则根据对应的差分文件和升级脚本文件对分区的分区数据进行修改,随后转向步骤S4;
若否,则根据获取的分区的源版本和差分文件进行还原运算得到一目标版本,并将目标版本写回分区,随后转向步骤S4;
步骤S4,重复执行步骤S3,直至所有来宾操作***的所有待升级的分区升级完毕。
具体地,本实施例中,本技术方案的多操作***设备可以连接一远程服务器,多操作***设备的生产厂家可以将源版本和目标版本保存在远程服务器中,同时该远程服务器可以配置一差分包制作工具,通过该差分包制作工具执行步骤S1,以制作得到差分升级包并发布,多操作***设备在检测到发布的差分升级包时,由远程服务器下载该差分升级包以进行升级。作为优选的实施方式,上述差分包制作工具可以配置在一制作终端上,该制作终端连接上述远程服务器,在制作得到差分升级包后,将该差分升级包发布在远程服务器上,多操作***设备在检测到发布的差分升级包时,由远程服务器下载该差分升级包以进行升级。作为优选,上述制作终端可以是电脑端,该电脑端可以配置在多操作***设备的生产厂家。
优选的,上述宿主操作***中可以预先配置有相应的升级引导程序,通过该升级引导程序实现各个来宾操作***的各待升级分区的差分升级过程,该升级引导程序可以是UA升级程序。
作为优选的实施方式,上述升级脚本文件可以与来宾操作***一一对应,换言之,每个待升级的来宾操作***对应生成一个升级脚本文件。上述升级脚本文件也可以与待升级的分区一一对应,换言之,每个待升级的分区对应生成一个升级脚本文件。可以根据需求进行配置,其中,每个待升级的分区对应生成一个升级脚本文件可以更灵活配置升级过程,如每个分区独立进行校验方式配置等。
进一步地,作为优选的实施方式,如图2所示,步骤S1包括:
步骤S11,获取来宾操作***的待升级的分区的***类型,针对每个分区,判断***类型是否为文件***类型:
若是,则转向步骤S12;
若否,则转向步骤S14;
步骤S12,判断文件***类型是否为***扩展文件***:
若是,则获取分区对应的一源版本和一目标版本,根据源版本和目标版本之间各文件的差异生成相应的差分文件及升级脚本文件;
若否,则转向步骤S13;
步骤S13,判断文件***类型是否能够被宿主操作***识别挂载:
若是,则根据源版本和目标版本分别对各个文件进行差分得到对应的差分文件并将各文件的文件属性记录在升级脚本文件中;
若否,则转向步骤S14;
步骤S14,获取宿主操作***的可用内存,根据分区的源版本和目标版本处理得到升级所需内存,并根据升级所需内存和可用内存进行差分运算得到对应的差分文件及升级脚本文件;
步骤S15,根据来宾操作***的所有待升级的分区的差分文件以及升级脚本文件生成来宾操作***的差分升级包。
具体地,本实施例中,在进行差分升级包制作时,综合考虑差分升级包的大小、升级耗时以及宿主操作***的可用内存,以实现较小升级包、较快升级速度以及较小内存消耗的平衡。进一步具体地,每个来宾操作***通常包括多个分区,在升级时可能只有其中的一个或几个分区需要进行升级。对于需要进行升级的分区,预先获取其***类型,该***类型包括文件***类型和非文件***类型,其中文件***类型细分为***扩展文件***(ext4)、非***扩展文件***但可以被宿主操作***识别正常挂载的文件***类型以及除上述两种类型外的其他文件***类型,本技术方案针对上述四种***类型分别采用不同的差分包制作方式。
其中,针对***扩展文件***,根据源版本和目标版本之间各文件的差异生成相应的差分文件及升级脚本文件,作为优选,上述源版本和目标版本的发布版本若是sparse类型ext4镜像,则需要先将其转为raw类型ext4镜像,随后对源版本和目标版本进行解析,分别得到源版本和目标版本中该分区内各个文件的存储路径、文件名及其在ext4镜像中以4k作为单位的存储位置,进而基于源版本和目标版本之间各文件的差异生成相应的差分文件及升级脚本文件。
本实施例中,***扩展文件***进一步细分为文件数据区和非文件数据区,则步骤S12中,文件***类型为***扩展文件***时,差分文件及升级脚本文件的生成过程包括:
针对***扩展文件***中的文件数据区,将文件数据区对应的源版本和目标版本中的各文件进行比较,根据源版本和目标版本之间各文件的文件内容以及存储位置的差异生成相应的差分文件及升级脚本文件;
针对***扩展文件***中的非文件数据区,由目标版本中读取非文件数据区的非数据文件,将非数据文件以全包的方式存储作为差分文件,在升级脚本文件中记录非数据文件在目标版本中的存储位置,并在升级脚本文件中配置全包写入命令作为文件的升级处理命令。
其中,上述非文件数据区包括但不限于包含了超级块、GPT(GUID分区表,GUID为全局唯一标识符)、inode table(索引表)、bmap(位图)的元数据区,dm-verity(文件***的校验)功能需要存储的数据,其他为实现某些特殊功能合入ext4镜像的数据。
本实施例中,上述文件内容以及存储位置的差异包括:
文件在源版本中且不在目标版本中,则步骤S12中,在升级脚本文件中记录文件在源版本中的存储位置,并在升级脚本文件中配置删除命令作为文件的升级处理命令;或
文件不在源版本中且在目标版本中,则步骤S12中,将文件作为差分文件,在升级脚本文件中记录文件在目标版本中的存储位置,并在升级脚本文件中配置***命令作为文件的升级处理命令;或
文件分别在源版本和目标版本中的不同存储位置且文件的文件内容不变,则步骤S12中,在升级脚本文件中记录文件在目标版本中的存储位置,并在升级脚本文件中配置移动命令作为文件的升级处理命令;或
文件同时在源版本和目标版本中且文件内容发生变化,则对源版本和目标版本中的文件进行差分运算得到差分文件,在升级脚本文件中记录文件在目标版本中的存储位置,并在升级脚本文件中配置还原命令作为文件的升级处理命令。
具体地,本实施例中,对于在源版本中存在,目标版本中不存在的文件,无需生成差分文件,只需在升级脚本文件中记录该文件在源版本中的存储位置并配置删除命令,以使得在后续升级时,宿主操作***根据升级脚本文件中记录的存储位置删除源版本中的该文件,完成该文件的差分升级。对于目标版本中存在但源版本中不存在的文件,即该文件在目标版本中为新增文件,此时,将该文件作为差分文件,在升级脚本文件中记录其在目标版本中的存储位置并配置***命令,以使得在后续升级时,宿主操作***执行升级脚本文件中的***命令,将上述差分文件***至记录的存储位置,完成该文件的差分升级。对于在源版本和目标版本中均存在且文件内容未发生变化但存储位置发生变化的文件,无需生成差分文件,只需在升级脚本中记录其在目标版本的存储位置并配置移动命令,以使得在后续升级时,宿主操作***根据升级脚本文件中记录的存储位置将源版本中文件移动至该存储位置,完成该文件的差分升级。对于在源版本和目标版本中均存在且文件内容发生变化的文件,无论其存储位置是否发生变化,均生成差分文件,在升级脚本文件中记录其在目标版本中的存储位置并配置还原命令,以使得在后续升级时,宿主操作***执行还原命令进行反差分运算,完成该文件的差分升级。
优选的,可以通过比较源版本和目标版本中的文件的文件名确定对应的文件是否存在与源版本或目标版本中,可以通过上述存储路径访问源版本和目标版本,以确定对应的文件的文件内容是否发生变化。
本发明的较佳的实施例中,如图3所示,步骤S14包括:
步骤S141,获取宿主操作***的可用内存,根据分区的源版本和目标版本处理得到升级所需内存,并判断升级所需内存是否小于可用内存:
若是,则将分区对应的源版本和目标版本进行差分运算得到差分文件,随后转向步骤S15;
若否,则对源版本和目标版本进行分块得到多个数据块,每个数据块的升级所需内存小于可用内存,随后转向步骤S142;
步骤S142,将各数据块按照分块顺序依次进行差分运算得到差分文件。
本发明的较佳的实施例中,执行步骤S15之前,还包括在升级脚本文件中分别记录每个待升级的分区的源版本和目标版本的哈希值,以供后续升级之前校验使用。
本发明的较佳的实施例中,如图4所示,步骤S2包括:
步骤S21,宿主操作***获取差分升级包并对差分升级包进行合法性校验,判断是否校验成功:
若否,则提示升级失败并退出;
若是,则转向步骤S22;
步骤S22,宿主操作***读取所有待升级的来宾操作***中的需要差分升级的各分区的分区数据,计算分区数据的哈希值,并判断哈希值与差分升级包中记录的源版本的哈希值是否一致:
若是,则宿主操作***解析差分升级包得到差分文件及升级脚本文件,随后转向步骤S3;
若否,则提示升级失败并退出。
具体地,本实施例中,宿主操作***通过读取所有待升级的来宾操作***中的需要差分升级的各分区的分区数据,并进行哈希值校验的校验方式优选应用于同时有多个来宾操作***,如两个来宾操作***,两个来宾操作***之间存在一定的关联关系的场景,如两个来宾操作***需要有预设的版本差异才能保证多操作***设备某项功能的正常运行,使得即使其中一个来宾操作***的哈希值校验成功也不进行升级,避免单个来宾操作***升级后影响多操作***设备的正常运行。
作为优选的实施方式,上述哈希值校验方式也可以应用于多个来宾操作***完全独立的场景,理论上在单个来宾操作***的所有需要差分升级的分区哈希校验通过时,可以对该单个来宾操作***进行独立升级,但可能会出现该来宾操作***由于升级后的版本与远程服务器中存储的源版本出现差异,为后续差分升级包的制作带来不便。
本发明的较佳的实施例中,步骤S3中,根据对应的差分文件和升级脚本文件对分区的分区数据进行修改后,还包括:
计算修改后的分区数据的哈希值,并判断哈希值与差分升级包中记录的目标版本的哈希值是否一致:
若是,则转向步骤S4;
若否,则报错退出。
具体地,本实施例中,根据升级脚本文件中记录的升级处理命令,上述修改可以是删除、***、移动以及还原。
本发明的较佳的实施例中,步骤S3中,将目标版本写回分区后,还包括:
计算写回分区的分区数据的哈希值,并判断哈希值与目标版本的哈希值是否一致:
若是,则转向步骤S4;
若否,则报错退出。
本发明的较佳的实施例中,在写回分区的分区数据的哈希值与目标版本的哈希值不一致时,还包括一重复执行写回动作的过程,如图5所示,包括:
步骤A1,宿主操作***重复执行将目标版本写回分区的写回动作,并在执行写回动作后,判断分区数据的哈希值与目标版本的哈希值是否一致:
若是,则转向步骤S4;
若否,则转向步骤A2;
步骤A2,宿主操作***统计写回动作的重复执行次数,判断重复执行次数是否小于一预设次数:
若是,则返回步骤A1;
若否,则报错退出。
具体地,本实施例中,上述预设次数可以是三次,在哈希值校验不一致时,通过重复写回动作,能够避免由于多操作***设备运行不稳定等原因导致的升级失败,提升升级成功率,同时限定重复执行次数,避免由于其他原因导致的升级失败而重复写回占用过长的升级时间。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (10)
1.一种多操作***设备的差分升级方法,其特征在于,所述多操作***设备包括一宿主操作***和多个来宾操作***,每个所述来宾操作***包括至少一分区,所述宿主操作***具有各所述来宾操作***的分区读写权限;
所述差分升级方法包括:
步骤S1,针对每个待升级的所述来宾操作***,根据所述来宾操作***中待升级的所述分区的***类型以及所述宿主操作***的可用内存制作一差分升级包并发布;
所述差分升级包包括差分文件及对应的升级脚本文件;
步骤S2,所述宿主操作***获取所述差分升级包并进行校验,所述校验是否成功:
若否,则提示升级失败并退出;
若是,则所述宿主操作***解析所述差分升级包得到所述差分文件及所述升级脚本文件,随后转向步骤S3;
步骤S3,针对各所述来宾操作***的每个待升级的所述分区,所述宿主操作***判断所述分区的所述***类型是否为***扩展文件***:
若是,则根据对应的所述差分文件和所述升级脚本文件对所述分区的分区数据进行修改,随后转向步骤S4;
若否,则根据获取的所述分区的源版本和所述差分文件进行还原运算得到一目标版本,并将所述目标版本写回所述分区,随后转向步骤S4;
步骤S4,重复执行所述步骤S3,直至所有所述来宾操作***的所有待升级的所述分区升级完毕。
2.根据权利要求1所述的差分升级方法,其特征在于,所述步骤S1包括:
步骤S11,获取所述来宾操作***的待升级的所述分区的所述***类型,针对每个所述分区,判断所述***类型是否为文件***类型:
若是,则转向步骤S12;
若否,则转向步骤S14;
步骤S12,判断所述文件***类型是否为***扩展文件***:
若是,则获取所述分区对应的一源版本和一目标版本,根据所述源版本和所述目标版本之间各文件的差异生成相应的所述差分文件及所述升级脚本文件;
若否,则转向步骤S13;
步骤S13,判断所述文件***类型是否能够被所述宿主操作***识别挂载:
若是,则根据所述源版本和所述目标版本分别对各个所述文件进行差分得到对应的所述差分文件并将各所述文件的文件属性记录在所述升级脚本文件中;
若否,则转向步骤S14;
步骤S14,获取所述宿主操作***的可用内存,根据所述分区的所述源版本和所述目标版本处理得到升级所需内存,并根据所述升级所需内存和所述可用内存进行差分运算得到对应的所述差分文件及所述升级脚本文件;
步骤S15,根据所述来宾操作***的所有待升级的所述分区的所述差分文件以及所述升级脚本文件生成所述来宾操作***的所述差分升级包。
3.根据权利要求2所述的差分升级方法,其特征在于,所述步骤S12中,所述文件***类型为所述***扩展文件***时,所述差分文件及所述升级脚本文件的生成过程包括:
针对所述***扩展文件***中的文件数据区,将所述文件数据区对应的所述源版本和所述目标版本中的各所述文件进行比较,根据所述源版本和所述目标版本之间各所述文件的文件内容以及存储位置的差异生成相应的所述差分文件及所述升级脚本文件;
针对所述***扩展文件***中的非文件数据区,由所述目标版本中读取所述非文件数据区的非数据文件,将所述非数据文件以全包的方式存储作为所述差分文件,在所述升级脚本文件中记录所述非数据文件在所述目标版本中的存储位置,并在所述升级脚本文件中配置全包写入命令作为所述文件的升级处理命令。
4.根据权利要求3所述的差分升级方法,其特征在于,所述文件内容以及所述存储位置的差异包括:
所述文件在所述源版本中且不在所述目标版本中,则所述步骤S12中,在所述升级脚本文件中记录所述文件在所述源版本中的存储位置,并在所述升级脚本文件中配置删除命令作为所述文件的升级处理命令;或
所述文件不在所述源版本中且在所述目标版本中,则所述步骤S12中,将所述文件作为差分文件,在所述升级脚本文件中记录所述文件在所述目标版本中的存储位置,并在所述升级脚本文件中配置***命令作为所述文件的升级处理命令;或
所述文件分别在所述源版本和所述目标版本中的不同存储位置且所述文件的文件内容不变,则所述步骤S12中,在所述升级脚本文件中记录所述文件在所述目标版本中的存储位置,并在所述升级脚本文件中配置移动命令作为所述文件的升级处理命令;或
所述文件同时在所述源版本和所述目标版本中且所述文件内容发生变化,则对所述源版本和所述目标版本中的所述文件进行差分运算得到所述差分文件,在所述升级脚本文件中记录所述文件在所述目标版本中的存储位置,并在所述升级脚本文件中配置还原命令作为所述文件的升级处理命令。
5.根据权利要求2所述的差分升级方法,其特征在于,所述步骤S14包括:
步骤S141,获取所述宿主操作***的可用内存,根据所述分区的所述源版本和所述目标版本处理得到升级所需内存,并判断所述升级所需内存是否小于所述可用内存:
若是,则将所述分区对应的所述源版本和所述目标版本进行差分运算得到所述差分文件,随后转向所述步骤S15;
若否,则对所述源版本和所述目标版本进行分块得到多个数据块,每个所述数据块的所述升级所需内存小于所述可用内存,随后转向步骤S142;
步骤S142,将各所述数据块按照分块顺序依次进行差分运算得到所述差分文件。
6.根据权利要求2所述的差分升级方法,其特征在于,执行所述步骤S15之前,还包括在所述升级脚本文件中分别记录每个待升级的所述分区的所述源版本和所述目标版本的哈希值。
7.根据权利要求6所述的差分升级方法,其特征在于,所述步骤S2包括:
步骤S21,所述宿主操作***获取所述差分升级包并对所述差分升级包进行合法性校验,判断是否校验成功:
若否,则提示升级失败并退出;
若是,则转向步骤S22;
步骤S22,所述宿主操作***读取所有待升级的所述来宾操作***中的需要差分升级的各所述分区的分区数据,计算所述分区数据的哈希值,并判断所述哈希值与所述差分升级包中记录的所述源版本的哈希值是否一致:
若是,则所述宿主操作***解析所述差分升级包得到所述差分文件及所述升级脚本文件,随后转向步骤S3;
若否,则提示升级失败并退出。
8.根据权利要求6所述的差分升级方法,其特征在于,所述步骤S3中,根据对应的所述差分文件和所述升级脚本文件对所述分区的分区数据进行修改后,还包括:
计算修改后的所述分区数据的哈希值,并判断所述哈希值与所述差分升级包中记录的所述目标版本的哈希值是否一致:
若是,则转向所述步骤S4;
若否,则报错退出。
9.根据权利要求6所述的差分升级方法,其特征在于,所述步骤S3中,将所述目标版本写回所述分区后,还包括:
计算写回所述分区的所述分区数据的哈希值,并判断所述哈希值与所述目标版本的哈希值是否一致:
若是,则转向所述步骤S4;
若否,则报错退出。
10.根据权利要求9所述的差分升级方法,其特征在于,在写回所述分区的所述分区数据的哈希值与所述目标版本的哈希值不一致时,还包括一重复执行写回动作的过程,包括:
步骤A1,所述宿主操作***重复执行将所述目标版本写回所述分区的写回动作,并在执行所述写回动作后,判断所述分区数据的所述哈希值与所述目标版本的哈希值是否一致:
若是,则转向所述步骤S4;
若否,则转向步骤A2;
步骤A2,所述宿主操作***统计所述写回动作的重复执行次数,判断所述重复执行次数是否小于一预设次数:
若是,则返回所述步骤A1;
若否,则报错退出。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110925726.6A CN113641394A (zh) | 2021-08-12 | 2021-08-12 | 一种多操作***设备的差分升级方法 |
PCT/CN2021/138531 WO2023015802A1 (zh) | 2021-08-12 | 2021-12-15 | 一种多操作***设备的差分升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110925726.6A CN113641394A (zh) | 2021-08-12 | 2021-08-12 | 一种多操作***设备的差分升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113641394A true CN113641394A (zh) | 2021-11-12 |
Family
ID=78421333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110925726.6A Pending CN113641394A (zh) | 2021-08-12 | 2021-08-12 | 一种多操作***设备的差分升级方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113641394A (zh) |
WO (1) | WO2023015802A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023015802A1 (zh) * | 2021-08-12 | 2023-02-16 | 上海艾拉比智能科技有限公司 | 一种多操作***设备的差分升级方法 |
CN117093246A (zh) * | 2023-10-19 | 2023-11-21 | 深圳市掌锐电子有限公司 | 一种虚拟机中多操作***ota ab分区升级的方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6351850B1 (en) * | 1997-11-14 | 2002-02-26 | Frank Van Gilluwe | Computer operating system installation |
US8495612B2 (en) * | 2011-10-21 | 2013-07-23 | International Business Machines Corporation | Systems and methods for upgrading a version of software |
KR102204115B1 (ko) * | 2016-04-27 | 2021-01-18 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 패치 업그레이드 기반 파일 처리 방법 및 디바이스, 단말기, 및 저장 매체 |
CN106445615A (zh) * | 2016-10-12 | 2017-02-22 | 北京元心科技有限公司 | 多***ota升级的方法及装置 |
CN113641394A (zh) * | 2021-08-12 | 2021-11-12 | 上海艾拉比智能科技有限公司 | 一种多操作***设备的差分升级方法 |
-
2021
- 2021-08-12 CN CN202110925726.6A patent/CN113641394A/zh active Pending
- 2021-12-15 WO PCT/CN2021/138531 patent/WO2023015802A1/zh active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023015802A1 (zh) * | 2021-08-12 | 2023-02-16 | 上海艾拉比智能科技有限公司 | 一种多操作***设备的差分升级方法 |
CN117093246A (zh) * | 2023-10-19 | 2023-11-21 | 深圳市掌锐电子有限公司 | 一种虚拟机中多操作***ota ab分区升级的方法 |
CN117093246B (zh) * | 2023-10-19 | 2024-02-23 | 深圳市掌锐电子有限公司 | 一种虚拟机中多操作***ota ab分区升级的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2023015802A1 (zh) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102799464B (zh) | 虚拟机创建方法及***、虚拟机重装方法及*** | |
US10592354B2 (en) | Configurable recovery states | |
US20170329593A1 (en) | INPLACE RETURN TO FACTORY INSTALL (iRTFI) | |
US10346150B2 (en) | Computerized system and method for patching an application by separating executables and working data using different images | |
CN113641394A (zh) | 一种多操作***设备的差分升级方法 | |
CN108509215B (zh) | 一种***软件的更换方法、装置、终端设备及存储介质 | |
CN111258666B (zh) | 计算机文件的读取方法、装置、计算机***及存储介质 | |
CN111562934B (zh) | 一种基于热补丁的软件***升级方法、终端及存储介质 | |
CN116049207A (zh) | 应用程序sql脚本处理方法、装置、处理器及电子设备 | |
CN114756290A (zh) | 一种操作***安装方法、设备及可读存储介质 | |
US9588884B2 (en) | Systems and methods for in-place reorganization of device storage | |
CN117170802A (zh) | 基于信创平台的快速制作操作***镜像的方法、***、设备及介质 | |
CN112214231A (zh) | 一种基于ci的虚拟化软件升级包生成方法及*** | |
KR20180023575A (ko) | 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 | |
CN111506389A (zh) | 一种虚拟机启动方法及装置 | |
US10564894B2 (en) | Free space pass-through | |
WO2023092430A1 (zh) | 一种虚拟机初始化方法、装置、终端设备及存储介质 | |
JP7522775B2 (ja) | 不揮発性記憶区画識別子 | |
CN114510375A (zh) | 一种Flash芯片数据区域动态共享***及方法 | |
CN112579113A (zh) | 应用程序的升级方法、装置、存储介质及终端 | |
CN116028100B (zh) | 软件版本升级方法和电子设备 | |
CN115640269B (zh) | 一种基于按需复制的安卓应用安装加速方法 | |
US20230350755A1 (en) | Coordinated operating system rollback | |
CN112395013B (zh) | 一种修正云硬盘bpb参数的方法及电子设备 | |
WO2023060976A1 (zh) | 嵌入式文件***的文件读写方法、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |