CN116909477A - 存储分区的更新方法、装置、电子设备及存储介质 - Google Patents

存储分区的更新方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116909477A
CN116909477A CN202310871685.6A CN202310871685A CN116909477A CN 116909477 A CN116909477 A CN 116909477A CN 202310871685 A CN202310871685 A CN 202310871685A CN 116909477 A CN116909477 A CN 116909477A
Authority
CN
China
Prior art keywords
file
partition
target
recovery
updating
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
CN202310871685.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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202310871685.6A priority Critical patent/CN116909477A/zh
Publication of CN116909477A publication Critical patent/CN116909477A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种存储分区的更新方法、装置、电子设备及存储介质。属于终端更新技术领域,该方法包括:在终端处于正常模式下,获取目标存储分区对应的目标修复文件,目标存储分区的更新文件在正常模式下为只读状态,目标修复文件是更新文件中异常文件的修复文件;将目标修复文件覆盖在异常文件上层,目标修复文件的文件名与异常文件的文件名相同,且目标修复文件的读取优先级高于异常文件的读取优先级;基于读取到的目标修复文件,对目标存储分区进行更新。该方法使得终端可以在正常模式下对目标存储分区进行无感知更新,解决了在恢复模式异常或者无法进入的情况下,终端系统无法升级的问题,保障了终端系统存储分区的升级更新能力。

Description

