CN113641394A - 一种多操作系统设备的差分升级方法 - Google Patents

一种多操作系统设备的差分升级方法 Download PDF

Info

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
Application number
CN202110925726.6A
Other languages
English (en)
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.)
Shanghai Abup Intelligent Technology Co ltd
Original Assignee
Shanghai Abup Intelligent Technology 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 Shanghai Abup Intelligent Technology Co ltd filed Critical Shanghai Abup Intelligent Technology Co ltd
Priority to CN202110925726.6A priority Critical patent/CN113641394A/zh
Publication of CN113641394A publication Critical patent/CN113641394A/zh
Priority to PCT/CN2021/138531 priority patent/WO2023015802A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version 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;
若否,则报错退出。
CN202110925726.6A 2021-08-12 2021-08-12 一种多操作系统设备的差分升级方法 Pending CN113641394A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US10949191B2 (en) * 2016-04-27 2021-03-16 Huawei Technologies Co., Ltd. Patch-upgrade-based file processing method and apparatus, terminal, and storage medium
CN106445615A (zh) * 2016-10-12 2017-02-22 北京元心科技有限公司 多系统ota升级的方法及装置
CN113641394A (zh) * 2021-08-12 2021-11-12 上海艾拉比智能科技有限公司 一种多操作系统设备的差分升级方法

Cited By (3)

* Cited by examiner, † Cited by third party
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) 一种多操作系统设备的差分升级方法
CN111258666B (zh) 计算机文件的读取方法、装置、计算机系统及存储介质
CN108509215B (zh) 一种系统软件的更换方法、装置、终端设备及存储介质
CN111562934B (zh) 一种基于热补丁的软件系统升级方法、终端及存储介质
EP3396560A1 (en) Database operating method and device
CN116049207A (zh) 应用程序sql脚本处理方法、装置、处理器及电子设备
CN114756290A (zh) 一种操作系统安装方法、设备及可读存储介质
US9588884B2 (en) Systems and methods for in-place reorganization of device storage
CN112214231A (zh) 一种基于ci的虚拟化软件升级包生成方法及系统
CN106933604B (zh) 一种系统升级方法及装置
KR20180023575A (ko) 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체
US10564894B2 (en) Free space pass-through
CN106940626B (zh) 一种获取虚拟机多磁盘间差异数据的方法和系统
CN114510375A (zh) 一种Flash芯片数据区域动态共享系统及方法
CN111506389A (zh) 一种虚拟机启动方法及装置
CN112579113A (zh) 应用程序的升级方法、装置、存储介质及终端
CN116028100B (zh) 软件版本升级方法和电子设备
CN115640269B (zh) 一种基于按需复制的安卓应用安装加速方法
US20230350755A1 (en) Coordinated operating system rollback
CN112395013B (zh) 一种修正云硬盘bpb参数的方法及电子设备
WO2023092430A1 (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