CN107643898A - 终端升级方法及装置 - Google Patents
终端升级方法及装置 Download PDFInfo
- Publication number
- CN107643898A CN107643898A CN201610578920.0A CN201610578920A CN107643898A CN 107643898 A CN107643898 A CN 107643898A CN 201610578920 A CN201610578920 A CN 201610578920A CN 107643898 A CN107643898 A CN 107643898A
- Authority
- CN
- China
- Prior art keywords
- terminal
- aku
- partition table
- upgrading
- capacity
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种终端升级方法,所述终端升级方法包括:步骤A、获取终端对应的升级包,并重启所述终端;步骤B、使用所述升级包对所述终端进行系统升级;步骤C、识别所述终端的MISC分区中是否存在预设标志位,否则转入执行步骤D,是则转入步骤E;步骤D、将所述终端的当前分区表替换为所述升级包中携带的分区表,向所述MISC分区中写入所述预设标志位,并重启所述终端后转入执行步骤B;步骤E、执行所述升级包中携带的容量调整代码,将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。本发明还公开了一种终端升级装置。本发明能够解决终端用户数据分区容量固定的问题。
Description
技术领域
本发明涉及终端技术领域,尤其涉及一种终端升级方法及装置。
背景技术
如本领域技术人员所周知的,基于安卓系统的终端通常包括系统分区和用户数据分区,其中,系统分区基本包含了整个安卓操作系统,包括安卓用户界面和所有预装的系统应用程序等;用户数据分区包含了用户的数据,如联系人、短信、设置以及用户安装的程序等。然而,在现有技术中,当终端设备写入分区表出厂后,用户是无法通过修改分区表来修改用户数据分区容量的。在实际使用中,可能终端在出厂时写入了的错误的分区表,或者是用户更换了模块化终端的用户数据分区模块,由于用户无法修改分区表,使得用户难以正常使用用户数据分区容量,存在用户数据分区容量固定的问题。
发明内容
本发明的主要目的在于提供一种终端升级方法及装置,旨在解决终端的用户数据分区容量固定的问题。
为实现上述目的,本发明提供一种终端升级方法,所述终端升级方法包括:
步骤A、获取终端对应的升级包,并重启所述终端;
步骤B、使用所述升级包对所述终端进行系统升级;
步骤C、识别所述终端的MISC分区中是否存在预设标志位,否则转入执行步骤D,是则转入步骤E;
步骤D、将所述终端的当前分区表替换为所述升级包中携带的分区表,向所述MISC分区中写入所述预设标志位,并重启所述终端后转入执行步骤C;
步骤E、执行所述升级包中携带的容量调整代码,将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。
可选地,所述获取终端对应的升级包包括:
发送升级包获取请求至预设升级服务器;
接收所述预设升级服务器基于所述升级包获取请求返回的对应所述终端的升级包。
可选地,所述在获取终端对应的升级包,并重启所述终端的步骤之前,还包括:
根据当前的升级内容生成升级包,并将升级的分区表内置到所述升级包中;
将内置有升级的分区表的升级包储存至所述预设服务器中。
可选地,所述将内置有升级的分区表的升级包储存至所述预设服务器中的步骤之前,还包括:
将内置有升级的分区表的升级包的格式转换为所述预设服务器可识别的格式;
在完成格式转换操作之后,转入执行所述将内置有升级的分区表的升级包储存至所述预设服务器中的步骤。
可选地,所述将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量的步骤之后,还包括:
删除所述MISC分区中的所述预设标志位以及获取的所述升级包。
此外,为实现上述目的,本发明还提供一种终端升级装置,所述终端升级装置包括:
获取模块,用于获取终端对应的升级包,并重启所述终端;
升级模块,用于使用所述升级包对所述终端进行系统升级;
识别模块,用于识别所述终端的MISC分区中是否存在预设标志位;
替换模块,用于在所述MISC分区中不存在所述预设标志位时,将所述终端的当前分区表替换为所述升级包中携带的分区表,向所述MISC分区中写入所述预设标志位,并重启所述终端;
所述升级模块还用于在所述替换模块重启所述终端后,再次使用所述升级包对所述终端进行系统升级;
所述识别模块还用于在所述升级模块再次使用所述升级包对所述终端进行系统升级后,识别所述MISC分区中是否存在所述预设标志位;
调整模块,用于在所述MISC分区中存在所述预设标志位时,执行所述升级包中携带的容量调整代码,将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。
可选地,所述获取模块还用于发送升级包获取请求至预设升级服务器;还用于接收所述预设升级服务器基于所述升级包获取请求返回的对应所述终端的升级包。
可选地,所述终端升级装置还包括升级包制作模块,用于根据当前的升级内容生成升级包,并将升级的分区表内置到所述升级包中;还用于将内置有升级的分区表的升级包储存至所述预设服务器中。
可选地,所述升级包制作模块还用于将内置有升级的分区表的升级包的格式转换为所述预设服务器可识别的格式;还用于在完成格式转换操作之后,将内置有升级的分区表的升级包储存至所述预设服务器中。
可选地,所述终端升级装置还包括清除模块,用于删除所述MISC分区中的所述预设标志位以及获取的所述升级包。
本发明提出的终端升级方法及装置,通过两次重启终端,两次升级终端,实现对终端的系统升级以及用户数据分区容量的调整,其中,在第一次升级时使用升级包完成对终端系统的升级,并替换终端的分区表为升级包携带的分区表;在第二次升级时,调用升级包携带的容量调整代码,将终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。相较于现有技术,本发明能够在升级终端系统的同时,对终端的用户数据分区的容量进行调整,克服了现有技术中用户数据分区的容量固定的缺陷。
附图说明
图1为本发明终端升级方法第一实施例的流程示意图;
图2为本发明终端升级装置第一实施例的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种终端升级方法,参照图1,在本发明终端升级方法的第一实施例中,该终端升级方法包括:
步骤10,获取终端对应的升级包,并重启所述终端;
需要说明的是,基于安卓系统的终端包括Boot、System、Recovery、Data、Cache、MISC分区,其中,
Boot分区使终端可以启动,它包括了内核(kerne)和ramdisk两部分。如果没有这个分区,终端通常无法启动到安卓系统。只有必要的时候,才去通过Recovery软件格式化这个分区,一旦格式化,终端只有再重新安装一个新的Boot分区,具体可以通过安装一个包含Boot分区的ROM来实现,否则无法启动安卓系统。
System分区基本包含了整个安卓操作系统,除了内核(kerne)和ramdisk。它包括安卓用户界面、和所有预装的系统应用程序。格式化这个分区,会删除整个安卓系统,但不会导致终端无法启动,仍可以通过进入Recovery模式安装一个新ROM,也就是新安卓系统。
Recovery分区可以认为是一个Boot分区的替代品,可以使终端进入Recovery模式,进行高级恢复或安卓系统维护工作。关于这个分区详细描述,可以参考CWM使用指南。
Data分区(即本实施例所要操作的用户数据分区),包含了用户的数据:如联系人、短信、设置何用户安装的程序等。格式化这个分区,本质上等同于终端恢复出厂设置,也就是终端系统第一次启动时的状态,或者是最后一次安装官方或第三方ROM后的状态。
Cache分区是安卓系统缓存区,保存系统最常访问的数据和应用程序。格式化这个分区,不会影响个人数据,只是删除了这个分区中已经保存的缓存内容,缓存内容会在后续终端使用过程中重新自动生成。
MISC分区包括了一些杂项内容:比如一些系统设置和系统功能启用禁用设置。这些设置包括CID(运营商或区域识别码)、USB设置和一些硬件设置等等。这是一个很重要的分区,如果此分区损坏或者部分数据丢失,终端的一些特定功能将无法正常工作。
本实施例提出的终端升级方法由终端升级装置执行,当应用于终端时,能够在对终端的进行系统升级的同时,对终端的用户数据分区的容量进行调整,以便于用户使用。
具体的,在本实施例中,终端升级装置对基于终端的升级指令进行侦测,其中,前述升级指令可由终端响应用户操作触发,也可由终端周期触发,或者是其他方式相应触发。
在侦测到基于终端的升级指令时,终端升级装置获取终端对应的升级包。其中,终端升级装置在获取终端对应的升级包时,可以从终端附接的外部存储器中直接获取,如从终端插入的TF卡或U盘中查找获取(前提是用户预先操作终端获取对应的升级包,并相应储存在终端附接的这些外部存储器中);也可以基于预设的支持FOTA(Firmware Over-The-Air,终端的空中下载软件升级)技术的服务器查找获取终端对应的升级包,并储存在终端的外部存储器中。在本实施例中,具体采用何种方式获取到终端对应的升级包,本实施例不做具体限制,本领域技术人员可以根据实际需要进行选择。
在获得终端对应的升级包之后,终端升级装置重启终端,以切换终端至Recovery模式,其中,Recovery模式类似于Windows PE,在终端进入Recovery模式后,终端升级装置可以对终端内部的数据或系统进行修改,如进行刷机和恢复出厂设置等操作。
步骤20,使用所述升级包对所述终端进行系统升级;
在所述终端完成重启并进入到Recovery模式之后,终端升级装置使用获取的升级包对终端进行系统升级,此处,终端升级装置执行的升级操作可参照现有技术相应执行,包括校验终端的源系统版本等操作。
步骤30,识别所述终端的MISC分区中是否存在预设标志位,否则转入执行步骤S40,是则转入步骤S50;
在使用获取的升级包完成终端的系统升级之后,终端升级装置识别终端的MISC分区中是否存在预设标志位,其中,预设标志位在本实施例中用于标识终端的分区表已替换。
容易理解的是,由于此时为首次进入Recovery模式,终端的分区表并为修改,MISC分区将不会存在该预设标志位,此时转入执行步骤S40。
步骤40,将所述终端的当前分区表替换为所述升级包中携带的分区表,向所述MISC分区中写入所述预设标志位,并重启所述终端后转入执行步骤S20;
在本实施例中,当MISC分区中不存在前述预设标志位时,终端升级装置替换终端当前的分区表,实现分区表的升级。
具体的,终端升级装置从前述获取的升级包中解析出升级的分区表,将终端的当前分区表替换为解析出的升级的分区表。基于前述描述,本领域技术人员可以理解的是,由于本实施例通过MISC分区中的预设标志位表征终端分区表的替换状态,此时,终端升级装置将前述预设标志位写入MISC分区。
在向MISC分区中写入前述预设标志位之后,再次重启所述终端,并切换终端至Recovery模式,转入执行步骤S20,再次执行升级操作。可以理解的是,在当次执行升级操作时,由于之前已经完成了对终端的系统升级,终端的版本号已经与升级包的版本号一致,当次对终端的源版本进行校验之后,即完成当次的升级操作,并未对终端进行实质上的升级。
在完成升级操作后,再次转入执行步骤S30,识别终端的MISC分区中是否存在预设标志位。基于前述描述,本领域技术人员可以理解的是,终端升级装置在对终端进行第一次升级操作时,已经将终端的分区表替换为升级包中携带的升级的升级包吗,并相应向MISC分区中写入了前述预设标志位。显然的,当次识别操作的识别结果包括:终端的MISC分区中存在前述预设标志位,此时,转入执行步骤50。
步骤50,执行所述升级包中携带的容量调整代码,将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。
在本实施例中,当识别到终端的MISC分区中存在前述预设标志位,说明终端的分区表已被替换,此时,终端升级装置调用升级包中的携带的预先写入的容量调整代码,将终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量,从而完成用户数据分区容量的调整。其中,在具体实施时,前述容量调整代码的执行可以resize进程的形式体现。
简而言之,本实施例在对终端进行系统升级时,首先控制终端进入到Recovery模式,按照正常升级流程,对终端中的原版本数据进行校验,在校验通过后就会先升级所有的镜像数据,最后升级分区表,并向MISC分区写入一个标志位,指示终端重启后第二次进入recovery模式,在终端重启后第二次进入到Recovery模式之后,重新执行一遍升级流程,实际上只是校验一下是否已经升级到目标版本,校验通过后,把升级包中携带的容量调整代码复制到终端的/tmp目录下面,并给予其运行所需要的所有权限,然后执行该容量调整代码,将终端的用户数据分区的容量调整为升级后的分区表中用户数据分区的容量,再次重启终端并正常开机后,用户即可使用调整后的用户数据分区容量。
可选地,在其他实施例中,若升级包中携带的分区表中System分区的容量和用户数据分区的容量均有变化,即需要改变System分区的容量大小,又要改变用户数据分区的容量大小,则在对终端的升级过程中,使用整system镜像填充system分区,然后调用mkfs进程对剩下的用户数据分区重新格式化,生成新的大小的ext4文件系统。
本实施例提出的终端升级方法,通过两次重启终端,两次升级终端,实现对终端的系统升级以及用户数据分区容量的调整,其中,在第一次升级时使用升级包完成对终端系统的升级,并替换终端的分区表为升级包携带的分区表;在第二次升级时,调用升级包携带的容量调整代码,将终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。相较于现有技术,本发明能够在升级终端系统的同时,对终端的用户数据分区的容量进行调整,克服了现有技术中用户数据分区的容量固定的缺陷。
进一步地,基于第一实施例,提出本发明终端升级方法的第二实施例,在本实施例中,所述获取终端对应的升级包包括:
发送升级包获取请求至预设升级服务器;
接收所述预设升级服务器基于所述升级包获取请求返回的对应所述终端的升级包。
需要说明的是,FOTA是指通过云端升级技术,为具有连网功能的终端,如手机、平板电脑、便携式媒体播放器、移动互联网设备等提供系统升级服务,能够使用网络以按需、易扩展的方式获取到终端的系统升级包,并通过FOTA进行云端升级,完成终端系统的修复和优化。本实施例考虑到FOTA的前述优点,采用FOTA进行终端的系统升级。以下仅针对该区别进行说明,其他可参照前述实施例,此处不再赘述。
在本实施例中,在获取终端对应的升级包时,终端升级装置具体发送升级包获取请求至预设升级服务器,以供该预设升级服务器在接收到升级包获取请求时,查找到其本地预存的前述终端对应的升级包,并将查找到的终端对应的升级包返回至前述终端,由终端升级装置对终端进行系统升级。其中,预设升级服务器包括为终端提供FOTA升级服务服务的FOTA服务器和其他提供数据储存服务的数据服务器等。
在相应的,在基于终端接收到前述预设升级服务器返回的终端对应的升级包之后,使用该升级包对终端进行系统升级,以及用户数据分区容量的调整,具体可参照前述实施例,此处不再赘述。
进一步地,在本实施例中,步骤10之前,还包括:
根据当前的升级内容生成升级包,并将升级的分区表内置到所述升级包中;
将内置有升级的分区表的升级包储存至所述预设服务器中。
需要说明的是,本实施例的终端升级装置包括两部分,其一用于对终端进行系统升级,其二用于制作升级用的升级包。
具体的,终端升级装置根据当前的升级内容制作生成升级包,并将升级的分区表内置到新生成的升级包中。其中,当前的升级内容即新旧系统版本的差别。
可选地,为提升操作效率,可以向Google提供的做包脚本文件ota_from_target_files.py中添加新的代码,用于实现将分区表从构建版本中拷贝到升级包中,并且写入容量调整代码让分区表能够升级。相应的,在制作升级包时,可直接执行修改后的做包脚本,实现升级包的快速生成,以及分区表的内置。
可选地,在内置升级的分区表到升级包中时,具体可内置主/备分区表到升级包中,以作冗余备份。
进一步地,终端升级装置还需要在在install.c下面添加新的函数:RegisterFunction("update_partition_table",UpdatePtableFn),用于真正执行前述添加的容量调整代码。由于终端版本存放分区表的逻辑分区是确认已知的,所以只要打开固定物理逻辑分区号,写入存放在升级包中的两个分区表即可实现分区表的升级。此外,为确保分区表写入成功,还需要调用fsync命令将分区表同步到终端的存储设备上面。
进一步地,由于本实施例采用FOTA的方式进行系统升级,为确保前述预设服务器能够正确识别升级的升级包,在本实施例中,所述将内置有升级的分区表的升级包储存至所述预设服务器中的步骤之前,还包括:
将内置有升级的分区表的升级包的格式转换为所述预设服务器可识别的格式;
在完成格式转换操作之后,转入执行所述将内置有升级的分区表的升级包储存至所述预设服务器中的步骤。
具体的,在本实施例中,在完成分区表的内置之后,终端升级装置并不立即将内置有升级的分区表的升级包储存至前述预设升级服务器,而是先将内置有升级的分区表的升级包的格式转换为所述预设服务器可识别的格式,例如,将内置有升级的分区表的升级包的格式的转换为FOTA服务器可识别的upc格式。
在完成对升级包的格式转换操作之后,终端升级装置将内置有升级的分区表的升级包储存至所述预设服务器中,以供触发终端的升级操作时,相应获取升级,具体可参照前述实施例,此处不再赘述。
此外,在将内置有升级的分区表的升级包储存至所述预设服务器中的同时,将需要升级的终端的终端标识与该升级包关联,使得在终端升级时,终端升级装置能够获取到其所在终端对应的升级包,终端升级装置发送的升级包获取请求中携带有其所在终端的终端标识,用于供前述预设升级服务器相应查找到终端对应的升级包并返回。其中,终端标识用于唯一标识终端,在具体实施时,可以选择终端的IMEI(International MobileEquipment Identity,国际移动设备标识)用作其终端标识。
可选地,前述预设服务器还可以在侦测到新储存的升级包(即内置有升级的分区表的升级包)时,发送升级的提示信息至对应的终端,由终端展示给用户,以提示用户下载升级包进行系统升级。
进一步地,基于前述第一或第二实施例,提出本发明终端升级方法的第三实施例,在本实施例中,步骤50之后,还包括:
删除所述MISC分区中的所述预设标志位以及获取的所述升级包。
基于前述描述,本领域技术人员可以理解的是,终端升级装置在升级过程中通过MISC分区中是否存在前述预设标志位,对终端的分区表是否完成升级进行判断。若在完成当次升级操作(包括终端的系统升级以及用户数据区容量的调整)后,未清除当次升级操作写入MISC分区中的预设标志位,在下次升级时,将导致用户数据分区的容量无法调整。因此,本实施例在前述实施例的基础上,在完成终端的升级操作之后,增加了删除终端的MISC分区中所添加的预设标志位的操作。
此外,由于外部存储空间具有物理存储上限,当容量满时,将不能正常提供储存服务,也就无法用于存储升级包。因此,本实施例中,在完成终端的升级操作之后,外部存储空间中储存的升级包显然没有继续存储的必要,终端升级装置还可直接删除外部存储空间中储存的当次升级操作所获取的升级包,以避免外部存储空间的容量浪费。
本发明还提供一种执行前述终端升级方法的终端升级装置,参照图2,对应于前述终端升级方法的第一实施例,在本发明终端升级装置的第一实施例中,所述终端升级装置包括:
获取模块10,用于获取终端对应的升级包,并重启所述终端;
需要说明的是,基于安卓系统的终端包括Boot、System、Recovery、Data、Cache、MISC分区,其中,
Boot分区使终端可以启动,它包括了内核(kerne)和ramdisk两部分。如果没有这个分区,终端通常无法启动到安卓系统。只有必要的时候,才去通过Recovery软件格式化这个分区,一旦格式化,终端只有再重新安装一个新的Boot分区,具体可以通过安装一个包含Boot分区的ROM来实现,否则无法启动安卓系统。
System分区基本包含了整个安卓操作系统,除了内核(kerne)和ramdisk。它包括安卓用户界面、和所有预装的系统应用程序。格式化这个分区,会删除整个安卓系统,但不会导致终端无法启动,仍可以通过进入Recovery模式安装一个新ROM,也就是新安卓系统。
Recovery分区可以认为是一个Boot分区的替代品,可以使终端进入Recovery模式,进行高级恢复或安卓系统维护工作。关于这个分区详细描述,可以参考CWM使用指南。
Data分区(即本实施例所要操作的用户数据分区),包含了用户的数据:如联系人、短信、设置何用户安装的程序等。格式化这个分区,本质上等同于终端恢复出厂设置,也就是终端系统第一次启动时的状态,或者是最后一次安装官方或第三方ROM后的状态。
Cache分区是安卓系统缓存区,保存系统最常访问的数据和应用程序。格式化这个分区,不会影响个人数据,只是删除了这个分区中已经保存的缓存内容,缓存内容会在后续终端使用过程中重新自动生成。
MISC分区包括了一些杂项内容:比如一些系统设置和系统功能启用禁用设置。这些设置包括CID(运营商或区域识别码)、USB设置和一些硬件设置等等。这是一个很重要的分区,如果此分区损坏或者部分数据丢失,终端的一些特定功能将无法正常工作。
本实施例提出的终端升级装置在应用于终端时,能够在对终端的进行系统升级的同时,对终端的用户数据分区的容量进行调整,以便于用户使用。
具体的,在本实施例中,终端升级装置的获取模块10对基于终端的升级指令进行侦测,其中,前述升级指令可由终端响应用户操作触发,也可由终端周期触发,或者是其他方式相应触发。
在侦测到基于终端的升级指令时,获取模块10获取终端对应的升级包。其中,获取模块10在获取终端对应的升级包时,可以从终端附接的外部存储器中直接获取,如从终端插入的TF卡或U盘中查找获取(前提是用户预先操作终端获取对应的升级包,并相应储存在终端附接的这些外部存储器中);也可以基于预设的支持FOTA(Firmware Over-The-Air,终端的空中下载软件升级)技术的服务器查找获取终端对应的升级包,并储存在终端的外部存储器中。在本实施例中,具体采用何种方式获取到终端对应的升级包,本实施例不做具体限制,本领域技术人员可以根据实际需要进行选择。
在获得终端对应的升级包之后,获取模块10重启终端,以切换终端至Recovery模式,其中,Recovery模式类似于Windows PE,在终端进入Recovery模式后,终端升级装置可以对终端内部的数据或系统进行修改,如进行刷机和恢复出厂设置等操作。
升级模块20,用于使用所述升级包对所述终端进行系统升级;
在所述终端完成重启并进入到Recovery模式之后,升级模块20使用获取模块10获取的升级包对终端进行系统升级,此处,升级模块20执行的升级操作可参照现有技术相应执行,包括校验终端的源系统版本等操作。
识别模块30,用于识别所述终端的MISC分区中是否存在预设标志位;
在升级模块20使用获取模块10获取的升级包完成终端的系统升级之后,识别模块30识别终端的MISC分区中是否存在预设标志位,其中,预设标志位在本实施例中用于标识终端的分区表已替换。
容易理解的是,由于此时为首次进入Recovery模式,终端的分区表并为修改,MISC分区将不会存在该预设标志位,此时识别模块30指示替换模块40执行分区表的替换操作。
替换模块40,用于在所述MISC分区中不存在所述预设标志位时,将所述终端的当前分区表替换为所述升级包中携带的分区表,向所述MISC分区中写入所述预设标志位,并重启所述终端;
所述升级模块20还用于在所述替换模块40重启所述终端后,再次使用所述升级包对所述终端进行系统升级;
所述识别模块30还用于在所述升级模块20再次使用所述升级包对所述终端进行系统升级后,识别所述MISC分区中是否存在所述预设标志位;
在本实施例中,当MISC分区中不存在前述预设标志位时,终端升级装置替换终端当前的分区表,实现分区表的升级。
具体的,在接收到识别模块30传输的执行替换操作的指示信息时,替换模块40从前述获取模块10获取的升级包中解析出升级的分区表,将终端的当前分区表替换为解析出的升级的分区表。基于前述描述,本领域技术人员可以理解的是,由于本实施例通过MISC分区中的预设标志位表征终端分区表的替换状态,此时,替换模块40将前述预设标志位写入MISC分区。
替换模块40在向MISC分区中写入前述预设标志位之后,再次重启所述终端,并切换终端至Recovery模式,此时升级模块20将再次执行升级操作。可以理解的是,在升级模块20当次执行升级操作时,由于之前已经完成了对终端的系统升级,终端的版本号已经与升级包的版本号一致,当次对终端的源版本进行校验之后,即完成当次的升级操作,并未对终端进行实质上的升级。
升级模块20在完成升级操作后,指示识别模块30再次执行前述预设标志位的识别操作,识别终端的MISC分区中是否存在预设标志位。基于前述描述,本领域技术人员可以理解的是,升级模块20在对终端进行第一次升级操作时,已经将终端的分区表替换为升级包中携带的升级的升级包吗,并相应由替换模块40向MISC分区中写入了前述预设标志位。显然的,识别模块30当次识别操作的识别结果包括:终端的MISC分区中存在前述预设标志位,此时,识别模块30指示调整模块50进行用户数据分区的容量调整操作。
调整模块50,用于在所述MISC分区中存在所述预设标志位时,执行所述升级包中携带的容量调整代码,将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。
在本实施例中,当识别模块30识别到终端的MISC分区中存在前述预设标志位,说明终端的分区表已被替换,此时,调整模块50调用升级包中的携带的预先写入的容量调整代码,将终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量,从而完成用户数据分区容量的调整。其中,在具体实施时,前述容量调整代码的执行可以resize进程的形式体现。
简而言之,本实施例在对终端进行系统升级时,首先控制终端进入到Recovery模式,按照正常升级流程,对终端中的原版本数据进行校验,在校验通过后就会先升级所有的镜像数据,最后升级分区表,并向MISC分区写入一个标志位,指示终端重启后第二次进入recovery模式,在终端重启后第二次进入到Recovery模式之后,重新执行一遍升级流程,实际上只是校验一下是否已经升级到目标版本,校验通过后,把升级包中携带的容量调整代码复制到终端的/tmp目录下面,并给予其运行所需要的所有权限,然后执行该容量调整代码,将终端的用户数据分区的容量调整为升级后的分区表中用户数据分区的容量。再次重启终端并正常开机后,用户即可使用调整后的用户数据分区容量。
可选地,在其他实施例中,若升级包中携带的分区表中System分区的容量和用户数据分区的容量均有变化,即需要改变System分区的容量大小,又要改变用户数据分区的容量大小,则在对终端的升级过程中,使用整system镜像填充system分区,然后调用mkfs进程对剩下的用户数据分区重新格式化,生成新的大小的ext4文件系统。
本实施例提出的终端升级装置,通过两次重启终端,两次升级终端,实现对终端的系统升级以及用户数据分区容量的调整,其中,在第一次升级时使用升级包完成对终端系统的升级,并替换终端的分区表为升级包携带的分区表;在第二次升级时,调用升级包携带的容量调整代码,将终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。相较于现有技术,本发明能够在升级终端系统的同时,对终端的用户数据分区的容量进行调整,克服了现有技术中用户数据分区的容量固定的缺陷。
进一步地,基于第一实施例,提出本发明终端升级装置的第二实施例,对应于前述终端升级方法的第二实施例,在本实施例中,所述获取模块10还用于发送升级包获取请求至预设升级服务器;还用于接收所述预设升级服务器基于所述升级包获取请求返回的对应所述终端的升级包。
需要说明的是,FOTA是指通过云端升级技术,为具有连网功能的终端,如手机、平板电脑、便携式媒体播放器、移动互联网设备等提供系统升级服务,能够使用网络以按需、易扩展的方式获取到终端的系统升级包,并通过FOTA进行云端升级,完成终端系统的修复和优化。本实施例考虑到FOTA的前述优点,采用FOTA进行终端的系统升级。以下仅针对该区别进行说明,其他可参照前述实施例,此处不再赘述。
在本实施例中,在获取终端对应的升级包时,获取模块10具体发送升级包获取请求至预设升级服务器,以供该预设升级服务器在接收到升级包获取请求时,查找到其本地预存的前述终端对应的升级包,并将查找到的终端对应的升级包返回至前述终端,由终端升级装置对终端进行系统升级。其中,预设升级服务器包括为终端提供FOTA升级服务服务的FOTA服务器和其他提供数据储存服务的数据服务器等。
在相应的,在基于终端接收到前述预设升级服务器返回的终端对应的升级包之后,终端升级装置使用该升级包对终端进行系统升级,以及用户数据分区容量的调整,具体可参照前述实施例,此处不再赘述。
进一步地,在本实施例中,所述终端升级装置还包括升级包制作模块,用于根据当前的升级内容生成升级包,并将升级的分区表内置到所述升级包中;还用于将内置有升级的分区表的升级包储存至所述预设服务器中。
需要说明的是,本实施例的终端升级装置包括两部分,其一用于对终端进行系统升级,其二用于制作升级用的升级包。
具体的,升级包制作模块根据当前的升级内容制作生成升级包,并将升级的分区表内置到新生成的升级包中。其中,当前的升级内容即新旧系统版本的差别。
可选地,为提升操作效率,可以向Google提供的做包脚本文件ota_from_target_files.py中添加新的代码,用于实现将分区表从构建版本中拷贝到升级包中,并且写入容量调整代码让分区表能够升级。相应的,在制作升级包时,可直接执行修改后的做包脚本,实现升级包的快速生成,以及分区表的内置。
可选地,在内置升级的分区表到升级包中时,升级包制作模块具体可内置主/备分区表到升级包中,以作冗余备份。
进一步地,升级包制作模块还需要在在install.c下面添加新的函数:RegisterFunction("update_partition_table",UpdatePtableFn),用于真正执行前述添加的容量调整代码。由于终端版本存放分区表的逻辑分区是确认已知的,所以只要打开固定物理逻辑分区号,写入存放在升级包中的两个分区表即可实现分区表的升级。此外,为确保分区表写入成功,还需要调用fsync命令将分区表同步到终端的存储设备上面。
进一步地,由于本实施例采用FOTA的方式进行系统升级,为确保前述预设服务器能够正确识别升级的升级包,在本实施例中,所述升级包制作模块还用于将内置有升级的分区表的升级包的格式转换为所述预设服务器可识别的格式;还用于在完成格式转换操作之后,将内置有升级的分区表的升级包储存至所述预设服务器中。
具体的,在本实施例中,在完成分区表的内置之后,升级包制作模块并不立即将内置有升级的分区表的升级包储存至前述预设升级服务器,而是先将内置有升级的分区表的升级包的格式转换为所述预设服务器可识别的格式,例如,将内置有升级的分区表的升级包的格式的转换为FOTA服务器可识别的upc格式。
在完成对升级包的格式转换操作之后,升级包制作模块将内置有升级的分区表的升级包储存至所述预设服务器中,以供触发终端的升级操作时,相应获取升级,具体可参照前述实施例,此处不再赘述。
此外,在将内置有升级的分区表的升级包储存至所述预设服务器中的同时,升级包制作模块将需要升级的终端的终端标识与该升级包关联,使得在终端升级时,获取模块10能够通过终端标识获取到其所在终端对应的升级包,即获取模块10发送的升级包获取请求中携带有其所在终端的终端标识,用于供前述预设升级服务器相应查找到终端对应的升级包并返回。其中,终端标识用于唯一标识终端,在具体实施时,可以选择终端的IMEI用作其终端标识。
可选地,前述预设服务器还可以在侦测到新储存的升级包(即内置有升级的分区表的升级包)时,发送升级的提示信息至对应的终端,由终端展示给用户,以提示用户下载升级包进行系统升级。
进一步地,基于前述第一或第二实施例,提出本发明终端升级装置的第三实施例,对应于前述终端升级方法的第三实施例,在本实施例中,所述终端升级装置还包括清除模块,用于删除所述MISC分区中的所述预设标志位以及获取的所述升级包。
基于前述描述,本领域技术人员可以理解的是,终端升级装置在升级过程中通过MISC分区中是否存在前述预设标志位,对终端的分区表是否完成升级进行判断。若在完成当次升级操作(包括终端的系统升级以及用户数据区容量的调整)后,未清除当次升级操作写入MISC分区中的预设标志位,在下次升级时,将导致用户数据分区的容量无法调整。因此,本实施例在前述实施例的基础上,在完成终端的升级操作之后,增加了删除终端的MISC分区中所添加的预设标志位的操作,具体清除模块完成。
此外,由于外部存储空间具有物理存储上限,当容量满时,将不能正常提供储存服务,也就无法用于存储升级包。因此,本实施例中,在完成终端的升级操作之后,外部存储空间中储存的升级包显然没有继续存储的必要,清除模块还可直接删除外部存储空间中储存的当次升级操作所获取的升级包,以避免外部存储空间的容量浪费。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种终端升级方法,其特征在于,所述终端升级方法包括:
步骤A、获取终端对应的升级包,并重启所述终端;
步骤B、使用所述升级包对所述终端进行系统升级;
步骤C、识别所述终端的MISC分区中是否存在预设标志位,否则转入执行步骤D,是则转入步骤E;
步骤D、将所述终端的当前分区表替换为所述升级包中携带的分区表,向所述MISC分区中写入所述预设标志位,并重启所述终端后转入执行步骤B;
步骤E、执行所述升级包中携带的容量调整代码,将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。
2.根据权利要求1所述的终端升级方法,其特征在于,所述获取终端对应的升级包包括:
发送升级包获取请求至预设升级服务器;
接收所述预设升级服务器基于所述升级包获取请求返回的对应所述终端的升级包。
3.根据权利要求2所述的终端升级方法,其特征在于,所述在获取终端对应的升级包,并重启所述终端的步骤之前,还包括:
根据当前的升级内容生成升级包,并将升级的分区表内置到所述升级包中;
将内置有升级的分区表的升级包储存至所述预设服务器中。
4.根据权利要求3所述的终端升级方法,其特征在于,所述将内置有升级的分区表的升级包储存至所述预设服务器中的步骤之前,还包括:
将内置有升级的分区表的升级包的格式转换为所述预设服务器可识别的格式;
在完成格式转换操作之后,转入执行所述将内置有升级的分区表的升级包储存至所述预设服务器中的步骤。
5.根据权利要求1-4任一项所述的终端升级方法,其特征在于,所述将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量的步骤之后,还包括:
删除所述MISC分区中的所述预设标志位以及获取的所述升级包。
6.一种终端升级装置,其特征在于,所述终端升级装置包括:
获取模块,用于获取终端对应的升级包,并重启所述终端;
升级模块,用于使用所述升级包对所述终端进行系统升级;
识别模块,用于识别所述终端的MISC分区中是否存在预设标志位;
替换模块,用于在所述MISC分区中不存在所述预设标志位时,将所述终端的当前分区表替换为所述升级包中携带的分区表,向所述MISC分区中写入所述预设标志位,并重启所述终端;
所述升级模块还用于在所述替换模块重启所述终端后,再次使用所述升级包对所述终端进行系统升级;
所述识别模块还用于在所述升级模块再次使用所述升级包对所述终端进行系统升级后,识别所述MISC分区中是否存在所述预设标志位;
调整模块,用于在所述MISC分区中存在所述预设标志位时,执行所述升级包中携带的容量调整代码,将所述终端的用户数据分区的容量调整为替换后的分区表中用户数据分区的容量。
7.根据权利要求6所述的终端升级装置,其特征在于,所述获取模块还用于发送升级包获取请求至预设升级服务器;还用于接收所述预设升级服务器基于所述升级包获取请求返回的对应所述终端的升级包。
8.根据权利要求7所述的终端升级装置,其特征在于,所述终端升级装置还包括升级包制作模块,用于根据当前的升级内容生成升级包,并将升级的分区表内置到所述升级包中;还用于将内置有升级的分区表的升级包储存至所述预设服务器中。
9.根据权利要求8所述的终端升级装置,其特征在于,所述升级包制作模块还用于将内置有升级的分区表的升级包的格式转换为所述预设服务器可识别的格式;还用于在完成格式转换操作之后,将内置有升级的分区表的升级包储存至所述预设服务器中。
10.根据权利要求6-9任一项所述的终端升级装置,其特征在于,所述终端升级装置还包括清除模块,用于删除所述MISC分区中的所述预设标志位以及获取的所述升级包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610578920.0A CN107643898A (zh) | 2016-07-21 | 2016-07-21 | 终端升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610578920.0A CN107643898A (zh) | 2016-07-21 | 2016-07-21 | 终端升级方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107643898A true CN107643898A (zh) | 2018-01-30 |
Family
ID=61109096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610578920.0A Pending CN107643898A (zh) | 2016-07-21 | 2016-07-21 | 终端升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107643898A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595113A (zh) * | 2018-03-22 | 2018-09-28 | 维沃移动通信有限公司 | 一种分区调整的方法及终端 |
CN109358864A (zh) * | 2018-12-13 | 2019-02-19 | 晶晨半导体(上海)股份有限公司 | 系统升级方法及装置 |
CN109656603A (zh) * | 2019-01-15 | 2019-04-19 | Oppo广东移动通信有限公司 | 系统升级方法、装置、存储介质及电子设备 |
CN111338663A (zh) * | 2018-12-19 | 2020-06-26 | 成都鼎桥通信技术有限公司 | 系统升级方法、终端及存储介质 |
WO2023000777A1 (zh) * | 2021-07-23 | 2023-01-26 | 荣耀终端有限公司 | 一种recovery模式升级过程中的重启方法及终端 |
WO2023005370A1 (zh) * | 2021-07-30 | 2023-02-02 | 荣耀终端有限公司 | 一种操作系统升级方法、设备、存储介质及计算机程序产品 |
CN111142906B (zh) * | 2019-12-25 | 2023-11-10 | 浙江大华技术股份有限公司 | 一种设备固件升级方案迭代的方法、装置与设备 |
CN117687663A (zh) * | 2024-02-04 | 2024-03-12 | 湖北芯擎科技有限公司 | 基于ota的分区动态调整方法、装置、设备及存储介质 |
-
2016
- 2016-07-21 CN CN201610578920.0A patent/CN107643898A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595113A (zh) * | 2018-03-22 | 2018-09-28 | 维沃移动通信有限公司 | 一种分区调整的方法及终端 |
CN109358864A (zh) * | 2018-12-13 | 2019-02-19 | 晶晨半导体(上海)股份有限公司 | 系统升级方法及装置 |
CN111338663B (zh) * | 2018-12-19 | 2023-06-13 | 成都鼎桥通信技术有限公司 | 系统升级方法、终端及存储介质 |
CN111338663A (zh) * | 2018-12-19 | 2020-06-26 | 成都鼎桥通信技术有限公司 | 系统升级方法、终端及存储介质 |
CN109656603A (zh) * | 2019-01-15 | 2019-04-19 | Oppo广东移动通信有限公司 | 系统升级方法、装置、存储介质及电子设备 |
CN111142906B (zh) * | 2019-12-25 | 2023-11-10 | 浙江大华技术股份有限公司 | 一种设备固件升级方案迭代的方法、装置与设备 |
WO2023000777A1 (zh) * | 2021-07-23 | 2023-01-26 | 荣耀终端有限公司 | 一种recovery模式升级过程中的重启方法及终端 |
CN115686584A (zh) * | 2021-07-30 | 2023-02-03 | 荣耀终端有限公司 | 一种操作系统升级方法、设备、存储介质及计算机程序产品 |
WO2023005370A1 (zh) * | 2021-07-30 | 2023-02-02 | 荣耀终端有限公司 | 一种操作系统升级方法、设备、存储介质及计算机程序产品 |
CN115686584B (zh) * | 2021-07-30 | 2023-11-17 | 荣耀终端有限公司 | 一种操作系统升级方法、设备、存储介质及计算机程序产品 |
EP4202649A4 (en) * | 2021-07-30 | 2024-06-19 | Honor Device Co., Ltd. | OPERATING SYSTEM UPGRADE METHOD, DEVICE, STORAGE MEDIUM AND COMPUTER PROGRAM PRODUCT |
CN117687663A (zh) * | 2024-02-04 | 2024-03-12 | 湖北芯擎科技有限公司 | 基于ota的分区动态调整方法、装置、设备及存储介质 |
CN117687663B (zh) * | 2024-02-04 | 2024-04-16 | 湖北芯擎科技有限公司 | 基于ota的分区动态调整方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107643898A (zh) | 终端升级方法及装置 | |
US8583907B2 (en) | Electronic device having an alterable configuration and methods of manufacturing and configuring the same | |
CN101026848B (zh) | 移动终端和软件更新方法 | |
EP1770512A2 (en) | Method and system for updating software | |
CN110597542B (zh) | 软件自动ota升级方法及装置、电子设备 | |
KR101007739B1 (ko) | Fota 서비스 제공 방법 및 그 시스템 | |
CN109062598B (zh) | 一种安全的ota升级方法及系统 | |
CN108027741A (zh) | 基于补丁升级的文件处理方法、装置、终端以及存储介质 | |
CN106572372A (zh) | 一种机顶盒升级方法及机顶盒 | |
EP2456257A1 (en) | Method and system for upgrading wireless data card | |
CN104918114B (zh) | 一种操作系统升级方法及装置 | |
CN103559065B (zh) | 一种ota升级的方法和系统 | |
CN106201613A (zh) | 预热软件安装 | |
CN113821235B (zh) | 操作系统数据更新方法、设备、存储介质及程序产品 | |
CN105094913A (zh) | 系统、基带固件和系统应用升级方法及装置 | |
CN112463191A (zh) | 一种文件更新方法及装置、设备、存储介质 | |
TW201621647A (zh) | 作業系統更新方法 | |
CN105765533A (zh) | 用于固件虚拟化的方法和装置 | |
CN115202686A (zh) | 虚拟化系统的升级方法、装置、电子设备及存储介质 | |
CN105867962A (zh) | 系统升级的方法和装置 | |
CN109002305B (zh) | 一种设备程序的更新方法及其系统 | |
CN106293790B (zh) | 基于Firefox操作系统的应用程序升级方法和装置 | |
CN114995852A (zh) | 一种设备升级方法、设备及计算机可读存储介质 | |
CN112860291B (zh) | 固件升级方法及装置 | |
CN105700900B (zh) | 一种优化无线局域网功能的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180130 |
|
WD01 | Invention patent application deemed withdrawn after publication |