基于块的OTA

原创 2015年11月20日 11:38:00

你可以使能运行Android5.0的新设备启动基于块的OTA升级.OTA是设备运营商远程更新一个设备的部分系统的机制.

  • Android 5.0和后续版本使用块设备OTA升级来确保每一个设备使用精确的相同的分区.块OTA处理整个分区作为一个文件并且计算一个单一的二进制补丁,而不是比较单独的文件和计算二进制补丁,确保生成的分区保存精确的目的位.这允许设备系统镜像通过fastboot或者是OTA实现相同的状态.

  • Android4.4和之前的版本使用文件OTA更新,文件OTA确保设备包含相同的文件内容,权限和模式,但是他以更新方法为基础,允许元数据例如时间戳和底层的存储分布去分辨设备.

由于块OTA确保每一个设备使用相同的分区,他允许使用DM验证来加密系统分区.后面会在”验证Boot”一节讲到dm验证.

注意:在使用dm验证之前,你一定要有一个可用的块OTA系统.

建议



对于Android5.0或者是后续版本的设备来说,在出厂ROM中使用的就是块OTA更新.为了为后续更新生成一个基于块的OTA,向ota_from_target_files中传递–block参数.

对于Android4.4或者是之前的版本,使用文件OTA更新.虽然有可能通过发送一个完整的Android5.0或后续版本的块OTA去转换设备,但是他需要发送一个完整的OTA,完整的OTA比一个增量OTA大很多.

因为dm验证需要Android 5.0或者是后续版本的新设备中的bootloader支持,对于现有设备,你不能使用dm验证.

工作在Android OTA系统(recovery镜像和生成OTA的脚本)上的开发者可以通过订阅 android-ota@googlegroups.com 的邮件列表来保持变化.

文件 VS 块OTA


在一个基于文件的OTA更新期间,Android尝试去改变位于文件系统层(以文件为基础的文件)的系统分区的内容.更新并没有保证以一致的顺序去写入文件,拥有一个一致的上次的修改时间和超级块,甚至是将块置于块设备上相同的位置.这个原因,基于文件的OTA在dm验证使能的设备上就会失败;在OTA尝试之后,设备就启动不起来了.

在基于块的OTA更新期间,Android提供设备的两个块镜像(而不是两套文件的集合)的不同.更新程序使用下面的方法检查位于块设备层(位于文件系统下面)的相应的构建服务:

  • 全更新.复制整个系统镜像是简单的,并且生成补丁也很简单.但是生成一个大镜像能够使制作应用补丁非常昂贵的.

  • 增量更新.使用二进制求异工具生成更小的镜像,并且使得生成补 丁应用也很简单,但是在生成补丁程序的时候是内存密集型的.
    注意:adb fastboot将位于device中的完全相同的位作为一个完整的 OTA,所以flashing对块OTA是兼容的.

更新未被改进的系统


对于运行Android 5.0的带有未被修改的系统分区的设备,对于块OTA的下载和安装和文件OTA是一样的.然而,OTA更新可能包含一个或者是更多下面的不同:

  • 下载大小.全块OTA更新大约和全文件OTA更新的大小是一样的,但是增量更新可能会大那么几M

    这里写图片描述
    比较Android 5.0和Android 5.1发行版的Nexus 6 OTA的大小

  • 总体上,增量块OTA更新比增量文件OTA更新要大一些,因为:

    • 数据保存.基于块的OTA比基于文件的OTA保存更多的数据(文件元数据,dm验证数据,ext4分布等).
    • 计算算法不同.在一个文件OTA更新中,如果在这两个构建版本中,文件路径是相同的,OTA包不为那个文件包含数据.在一个块OTA更新中,在一个文件中决定很小或者是没有变化取决于补丁计算算法的质量和源与目标系统中的文件数据布局.
  • 故障flash和RAM的敏感性.如果一个文件损坏了,如果他不接触损坏的文件的话,文件OTA还是会进行;但是如果块OTA检测到在系统分区上有损坏的话,块OTA就会失败.

更新改进的系统


对于运行Android 5.0的带有改进系统分区的设备来说:

  • 增量块OTA更新失败.系统分区可能会在adb重新挂载期间或者是被恶意软件所修改.文件OTA容忍分区的一些改变,例如添加不是源码或构建目标的额外文件.然而,块OTA更新不容忍分区的任何附加,所以用户需要安装一个全OTA来覆盖系统分区或者是烧入一个新的系统镜像来使能以后的OTA更新.

  • 尝试去改变改进的文件导致更新失败.对于文件和块OTA更新来说,如果OTA尝试去修改一个已经被改进的文件,OTA更新就会失败.

  • 尝试去访问该改进的文件可能生成错误(仅仅是dm验证).对于文件和块OTA更新来说,如果dm验证被使能了,并且OTA尝试去访问改进的文件系统的部分内容的话,OTA就会生成错误.

版权声明:您好,转载请留下本人博客的地址,谢谢 举报

相关文章推荐

民意调查Django实现(一)

经过两天的python2.7的学习和Django的基础部分的了解,在Django的官网上,我看到了一个实例程序,该实例程序是通过一个基本民意调查程序的完成来深入理解Django框架。该民意调查有两个部...

Ubuntu16.04里django的配置和安装

Ubuntu16.04里django的配置和安装关于在Ubuntu16.04里django的配置和安装:sudo apt-get install python-pip sudo apt-get ins...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

POJ2516 Minimum Cost

Minimum Cost Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 7233   A...

OTA更新包内部

系统从bootable/recovery/updater中构建updater二进制程序,并且在OTA更新包里面使用他.更新包本身是一个.zip压缩包文件(ota_update.zip,incremen...

ubuntu下Django的安装和使用(一)

(一):背景在线由于现在工作的需要,我需要使用python来进行一个网站后台的开发,python之前接触过其语法的学习,基本的东西已经掌握,但是当时自学的时候是学得python3.5,而现在要使用py...

ubuntu16.04安装Django

安装官方源1),sudo apt-get update sudo apt-get install python-django安装djange官方源1),sudo apt-get updatef...

Ubuntu16.04下Apache2.4部署Django1.8.7

一、搭建环境 1)        安装Django1.8.7 sudo apt-get install python-django-y 2)     ...

Ubuntu Django mysql apache2 搭建

前言        Django是一个开源的Web应用框架,由Python写成,它的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django采用MVC设计模式注重组件的重用性和“可插拔性”,...

ubuntu linux Django 安装 及 创建简单 的web示例

下载Django之前你要确保你的系统安装了python,在终端输入python,看看是否安装了python   ctrl + c ,退出。若是没有安装则,安装:sudo apt-get instal...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)