存储分区的更新方法、装置、电子设备及存储介质
技术领域
本申请涉及终端更新技术领域,并且更具体地,涉及终端更新领域中的存储分区的更新方法、装置、电子设备及存储介质。
背景技术
Android系统存在正常(Normal)模式和恢复(Recovery)模式两种独立的模式,Normal模式为Android主系统,终端平时绝大部分使用场景均在Normal模式下进行;Recovery模式则是一个精简的子系统,主要用于对主系统进行升级。
目前,当终端需要升级主系统时,首先从服务器处下载系统升级包,下载完成且接收到对主系统的升级指令后,终端重启进入Recovery模式,并在Recovery模式下对系统升级包进行安装,以更新主系统,更新完成后,终端重启进入新的主系统。
显然,若Recovery模式异常或者无法进入,则终端也就失去对主系统的更新能力。
发明内容
本申请提供了一种存储分区的更新方法、装置、电子设备及存储介质,该方法能够在恢复模式异常或者无法进入时,仍然可以实现对存储分区的更新升级,保障了终端系统的更新升级能力。
一方面,提供了一种存储分区的更新方法,所述方法包括:
在终端处于正常模式下,获取目标存储分区对应的目标修复文件,所述目标存储分区的更新文件在所述正常模式下为只读状态,所述目标修复文件是所述更新文件中异常文件的修复文件;
将所述目标修复文件覆盖在所述异常文件上层,所述目标修复文件的文件名与所述异常文件的文件名相同,且所述目标修复文件的读取优先级高于所述异常文件的读取优先级;
基于读取到的所述目标修复文件,对所述目标存储分区进行更新。
一方面,提供了一种存储分区的更新装置,所述装置包括:
第一获取模块,用于在终端处于正常模式下,获取目标存储分区对应的目标修复文件,所述目标存储分区的更新文件在所述正常模式下为只读状态,所述目标修复文件是所述更新文件中异常文件的修复文件;
覆盖模块,用于将所述目标修复文件覆盖在所述异常文件上层,所述目标修复文件的文件名与所述异常文件的文件名相同,且所述目标修复文件的读取优先级高于所述异常文件的读取优先级;
更新模块,用于基于读取到的所述目标修复文件,对所述目标存储分区进行更新。
一方面,提供一种电子设备,所述电子设备包括存储器、处理器以及存储在该存储器中并在该处理器上运行的计算机程序,其中,该处理器执行该计算机程序时,使得该电子设备执行上述方面任意一种可能的实现方式中的方法。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机或处理器上运行时,使得该计算机或处理器执行上述第一方面或第一方面任意一种可能的实现方式中的方法。
一方面,提供了一种计算机程序产品,该计算机程序产品或计算机程序包括程序代码,该程序代码存储在计算机可读存储介质中,电子设备的处理器从计算机可读存储介质读取该程序代码,处理器执行该程序代码,使得该电子设备执行上述存储分区的更新方法。
本申请实施例提供的技术方案可以带来如下有益效果:
本申请实施例提供了一种对目标存储分区进行热修复的方式:针对正常模式下无法修改目标存储分区对应更新文件(更新文件在正常模式下仅具备只读权限)的情况,通过将目标修复文件覆盖在更新文件中异常文件的上层,且设置目标修复文件和异常文件设置为同名文件,目标修复文件的读取优先级高于异常文件。使得在无须修改只读异常文件的基础上,终端仍然可以优先读取到用于修改异常文件的目标修复文件,并使用目标修复文件对目标存储分区进行更新。而且,由于终端读取到目标修复文件的过程中未直接修改或替换异常文件,在终端正常模式下也可以进行该使用目标修复文件覆盖异常文件,以及对目标存储分区进行更新,因此,终端也就无须进入恢复模式对只读文件进行修改,以及进入恢复模式对目标存储分区进行更新,可以实现在正常模式下对目标存储分区的无感知更新;此外,可以在正常模式下对目标存储分区进行无感知更新,也可以解决在恢复模式异常或者无法进入的情况下,终端系统无法升级的问题,保障了终端系统存储分区的升级更新能力。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种存储分区的更新方法的示意性流程图;
图2是本申请实施例提供的另一种存储分区的更新方法的示意性流程图;
图3是本申请实施例提供的一种修复补丁包的结构示意图;
图4是本申请实施例提供的另一种存储分区的更新方法的示意性流程图;
图5是本申请实施例提供的一种对恢复分区进行修复更新的过程示意图;
图6是本申请实施例提供的一种存储分区的更新装置的结构示意图;
图7是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,“多个”是指两个或多于两个。术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。
具备Android系统的终端存在正常模式和恢复模式两种独立模式,正常模式是终端正常使用过程中所处的模式,比如,用户正常使用终端中的应用程序即在正常模式下进行的;而恢复模式需要通过特殊按键进入,主要用于对正常模式进行升级更新;示例性的,当终端对主系统进行升级时,可以在下载完成安装包后,进入恢复模式,并在恢复模式下进行安装包的更新和写入,更新完后重启进入新的主系统。
由于在主系统升级时,往往是需要对系统分区中的只读文件进行替换或修改,而系统分区在正常模式下是无法修改相关只读文件的,仅在恢复模式下可以被修改,因此,若需要对主系统进行升级,就必须进入恢复模式才可以完成。
若恢复模式异常或者无法进入,终端就无法对主系统进行正常升级,失去对主系统的升级能力;而且,若需要修复异常的恢复模式,也需要对恢复模式对应恢复分区的更新文件进行修复,而该更新文件在正常模式下也仅具备只读权限,也就是说,也需要终端进入恢复模式下,才有可能对恢复模式进行修复。
综上,目前在恢复模式异常或者无法进入时,终端无法自主对恢复模式进行修复,恢复模式无法恢复正常,终端也无法正常对主系统进行升级更新,终端也就失去了对各个系统的升级更新能力。
针对上述问题,本申请提供了一种热修复终端中存储分区的方式,使得终端可以在正常模式下实现对存储分区的更新,而无须进入恢复模式。对应在恢复模式异常或无法进入的情况下,终端也可以进行正常的系统升级更新。
图1是本申请实施例提供的一种存储分区的更新方法的示意性流程图。
应理解,本申请实施例提供的一种存储分区的更新方法可以应用于电子设备。在一些实施例中,该电子设备可为用户终端或终端,包括但不限于:个人电脑、平板电脑、计算设备或连接到无线调制解调器的其它处理设备等。该电子设备还可为服务器。本申请实施例以电子设备是终端为例进行示例性说明。
示例性的,如图1所示,该方法100包括:
步骤101,在终端处于正常模式下,获取目标存储分区对应的目标修复文件,目标存储分区的更新文件在正常模式下为只读状态,目标修复文件是更新文件中异常文件的修复文件。
其中,正常模式(Normal Mode)是终端正常启动后所进入的主系统,即用户正常使用终端的系统。终端正常启动为终端处于关机状态下按电源键启动。在正常模式下,用户可以正常使用终端的各类应用和服务功能。恢复模式(Recovery Mode)主要用于对主系统进行升级。通过用户特定触发操作,终端会自动重启后进入恢复模式。该特定触发操作可以是对特定组合按键的触发操作,比如,通过按压电源键+音量键进入恢复模式。
可选地,在正常模式下,目标存储分区对应的更新文件仅具备只读权限,且该更新文件仅在终端进入恢复模式下才具备修改权限;也即该更新文件在正常模式下为只读状态,终端无法在正常模式下对该更新文件进行替换或者修改,若需要对更新文件进行修改或替换,终端需要重启进入恢复模式。示例性的,该目标存储分区可以是恢复模式(Recovery Mode)下对应的恢复分区,恢复分区对应的更新文件存储在系统分区中;也可以是正常模式下对应的系统分区;也可以是其他具备文件系统的存储分区,本实施例对目标存储分区的具体名称不构成限定。
以目标存储分区是恢复分区为例,在需要对恢复分区进行更新升级时,需要修改或替换恢复分区对应的更新文件,而更新文件仅在恢复模式下具备修改权限,则终端需要重启进入恢复模式,才可以在恢复模式下更新文件进行修改或替换,进而对恢复分区进行更新升级;同理,若目标存储分区是系统分区,在需要对系统分区(主系统)进行升级时,也需要进入恢复模式,在恢复模式下对更新文件进行修改或替换,并对主系统进行更新升级,进而重启进入新的主系统。因此,针对上述目标存储分区的更新升级过程,均需要进入恢复模式,若恢复模式异常或者无法进入,终端无法修复恢复分区,也无法继续更新主系统,终端失去了对系统的升级更新能力。
针对上述问题(在恢复模式异常或者无法进入,终端失去了对系统的升级更新能力),本申请实施例提供了一种基于Overlayfs(堆叠文件系统)热修复目标存储分区的方式,在目标存储分区对应的更新文件存在异常文件(该异常文件导致目标存储分区存在异常情况)的情况下,开发人员可以编译并发布对目标存储分区进行更新的修复补丁包,对应终端从服务器处下载得到该修复补丁包,并从修复补丁包中获取对异常文件进行修复的目标修复文件。也即目标修复文件是目标存储分区对应更新文件中异常文件的修复文件,使得可以通过目标修复文件对目标存储分区进行热修复。
步骤102,将目标修复文件覆盖在异常文件上层,目标修复文件的文件名与异常文件的文件名相同,且目标修复文件的读取优先级高于异常文件的读取优先级。
由于在正常模式下无法修改或替换仅具备只读权限的更新文件,若需要对更新文件中的异常文件进行修改或替换,需要进入恢复模式,对应无法在正常模式下对目标存储分区进行更新升级;而本申请中,为了可以在恢复模式异常或者无法启动时仍然可以对目标存储分区进行更新升级,也即使得终端可以在正常模式下对目标存储分区进行更新,采用特殊的文件存储方式:在终端获取到目标恢复文件后,通过覆盖(Overlay)方式存储目标修复文件,将目标修复文件覆盖在异常文件上层,且设置目标修复文件的文件名与异常文件的文件名相同,目标修复文件的读取优先级高于异常文件的读取优先级。
在将目标修复文件覆盖在异常文件上层后,目标修复文件并未直接替换或修改异常文件,也即异常文件仍然存储在系统分区中,以达到不修改只读文件仍然可以将目标修复文件更新至更新文件中的目的。由于未修改或替换只读状态的异常文件,终端也就无须进入恢复模式,可以直接在正常模式下进行目标存储分区的更新;而且,设置目标修复文件和异常文件同名,且目标修复文件的读取优先级高于异常文件,使得后续终端在对目标存储分区进行更新时,可以无感知得优先读取到同名的目标修复文件,而不继续读取异常文件,进而实现根据目标修复文件对目标存储分区进行更新的目的。
步骤103,基于读取到的目标修复文件,对目标存储分区进行更新。
一种可能的实施方式中,在终端存在对目标存储分区的更新需求时,可以读取目标修复文件,并使用目标修复文件,在正常模式下对目标存储分区进行无感知的修复,而无须进入恢复模式。
针对终端对目标存储分区进行更新的时机,可以是终端从服务器处下载到目标存储分区的修复补丁包后,立即从中解压缩得到目标修复文件,并将目标修复文件覆盖在异常文件上层,覆盖完毕后,立即读取目标修复文件,以对目标存储分区进行更新。也即终端在下载到对目标存储分区的修复补丁包后,立即对目标存储分区进行更新。可选地,在目标存储分区是恢复分区的情况下,当终端从服务器处下载修复补丁包后,可以无须立即对目标存储分区进行更新,而是在终端具备进入恢复模式的需求之前,对目标存储分区进行更新。也就是说,在目标存储分区是恢复分区的情况下,必须保证在下次进入恢复模式之前对恢复分区更新完毕,以避免恢复分区异常而无法进入的情况。可选地,终端还可以接收用户对目标存储分区的更新操作,从而触发对目标存储分区进行更新。本实施例对目标存储分区的更新时机不构成限定。
综上所述,本申请实施例提供了一种对目标存储分区进行热修复的方式:针对正常模式下无法修改目标存储分区对应更新文件(更新文件在正常模式下仅具备只读权限)的情况,通过将目标修复文件覆盖在更新文件中异常文件的上层,且设置目标修复文件和异常文件设置为同名文件,目标修复文件的读取优先级高于异常文件。使得在无须修改只读异常文件的基础上,终端仍然可以优先读取到用于修改异常文件的目标修复文件,并使用目标修复文件对目标存储分区进行更新。而且,由于终端读取到目标修复文件的过程中未直接修改或替换异常文件,在终端正常模式下也可以进行该使用目标修复文件覆盖异常文件,以及对目标存储分区进行更新,因此,终端也就无须进入恢复模式对只读文件进行修改,以及进入恢复模式对目标存储分区进行更新,可以实现在正常模式下对目标存储分区的无感知更新;此外,可以在正常模式下对目标存储分区进行无感知更新,也可以解决在恢复模式异常或者无法进入的情况下,终端系统无法升级的问题,保障了终端系统存储分区的升级更新能力。
为了实现可以优先读取到异常文件的目标修复文件,还需要保障目标修复文件的挂载位置与异常文件的文件存储路径一致,从而保证终端在按文件顺序读取时,优先读取到目标修复文件,且在目标修复文件和异常文件同名的情况下,不会读取到异常文件。
图2是本申请实施例提供的另一种存储分区的更新方法的示意性流程图。本申请实施例以电子设备是终端为例进行示例性说明。
示例性的,如图2所示,该方法200包括:
步骤201,在终端处于正常模式下,获取目标存储分区对应的目标修复文件,目标存储分区的更新文件在正常模式下为只读状态,目标修复文件是更新文件中异常文件的修复文件。
步骤201的实施方式可以参考步骤101,本申请实施例在此不做赘述。
步骤202,获取目标修复文件的文件挂载目录。
在目标修复文件覆盖在异常文件上层存储后,终端还需要通过读取该目标修复文件,才可以执行后续基于目标修复文件对恢复分区进行更新的步骤。而由于本申请实施例在存储目标修复文件时,并未直接使用目标修复文件替换掉异常文件,则为了使得终端在读取恢复分区对应的更新文件时,可以准确读取到目标修复文件,对目标修复文件的文件挂载目录存在要求,也即需要保证目标修复文件的文件挂载目录与异常文件的文件存储路径保持一致,从而在按照异常文件的文件存储路径去读取异常文件时,可以优先读取到挂载在相同位置处、名字相同且读取优先级更高的目标修复文件。因此,在一种可能的实施方式中,开发人员在编译目标存储分区的修复补丁包时,会根据异常文件的文件存储路径,在修复补丁包中配置目标修复文件的文件挂载目录,以便终端从服务器处下载到修复补丁包后,可以从修复补丁包中获取到目标修复文件所需挂载的文件挂载目录。
图3是本申请实施例提供的一种修复补丁包的结构示意图。如图3所示,以目标修复文件是恢复分区对应更新文件为例,修复补丁包(Ovl_update_recovery.zip)中,META-INF/是修复补丁包的签名校验文件;opex.cfg是Overlay挂载配置文件,用于校验该修复补丁包是否适用于当前终端设备,同时也配置了该修复补丁包Overlay挂载的文件挂载目录。Opex.img是Overlay的包资源文件(对应目标修复文件),将需要升级的系统分区文件打包成的ext4镜像,其最终会Overlay挂载到终端设备中系统分区的对应目录,从而替换系统分区中的同名文件。可选的,需要Overlay挂载的具体文件包括“Vendor/recovery-from-boot.p(差分文件)+Install-recovery.sh(脚本文件)”。
步骤203,基于文件挂载目录,将目标修复文件覆盖在异常文件上层,目标修复文件的文件挂载目录与异常文件的文件存储路径一致。
当终端获取到目标修复文件的文件挂载目录后,可以基于文件挂载目录,将目标修复文件挂载在异常文件上层,使得目标修复文件的文件挂载目录与异常文件的文件存储路径一致,且目标修复文件与异常文件同名且覆盖在异常文件上层。
步骤204,基于文件挂载目录,读取目标修复文件,以及停止读取异常文件。
进一步地,终端在读取目标存储分区的更新文件时,可以基于文件挂载目录,优先读取同一存储位置的目标修复文件,且由于已经读取到覆盖在上层的同名目标修复文件,终端也就停止再读取同名的异常文件。以实现在不修改异常文件的基础上,终端还可以读取到更新所需的目标修复文件。
步骤205,基于目标修复文件,对目标存储分区进行更新。
当终端读取到目标修复文件后,即可以基于目标修复文件对目标存储分区进行更新。
本实施例中,通过配置目标修复文件的文件挂载目录与异常文件的文件存储路径一致,使得终端可以在读取目标存储分区的更新文件时,可以根据异常文件的文件存储路径,优先读取到挂载在同一位置处、同名且读取优先级更高的目标修复文件,且不会继续读取异常文件,从而使用目标修复文件对目标存储分区进行更新,以实现在不修改只读状态的异常文件的基础上读取到目标修复文件的目的,进而实现在正常模式下对目标存储分区的更新目的。
若恢复模式异常或者无法进入时,终端即无法正常进行主系统升级,而恢复模式需要修复也需要进入恢复模式,则在相关技术的基础上,若恢复模式异常后,终端是无法实现对恢复模式(恢复分区)的自动修复的,可能需要人工刷机等复杂售后操作。而在上文实施例提供有不进入恢复模式可以对存储分区进行更新的方法的情况下,将该方法应用于对恢复分区的更新修复,以使得终端可以自主修复恢复模式,保障在终端有需要的情况下可以正常进入恢复模式。
图4是本申请实施例提供的另一种存储分区的更新方法的示意性流程图。本申请实施例以电子设备是终端为例进行示例性说明。示例性的,如图4所示,该方法400包括:
步骤401,在终端处于正常模式下,获取目标存储分区对应的目标修复文件,目标存储分区的更新文件在正常模式下为只读状态,目标修复文件是更新文件中异常文件的修复文件。
针对恢复模式异常无法进入,终端也无法自主对其进行修复的情况(由于修复需要进入恢复模式),在上文实施例提供了可以对目标存储分区进行热修复的方法的基础上,可以将该方法应用在对恢复模式对应恢复分区的修复过程,使得终端可以在正常模式下自主对恢复模式进行修复。
为了实现对恢复模式进行修复,对应目标存储分区是终端的恢复分区,该恢复分区是恢复模式下对应的存储分区,该恢复分区对应的更新文件存储在系统分区中,且更新文件在正常模式下仅具备只读权限。
可选地,在终端处于正常模式的情况下,若存在对恢复分区的修复需求或者更新需求,终端可以从服务器处下载恢复分区或者恢复模式对应的修复补丁包,在对修复补丁包进行校验后,进行解压缩,以得到恢复分区对应的目标修复文件,进而对目标修复文件进行挂载,以便后续基于目标修复文件对恢复分区进行修复。
图5是本申请实施例提供的一种对恢复分区进行修复更新的过程示意图。如图5所示,在编译服务器501中,开发者基于用户的原boot.img(内核镜像)和新的recovery.img(恢复镜像)编译生成Recovery更新服务所需的新recovery-from-boot.p(差分文件)和install-recovery脚本文件;并将生成的资源文件(新recovery-from-boot.p+install-recovery脚本文件)和升级配置文件(升级配置文件可以包括签名校验文件、挂载配置文件等),打包成Overlayfs修复包(也即修复补丁包);进一步地,开发者通过发布服务器502发布Overlayfs修复包;终端设备503在Normal模式下的OTA应用会定期轮询服务器查询Overlayfs修复包,当存在新的修复包时自动下载;下载完毕后,OTA应用触发Overlay挂载,修复包中的资源文件(目标修复文件)将用户当前设备中的两个文件(异常文件)覆盖;Overlay挂载完毕后设置属性,触发init进程启动Recovery更新服务,此时将使用新的资源文件更新Recovery分区。下次进Recovery模式将会使用新的Recovery启动。
可选地,开发人员在编译恢复分区升级所需的资源文件时,可以使用原生工具:build/make/tools/releasetools/make_recovery_patch_vendor.py;具体命令如下:python make_recovery_patch_vendor.py[新recovery.img][原boot.img][生成patch文件的位置][recovery.fstab],表示基于新的恢复镜像和原内核镜像,生成恢复分区升级所需的资源文件。
可选地,在终端从服务器端下载到修复补丁包后,挂载修复补丁包中的目标修复文件需要两个步骤:(1)创建/dev/block/loopxx设备,将opex.img通过loop挂载到指定目录(/mnt/opex/xx),表示对修复补丁包进行存储解压缩得到目标修复文件;(2)将步骤1挂载的目录overlay挂载到系统分区对应目录之上(mount overlay overlay/vendorlowerdir=/mnt/vendor/xx:/vendor),表示将目标修复文件按照修复补丁包中的文件挂载目录挂载到系统分区中的特定位置处。
由于目标存储分区是终端的恢复分区,该恢复分区对应恢复模式,若恢复模式异常则影响主系统的更新升级,则为了保证主系统在后续更新升级时可以正常进入恢复模式,设置在终端存在对系统分区的更新需求之前,完成对恢复分区的更新任务,以保证在更新系统分区时,可以进入更新后的恢复分区,保证主系统的顺利升级。因此,针对获取目标修复文件的方式和时机,一种可能的实施方式中,在终端处于正常模式,且确定终端存在对系统分区的更新需求的情况下,从服务器处查询是否存在修复补丁包,若存在,从服务器处下载恢复分区对应的修复补丁包;并在修复补丁包下载完成且校验通过后,对修复补丁包进行解压缩,得到恢复分区对应的目标修复文件。
其中,正常模式下对应系统分区,终端存在对系统分区的更新需求,也即终端存在对主系统的更新需求。
步骤402,将目标修复文件覆盖在系统分区中的异常文件上层,系统分区是正常模式对应的存储分区。
可选地,恢复分区对应的更新文件存储在系统分区中的只读分区中。对应在终端获取到目标修复文件后,可以根据目标修复文件的文件挂载目录,将目标修复文件挂载在系统分区中的异常文件上层。其中,目标修复文件的文件名和更新文件中异常文件的文件名相同,且目标修复文件的读取优先级高于异常文件的读取优先级。
步骤403,从系统分区中读取目标修复文件。
对应的,由于目标修复文件与异常文件的文件挂载目录一致、文件名相同,且读取优先级高于异常文件,使得在对恢复分区进行修复更新时,终端可以根据异常文件的文件存储路径,从系统分区处优先读取到同位置、同名的目标修复文件,且读取到目标修复文件后,终端也不会继续读取与目标修复文件同名的异常文件,以达到在不修改异常文件的基础上,读取到目标修复文件的目的。
步骤404,基于目标修复文件,对恢复分区进行更新。
在对恢复分区进行更新时,需要启用恢复模式更新服务,而OTA服务本身无权限启动该恢复模式更新服务,则为了实现对恢复分区的更新,终端通过配置属性触发器,并为属性触发器设置属性标识,来触发恢复模式更新服务。对应在一个示例性的例子中,步骤404可以包括步骤404A~步骤404C。
步骤404A,响应于对恢复分区的更新指令,为属性触发器设置恢复分区更新标识,属性触发器用于触发启动恢复模式更新服务,恢复模式更新服务用于更新恢复分区。
步骤404B,基于恢复分区更新标识,触发启动恢复模式更新服务。
步骤404C,调用恢复模式更新服务,基于目标修复文件,对恢复分区进行更新。
在终端存在对恢复分区的更新指令后,通过在Init.rc中配置属性触发器,并为属性触发器配置恢复分区更新标识,以使得通过属性触发器触发Init进程触发启动恢复模式更新服务,并基于目标修复文件,以实现在正常模式下对恢复分区进行更新。该属性触发器用于触发启动恢复模式更新服务。
示意性的,恢复模式更新服务名可以为vendor_flash_recovery。
可选地,在恢复模式更新服务对恢复分区进行更新时,首先基于目标修复文件,生成新的恢复镜像文件,并将新的恢复镜像文件写入恢复分区,以实现对恢复分区的更新;终端下次进入恢复模式就可以使用新的恢复分区。
示例性的,在恢复模式更新服务进行更新时,通过init进程拉起/vendor/bin/install-recovery.sh脚本,基于当前版本boot镜像的差分recovery-from-boot.p文件(目标修复文件),生成新的Recovery.img(恢复镜像文件)写入Recovery分区。
步骤405,在恢复分区更新完成的情况下,获取更新后的恢复分区的第二哈希值,第二哈希值基于更新后的恢复分区中的存储文件生成。
可选地,为了校验恢复分区是否更新成功,一种可能的实施方式中,恢复分区的修复补丁包中还配置有第一哈希值,该第一哈希值用于对恢复分区的更新结果进行校验。对应在恢复分区更新完成后,终端可以基于更新后的恢复分区中的存储文件,生成更新后的恢复分区的第二哈希值,进而通过比较第一哈希值和第二哈希值,对恢复分区的更新结果进行校验。
可选地,第一哈希值可以是开发人员在测试修复补丁包的性能时,获取基于该修复补丁包对恢复分区进行更新完成后,基于更新完成后的恢复分区处所存储的文件生成的。
步骤406,在第二哈希值与第一哈希值匹配的情况下,确定恢复分区更新成功。
可选地,在第二哈希值与第一哈希值匹配的情况下,确定恢复分区更新成功;反之,若第二哈希值与第一哈希值不匹配,则确定恢复分区更新失败。
在恢复分区更新失败后,终端可以显示第一提示消息,第一提示消息用于提醒用户恢复分区更新失败。可选地,在恢复分区更新成功后,也可以显示第二提示消息,第二提示消息用于提醒用户恢复分区更新成功,可用于后续正常进入恢复模式。
可选地,由于恢复分区更新前后恢复分区内所存储的文件存在差异,则更新前后恢复分区对应的哈希值也存在差异,则在其他可能的实施方式中,还可以通过对比恢复分区更新前后的哈希值,确定恢复分区是否更新完成。对应终端在对恢复分区进行更新之前,可以获取恢复分区对应的第三哈希值,该第三哈希值由恢复分区当前存储文件生成;在恢复分区更新之后,重新获取更新后的恢复分区的第二哈希值,进而比较第二哈希值与第三哈希值,若第二哈希值不同于第三哈希值,则表示更新后的哈希值达到预期,更新完成;反之,若第二哈希值与第三哈希值一致,则表示未完成对恢复分区的更新,恢复分区更新失败。
示例性的,对恢复分区进行更新前的第三哈希值可以为“ba713b819c1202dcb0d178df9d2b3222ba1bba44”;下发overlayfs修复包(修复补丁包)后,终端可以查看到Recovery自动触发更新;更新后Recovery的Hash达到预期:3c94a3055cefb74712aa49dc57c00c84b6f05947,则表示更新成功,整个更新过程终端未重启,且下次进Recovery恢复模式进行系统升级会使用的新的Recovery分区。
本实施例中,在目标存储分区是恢复分区的情况下,通过将目标修复文件挂载在系统分区的异常文件上层,并从系统分区处读取目标修复文件,以实现对恢复分区的自动更新修复,为恢复模式的自动更新提供了途径,也可以避免恢复模式异常无法进入,对终端主系统正常更新的影响;此外,通过设置第一哈希值,以用于在恢复分区更新完成后,对恢复分区的更新结果进行校验,以保证恢复分区的更新成功率。
图6是本申请实施例提供的一种存储分区的更新装置的结构示意图。
示例性的,如图6所示,该装置600包括:
第一获取模块601,用于在终端处于正常模式下,获取目标存储分区对应的目标修复文件,所述目标存储分区的更新文件在所述正常模式下为只读状态,所述目标修复文件是所述更新文件中异常文件的修复文件;
覆盖模块602,用于将所述目标修复文件覆盖在所述异常文件上层,所述目标修复文件的文件名与所述异常文件的文件名相同,且所述目标修复文件的读取优先级高于所述异常文件的读取优先级;
更新模块603,用于基于读取到的所述目标修复文件,对所述目标存储分区进行更新。
可选地,所述覆盖模块602,还用于:
获取所述目标修复文件的文件挂载目录;
基于所述文件挂载目录,将所述目标修复文件覆盖在所述异常文件上层,所述目标修复文件的所述文件挂载目录与所述异常文件的文件存储路径一致。
可选地,所述更新模块603,还用于:
基于所述文件挂载目录,读取所述目标修复文件,以及停止读取所述异常文件;
基于所述目标修复文件,对所述目标存储分区进行更新。
可选地,所述目标存储分区是所述终端的恢复分区;
所述覆盖模块602,还用于:
将所述目标修复文件覆盖在系统分区中的所述异常文件上层,所述系统分区是所述正常模式对应的存储分区;
所述更新模块603,还用于:
从所述系统分区中读取所述目标修复文件;
基于所述目标修复文件,对所述恢复分区进行更新。
可选地,所述更新模块603,还用于:
响应于对所述恢复分区的更新指令,为属性触发器设置恢复分区更新标识,所述属性触发器用于触发启动恢复模式更新服务,所述恢复模式更新服务用于更新所述恢复分区;
基于所述恢复分区更新标识,触发启动所述恢复模式更新服务;
调用所述恢复模式更新服务,基于所述目标修复文件,对所述恢复分区进行更新。
可选地,所述更新模块603,还用于:
基于所述目标修复文件,生成新的恢复镜像文件;
将所述新的恢复镜像文件写入所述恢复分区。
可选地,所述目标存储分区是所述终端的恢复分区;
所述第一获取模块601,还用于:
在终端处于所述正常模式,且确定所述终端存在对系统分区的更新需求的情况下,从服务器处下载所述恢复分区对应的修复补丁包,所述系统分区是所述正常模式对应的存储分区;
对所述修复补丁包进行解压缩,以得到所述恢复分区对应的所述目标修复文件。
可选地,所述修复补丁包中配置有第一哈希值,所述第一哈希值用于对所述恢复分区的更新结果进行校验;
所述装置还包括:
第二获取模块,用于在所述恢复分区更新完成的情况下,获取更新后的恢复分区的第二哈希值,所述第二哈希值基于所述更新后的恢复分区中的存储文件生成;
确定模块,用于在所述第二哈希值与所述第一哈希值匹配的情况下,确定所述恢复分区更新成功。
综上所述,本申请实施例提供了一种对目标存储分区进行热修复的方式:针对正常模式下无法修改目标存储分区对应更新文件(更新文件在正常模式下仅具备只读权限)的情况,通过将目标修复文件覆盖在更新文件中异常文件的上层,且设置目标修复文件和异常文件设置为同名文件,目标修复文件的读取优先级高于异常文件。使得在无须修改只读异常文件的基础上,终端仍然可以优先读取到用于修改异常文件的目标修复文件,并使用目标修复文件对目标存储分区进行更新。而且,由于终端读取到目标修复文件的过程中未直接修改或替换异常文件,在终端正常模式下也可以进行该使用目标修复文件覆盖异常文件,以及对目标存储分区进行更新,因此,终端也就无须进入恢复模式对只读文件进行修改,以及进入恢复模式对目标存储分区进行更新,可以实现在正常模式下对目标存储分区的无感知更新;此外,可以在正常模式下对目标存储分区进行无感知更新,也可以解决在恢复模式异常或者无法进入的情况下,终端系统无法升级的问题,保障了终端系统存储分区的升级更新能力。
图7是本申请实施例提供的一种电子设备的结构示意图。
示例性的,如图7所示,本申请中的电子设备700可以包括一个或多个如下部件:处理器710和存储器720。
处理器710可以包括一个或者多个处理核心。处理器710利用各种接口和线路连接整个电子设备700内的各个部分,通过运行或执行存储在存储器720内的指令、程序、代码集或指令集,以及调用存储在存储器720内的数据,执行电子设备700的各种功能和处理数据。可选地,处理器710可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器710可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器710中,单独通过一块基带芯片进行实现。
存储器720可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选地,该存储器720包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器720可用于存储指令、程序、代码、代码集或指令集。存储器720可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等,该操作系统可以是安卓(Android)系统(包括基于Android系统深度开发的系统)、苹果公司开发的IOS系统(包括基于IOS系统深度开发的系统)或其它系统。存储数据区还可以存储电子设备700在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
除此之外,本领域技术人员可以理解,上述附图所示出的电子设备700的结构并不构成对电子设备700的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,电子设备700中还包括射频电路、拍摄组件、传感器、音频电路、无线保真(Wireless Fidelity,WiFi)组件、电源、蓝牙组件等部件,在此不再赘述。
本申请的实施例提供的电子设备具体可以是芯片,组件或模块,该电子设备可包括相连的处理器和存储器;其中,存储器用于存储指令,当该电子设备运行时,处理器可调用并执行指令,以使芯片执行前述介绍的任意一种存储分区的更新方法。
本实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机或处理器上运行时,使得该计算机或处理器执行前述介绍的任意一种存储分区的更新方法。
本实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机或处理器上运行时,使得计算机或处理器执行上述相关步骤,以实现前述介绍的任意一种存储分区的更新方法。
其中,本实施例提供的电子设备、计算机可读存储介质、包含指令的计算机程序产品或芯片均用于执行上文所提供的对应的存储分区的更新方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (12)

