升级的方法、装置及移动终端
技术领域
本发明属于系统升级技术领域,尤其涉及一种升级的方法、装置及移动终端。
背景技术
现在的手机厂家越来越多,第三方ROM也越来越多。很多用户通过第三方刷机工具给Android系统进行升级,这往往会导致死机、重启甚至不能开机等严重问题的发生。
安装Android系统的手机一般都包含preloader.bin、lk.bin、boot.img、system.img、userdata.img、recovery.img等镜像文件,这些镜像文件分别存放在preloader分区、lk分区、boot分区、system分区、userdata分区、recovery分区中。
然而,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有的手机,存放在分区中的镜像文件很容易损坏,导致系统无法正常启动和使用。
发明内容
有鉴于此,本发明实施例提供一种升级的方法、装置及移动终端,以解决现有技术提供的升级的方法,存放在分区中的镜像文件很容易损坏,导致系统无法正常启动和使用的问题。
第一方面,提供一种升级的方法,包括:
将镜像文件同时存储在主分区和备份分区中;
当主分区中的镜像文件损坏时,从备份分区中加载所述镜像文件。
结合第一方面,在第一方面的第一种可能的实现方式中,所述当主分区中的镜像文件损坏时,则从备份分区中加载所述镜像文件,包括:
给每一个主分区分配一个标记位;
当因为主分区中镜像文件的损坏而无法正常启动系统时,标记相应主分区的标记位;
在下一次启动系统时,检查所述标记位;
如果检查到有主分区被设置了所述标记位,则从相应主分区的备份分区中拷贝对应的镜像文件到相应主分区中,然后清除所述标记位,并加载主分区中的镜像文件。
结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,还包括:
在发布空中下载技术OTA升级包时,在每一个镜像文件的末尾,增加一个32位的循环冗余校验码。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述在发布空中下载技术OTA升级包时,在每一个镜像文件的末尾,增加一个32位的循环冗余校验码之后,还包括:
在通过OTA对系统进行升级时,判断所述OTA升级包中的镜像文件中包括的32位的循环冗余校验码是否正确;
如果正确,则在更新主分区中的镜像文件的同时,更新备份分区中的镜像文件。
结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,在所述在发布空中下载技术OTA升级包时,在每一个镜像文件的末尾,增加一个32位的循环冗余校验码之后,还包括:
在通过第三方刷机工具对系统进行升级时,当确定第三方刷机工具提供的镜像文件中没有所述32位的循环冗余校验码或者所述32位的循环冗余校验码不正确时,只更新主分区中的镜像文件,拒绝更新备份分区中的镜像文件。
第二方面,提供一种升级的装置,包括:
存储单元,用于将镜像文件同时存储在主分区和备份分区中;
加载单元,用于当主分区中的镜像文件损坏时,从备份分区中加载所述镜像文件。
结合第二方面,在第二方面的第一种可能的实现方式中,所述加载单元,包括:
分配模块,用于给每一个主分区分配一个标记位;
标记模块,用于当因为主分区中镜像文件的损坏而无法正常启动系统时,标记相应主分区的标记位;
检查模块,用于在下一次启动系统时,检查所述标记位;
加载模块,用于如果检查到有主分区被设置了所述标记位,则从相应主分区的备份分区中拷贝对应的镜像文件到相应主分区中,然后清除所述标记位,并加载主分区中的镜像文件。
结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,还包括:
增加单元,用于在发布空中下载技术OTA升级包时,在每一个镜像文件的末尾,增加一个32位的循环冗余校验码。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,还包括:
检验单元,用于在通过OTA对系统进行升级时,判断所述OTA升级包中的镜像文件中包括的32位的循环冗余校验码是否正确;
第一更新单元,用于如果所述检验单元判断所述OTA升级包中的镜像文件中包括的32位的循环冗余校验码正确,则在更新主分区中的镜像文件的同时,更新备份分区中的镜像文件。
结合第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,还包括:
第二更新单元,用于在通过第三方刷机工具对系统进行升级时,当确定第三方刷机工具提供的镜像文件中没有所述32位的循环冗余校验码或者所述32位的循环冗余校验码不正确时,只更新主分区中的镜像文件,拒绝更新备份分区中的镜像文件。
第三方面,提供一种移动终端,所述移动终端包括第二方面所述的升级的装置。
结合第三方面,在第三方面的第一种可能的实现方式中,所述移动终端为智能手机或者平板电脑。
在本发明实施例,将镜像文件同时存储在主分区和备份分区中,当主分区中的镜像文件损坏时,从备份分区中加载所述镜像文件。克服了现有技术提供的升级的方法,会出现Android系统因镜像文件损坏无法正常开机的问题,进而达到在主分区中的镜像文件损坏时,也可以正常开机。
附图说明
图1是本发明升级的方法实施例的实现流程图;
图2是本发明升级的装置实施例的结构框图;
图3是本发明移动终端实施例的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,将镜像文件同时存储在主分区和备份分区中,当主分区中的镜像文件损坏时,从备份分区中加载所述镜像文件。
以下结合具体实施例对本发明的实现进行详细描述:
实施例一
图1示出了本发明实施例一提供的升级的方法的实现流程,详述如下:
在步骤S101中,将镜像文件同时存储在主分区和备份分区中。
在本发明实施例中,为了防止某个镜像文件损坏导致系统无法开机,针对每一个镜像文件,使用双分区机制备份存储镜像文件,即:除了preloader分区、lk分区、boot分区、system分区、userdata分区、recovery分区等主分区外,每一个主分区都有一个备份分区,分别叫做preloader_backup分区、lk_backup分区、boot_backup分区、system_backup分区、userdata_backup分区、recovery_backup分区。每一个镜像文件,存储在两个分区当中,如lk.bin同时存在于lk分区和lk_backup分区中。
在步骤S102中,当主分区中的镜像文件损坏时,从备份分区中加载所述镜像文件。
对于第三方的ROM,我们一般是保持开放的态度,允许第三方刷机工具更改preloader分区、lk分区、boot分区、system分区、userdata分区、recovery分区等主分区中的镜像文件。
可是,第三方刷机工具提供的镜像文件可能不正确,会导致主分区中的镜像文件不正确,然而,当主分区中的镜像文件损坏时,还采用主分区中的镜像文件进行系统的升级,会导致死机、重启甚至不能开机等严重问题的发生。
在本发明实施例中,当主分区中的镜像文件损坏时,则从备份分区中加载所述镜像文件,根据备份分区中存储的镜像文件进行系统的升级,可以避免上述问题的发生。比如,在lk分区和lk_backup分区中同时存储有lk.bin镜像文件,当lk分区中的lk.bin镜像文件损坏时,则可以从lk_backup分区中加载所述lk.bin镜像文件。
具体的,可以给每一个主分区分配一个标记位,当因为主分区中某个镜像文件的损坏而无法正常启动系统时,标记相应主分区的标记位,在下一次启动系统时,检查所述标记位,如果检查到有主分区被设置了所述标记位,则从相应主分区的备份分区中拷贝对应的镜像文件到相应主分区中,然后清除所述标记位,并加载主分区中的镜像文件,完成系统的启动。
优选地,在本发明实施例中,还包括以下步骤:
在步骤S103中,在发布OTA升级包时,在每一个镜像文件的末尾,增加一个32位的循环冗余校验码。
在步骤S104中,在通过OTA对系统进行升级时,判断OTA升级包中的镜像文件中包括的32位的循环冗余校验码是否正确,如果正确,则在更新主分区中的镜像文件的同时,更新备份分区中的镜像文件。
其中,空中下载技术(Over-the-Air Technology,OTA)升级包中的镜像文件组成的二进制数据流如果能够完全被生成多项式整除,则表示OTA升级包中的镜像文件中包括的32位的循环冗余校验码正确,OTA升级包中的镜像文件是官方发布的。其中,所述生成多项式是生成所述32位的循环冗余校验码的多项式。
在本发明实施例中,由于我们可以正常使用官方发布的OTA升级包进行系统的升级,因此备份分区中的镜像文件也应该是可以升级的。
为了防止备份分区中的镜像文件被恶意程序破坏,本发明实施例中使用门锁机制来对备份分区进行升级,避免主分区和备份分区都被恶意破坏,导致系统无法正常启动和使用。
其中,为了升级备份分区中的镜像文件,我们在发布OTA升级包时,在每一个镜像文件的末尾,增加一个32位的循环冗余校验(Cyclic Redundancy Check,CRC)码,这个32位的CRC码可以叫做“钥匙”,而生成CRC码的生成多项式可以叫做“锁”,它是由移动终端生产厂家设定的。
优选地,在本发明实施例中,在步骤S103之后,还包括以下步骤:
在步骤S105中,在通过第三方刷机工具对系统进行升级时,在确定第三方刷机工具提供的镜像文件中没有CRC码或者CRC码不正确时,只更新主分区中的镜像文件,拒绝更新备份分区中的镜像文件。
本发明实施例中,当用户通过第三方刷机工具对移动终端系统进行升级时,判断第三方刷机工具提供的镜像文件中有没有CRC码或者CRC码是否正确,在第三方刷机工具提供的镜像文件中没有CRC码或者CRC码不正确时,只更新主分区中的镜像文件,拒绝更新备份分区中的镜像文件。
本实施例,将镜像文件同时存储在主分区和备份分区中,当主分区中的镜像文件损坏时,从备份分区中加载所述镜像文件。克服了现有技术提供的升级的方法,会出现Android系统因镜像文件损坏无法正常开机的问题,进而达到在主分区中的镜像文件损坏时,也可以正常开机。
另外,通过门锁机制验证镜像文件OTA升级包中的镜像文件中包括的32位的循环冗余校验码是否正确,如果正确,则在更新主分区中的镜像文件的同时,更新备份分区中的镜像文件;当用户通过第三方刷机工具提供的镜像文件中没有CRC码或者CRC码不正确时,只更新主分区中的镜像文件,拒绝更新备份分区中的镜像文件。可以防止备份分区中的镜像文件被恶意程序破坏,达到保护备份分区中的镜像文件的安全,提高移动终端系统的安全性的目的。
本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
实施例二
图2示出了本发明实施例二提供的升级的装置的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该升级的装置可以是内置于移动终端中的软件单元、硬件单元或者软硬件结合的单元,该升级的装置2包括:存储单元21和加载单元22。
其中,存储单元21,用于将镜像文件同时存储在主分区和备份分区中;
加载单元22,用于当主分区中的镜像文件损坏时,从备份分区中加载所述镜像文件。
具体的,所述加载单元22,包括:
分配模块,用于给每一个主分区分配一个标记位;
标记模块,用于当因为主分区中镜像文件的损坏而无法正常启动系统时,标记相应主分区的标记位;
检查模块,用于在下一次启动系统时,检查所述标记位;
加载模块,用于如果检查到有主分区被设置了所述标记位,则从相应主分区的备份分区中拷贝对应的镜像文件到相应主分区中,然后清除所述标记位,并加载主分区中的镜像文件。
进一步地,所述装置2还包括:
增加单元,用于在发布空中下载技术OTA升级包时,在每一个镜像文件的末尾,增加一个32位的循环冗余校验码。
进一步地,所述装置2还包括:
检验单元,用于在通过OTA对系统进行升级时,判断所述OTA升级包中的镜像文件中包括的32位的循环冗余校验码是否正确;
第一更新单元,用于如果所述检验单元判断所述OTA升级包中的镜像文件中包括的32位的循环冗余校验码正确,则在更新主分区中的镜像文件的同时,更新备份分区中的镜像文件。
进一步地,所述装置2还包括:
第二更新单元,用于在通过第三方刷机工具对系统进行升级时,当确定第三方刷机工具提供的镜像文件中没有所述32位的循环冗余校验码或者所述32位的循环冗余校验码不正确时,只更新主分区中的镜像文件,拒绝更新备份分区中的镜像文件。
本发明实施例提供的升级的装置可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
实施例三
图3示出了本发明实施例三提供的移动终端的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该移动终端3为智能手机或平板电脑,包括实施例二中所述的升级的装置2,该升级的装置2包括:存储单元21和加载单元22。
其中,存储单元21,用于将镜像文件同时存储在主分区和备份分区中;
加载单元22,用于当主分区中的镜像文件损坏时,从备份分区中加载所述镜像文件。
具体的,所述加载单元22,包括:
分配模块,用于给每一个主分区分配一个标记位;
标记模块,用于当因为主分区中镜像文件的损坏而无法正常启动系统时,标记相应主分区的标记位;
检查模块,用于在下一次启动系统时,检查所述标记位;
加载模块,用于如果检查到有主分区被设置了所述标记位,则从相应主分区的备份分区中拷贝对应的镜像文件到相应主分区中,然后清除所述标记位,并加载主分区中的镜像文件。
进一步地,所述装置2还包括:
增加单元,用于在发布空中下载技术OTA升级包时,在每一个镜像文件的末尾,增加一个32位的循环冗余校验码。
进一步地,所述装置2还包括:
检验单元,用于在通过OTA对系统进行升级时,判断所述OTA升级包中的镜像文件中包括的32位的循环冗余校验码是否正确;
第一更新单元,用于如果所述检验单元判断所述OTA升级包中的镜像文件中包括的32位的循环冗余校验码正确,则在更新主分区中的镜像文件的同时,更新备份分区中的镜像文件。
进一步地,所述装置2还包括:
第二更新单元,用于在通过第三方刷机工具对系统进行升级时,当确定第三方刷机工具提供的镜像文件中没有所述32位的循环冗余校验码或者所述32位的循环冗余校验码不正确时,只更新主分区中的镜像文件,拒绝更新备份分区中的镜像文件。
本发明实施例提供的移动终端可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。