(一)android为什么需要recovery升级?

    接触过安卓手机的同事 ,大家都知道有个recovery系统,开机的时候,通过组合按键,可以使手机进入recovery恢复模式,可以用来刷机,搞过android开发的同事,肯定也接触过这个模块,但是为什么需要recovery来升级呢,有些人肯定会说这还用问吗,没有recovery怎么升级呢?

        Recovery相关的知识,网上百度一大把,关于recovery的介绍,recovery模块的流程很多,但是,至于为什么要有recovery,好像还没有关于这个的说明,为了大家尽可能的明白,下面我尽可能用简单通俗的方式,描述下recovery存在的原因?

 

1.1 android系统分区

    为了解释recovery升级,我们引进“系统分区”的概念,使用过Windows的同事,大家都知道,我们有CDEF等盘符,系统安装在C盘,我们可以把不同类型的文件分别放在不同的磁盘,对于android系统,我们也是有分区概念的,下面是个通用的android系统分区:

                                                        (一)android为什么需要recovery升级?_第1张图片

              

       关于这些分区的用途如下,大致简单描述,详细的可以自行深入研究:

              Uboot:启动分区

              Misc:升级存储的一些升级信息

              Logo:开机画面

              Recovery:升级模块(我们本文主要的讲解对象)

              Boot:内核分区

              System:系统分区

              Data:用户数据分区。

 

        有些人就迷惑了,Windows上面,我可以看到每个分区磁盘,为什么android上面,我为什么看不见,因为android上面绝大多数分区,用户是不需要了解的,用户能看到的就是data分区,或者叫userdata分区,就是用户数据分区,这也就可以解释我们常见的一个问题了,明明我买的16G的手机,为什么看到的可用容量只有11G,因为其他的容量给了boot system等其他分区了,厂商确实是使用的16Gflash,只不过,用户可使用的没有那么大而已。

 

1.2  升级原理

    分区描述完了,我们讲解下recovery升级的本质,为了尽可能的简单,如下图:

                                                   (一)android为什么需要recovery升级?_第2张图片

   其实recovery的本质,就是把升级包update.zip中每个分区的镜像写到每个分区即可。

 

1.3 Recovery存在原理 

     讲完了分区以及升级本质,现在我们说到主题上面,为什么要有recovery

     我们的android上面是有两个系统,即recovery + system,启动流程分别如下:

     Android启动:uboot  -> boot -> system

     Recovery启动:uboot -> recovery

     举个例子,假如我们的内核有更新了,那么需要升级boot.img, 如果在android系统起来之后更新,如果去更新boot分区,在更新的过程掉电了,那么boot分区破坏了,此时手机变砖,android将无法启动。

     所以,recovery诞生了,我们启动recovery系统去更新boot,如果更新过程掉电了,但是recovery仍然是OK的,我们上电可以继续进入recovery更新,保证完成系统更新,不会变砖,现在的厂家,基本都可以保证升级过程掉电,仍然可以继续升级,所以不用担心升级断电导致手机变砖,但是我们还是尽量保证,升级过程不要掉电,万一某个临界状态,厂家没有考虑到导致无法启动也是有可能的。

 

1.4 总结

    其实recovery也就是个备份的裁剪版的小系统,可以通过这个小的系统去更新android这个大系统,从而来保证安卓系统能够得到更新,并且android不会变砖。不知道通过上述的描述,你对recovery是否有个大致的了解了呢?

 

    然后有些人会问了,更新boot.img是可以,断电了还可以继续recovery升级,要是更新uboot的时候掉电了,uboot分区都没有了,还升级个毛线?这个问题我们在下一节讲解!

你可能感兴趣的:(android,recovery)