1.一种存储分区的更新方法,其特征在于,所述方法包括:
在终端处于正常模式下,获取目标存储分区对应的目标修复文件,所述目标存储分区的更新文件在所述正常模式下为只读状态,所述目标修复文件是所述更新文件中异常文件的修复文件;
将所述目标修复文件覆盖在所述异常文件上层,所述目标修复文件的文件名与所述异常文件的文件名相同,且所述目标修复文件的读取优先级高于所述异常文件的读取优先级;
基于读取到的所述目标修复文件,对所述目标存储分区进行更新。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标修复文件覆盖在所述异常文件上层,包括:
获取所述目标修复文件的文件挂载目录;
基于所述文件挂载目录,将所述目标修复文件覆盖在所述异常文件上层,所述目标修复文件的所述文件挂载目录与所述异常文件的文件存储路径一致。
3.根据权利要求2所述的方法,其特征在于,所述基于读取到的所述目标修复文件,对所述目标存储分区进行更新,包括:
基于所述文件挂载目录,读取所述目标修复文件,以及停止读取所述异常文件;
基于所述目标修复文件,对所述目标存储分区进行更新。
4.根据权利要求1至3任一所述的方法,其特征在于,所述目标存储分区是所述终端的恢复分区;
所述将所述目标修复文件覆盖在所述异常文件上层,包括:
将所述目标修复文件覆盖在系统分区中的所述异常文件上层,所述系统分区是所述正常模式对应的存储分区;
所述基于读取到的所述目标修复文件,对所述目标存储分区进行更新,包括:
从所述系统分区中读取所述目标修复文件;
基于所述目标修复文件,对所述恢复分区进行更新。
5.根据权利要求4所述的方法,其特征在于,所述基于所述目标修复文件,对所述恢复分区进行更新,包括:
响应于对所述恢复分区的更新指令,为属性触发器设置恢复分区更新标识,所述属性触发器用于触发启动恢复模式更新服务,所述恢复模式更新服务用于更新所述恢复分区;
基于所述恢复分区更新标识,触发启动所述恢复模式更新服务;
调用所述恢复模式更新服务,基于所述目标修复文件,对所述恢复分区进行更新。
6.根据权利要求5所述的方法,其特征在于,所述基于所述目标修复文件,对所述恢复分区进行更新,包括:
基于所述目标修复文件,生成新的恢复镜像文件;
将所述新的恢复镜像文件写入所述恢复分区。
7.根据权利要求1至3任一所述的方法,其特征在于,所述目标存储分区是所述终端的恢复分区;
所述在终端处于正常模式下,获取目标存储分区对应的目标修复文件,包括:
在终端处于所述正常模式,且确定所述终端存在对系统分区的更新需求的情况下,从服务器处下载所述恢复分区对应的修复补丁包,所述系统分区是所述正常模式对应的存储分区;
对所述修复补丁包进行解压缩,以得到所述恢复分区对应的所述目标修复文件。
8.根据权利要求7所述的方法,其特征在于,所述修复补丁包中配置有第一哈希值,所述第一哈希值用于对所述恢复分区的更新结果进行校验;
所述方法还包括:
在所述恢复分区更新完成的情况下,获取更新后的恢复分区的第二哈希值,所述第二哈希值基于所述更新后的恢复分区中的存储文件生成;
在所述第二哈希值与所述第一哈希值匹配的情况下,确定所述恢复分区更新成功。
9.一种存储分区的更新装置,其特征在于,所述装置包括:
第一获取模块,用于在终端处于正常模式下,获取目标存储分区对应的目标修复文件,所述目标存储分区的更新文件在所述正常模式下为只读状态,所述目标修复文件是所述更新文件中异常文件的修复文件;
覆盖模块,用于将所述目标修复文件覆盖在所述异常文件上层,所述目标修复文件的文件名与所述异常文件的文件名相同,且所述目标修复文件的读取优先级高于所述异常文件的读取优先级;
更新模块,用于基于读取到的所述目标修复文件,对所述目标存储分区进行更新。
10.一种终端,其特征在于,所述终端包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时,使得所述终端执行如权利要求1至8中任意一项所述的存储分区的更新方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求1至8中任意一项所述的存储分区的更新方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任意一项所述的存储分区的更新方法。
CN202310871685.6A 2023-07-14 2023-07-14 存储分区的更新方法、装置、电子设备及存储介质 Pending CN116909477A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310871685.6A CN116909477A (zh) 2023-07-14 2023-07-14 存储分区的更新方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310871685.6A CN116909477A (zh) 2023-07-14 2023-07-14 存储分区的更新方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116909477A true CN116909477A (zh) 2023-10-20

Family

ID=88350592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310871685.6A Pending CN116909477A (zh) 2023-07-14 2023-07-14 存储分区的更新方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116909477A (zh)

Similar Documents

Publication Publication Date Title
CN105573780B (zh) 一种基于容器的移动终端操作系统升级方法和装置
CN103019775B (zh) 一种终端设备刷机的方法、装置和设备
CN112416406B (zh) 终端设备升级方法、装置、终端设备和介质
US20080216066A1 (en) Program upgrade system and method for ota-capable mobile terminal
CN107220074B (zh) 对支撑层软件功能的访问、升级方法及装置
CN110597542A (zh) 软件自动ota升级方法及装置、电子设备
CN107220085B (zh) 一种自动升级raid卡固件的方法
WO2016082450A1 (zh) 一种用户终端的升级方法和用户终端
CN117130672A (zh) 服务器启动流程控制方法、系统、终端及存储介质
CN110413292B (zh) 应用程序的轻应用安装方法、移动终端及存储介质
CN115827046A (zh) 实现spl分区ota升级的方法及装置、终端设备、芯片
CN105786636A (zh) 一种系统修复方法及装置
CN112732285B (zh) 适用于云计算linux操作系统的升级方法、装置及电子设备
CN106293790B (zh) 基于Firefox操作系统的应用程序升级方法和装置
CN110018918B (zh) 终端异常的修复方法、装置、移动终端及存储介质
CN111782236A (zh) 系统软件升级方法、装置、存储介质及一体机设备
CN109428936B (zh) App的升级方法、装置、系统、电子设备及存储介质
CN115951920A (zh) 移动设备升级方法、装置、存储单元和移动设备
CN116909477A (zh) 存储分区的更新方法、装置、电子设备及存储介质
CN107015827B (zh) 嵌入式系统及其自动运行第三方扩展程序的方法
CN112379943A (zh) Electron应用程序的插件应用方法及装置、存储介质
CN111736863A (zh) 一种软件升级方法、装置及电子设备
CN111522564A (zh) 系统升级状态的识别方法、装置和计算机可读存储介质
CN117290164B (zh) 重启时的信息记录方法、电子设备及可读存储介质
CN111949278B (zh) 一种自动安装mcs系统的方法、系统、终端及存储介质

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