基于块的OTA

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49945085 你可以使能运行Android5.
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49945085

你可以使能运行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就会生成错误.

目录
相关文章
|
物联网 定位技术
M.2或MINIPCIE或PCIE XX设备调试记录
M.2或MINIPCIE或PCIE XX设备调试记录
|
6月前
|
Java API Android开发
Android系统升级A/B分区OTA升级应用层调用UpdateEngine代码
Android系统升级A/B分区OTA升级应用层调用UpdateEngine代码
132 0
|
开发工具 Android开发
Android平台GB28181设备接入端预置位查询(PresetQuery)探讨和技术实现
之前blog介绍了GB28181云台控制(PTZCmd)相关,本文主要是介绍下GB28181预置位查询。
168 0
|
测试技术
PCD235B101 3BHE032025R0101 用于定时和触发的附加总线线路
PCD235B101 3BHE032025R0101 用于定时和触发的附加总线线路
97 0
PCD235B101 3BHE032025R0101 用于定时和触发的附加总线线路
西门子S7-1200的运动控制功能、系统使能指令块、错误确认指令块、回参考点或设置参考点指令块的参数含义
今天我们来介绍西门子S7-1200的运动控制功能。西门子S7-1200的运动控制指令是通过使用相关工艺数据块和CPU的专用脉冲串输出来控制轴的运动。
西门子S7-1200的运动控制功能、系统使能指令块、错误确认指令块、回参考点或设置参考点指令块的参数含义
|
监控
预置位定义及功能
  1、预置位功能解释:     当用户通过控制设备操作终端的监控云台监视目标时,操作人员可以把当前监视目标设置一个预置位,比如一个动点云台,可以365或360度全方位旋转监视;操作人员可以把一个窗口、柜台、办公桌、出入口、存车处等需要监视的地点设置为预置位;设置好的预置位可以通过控制设备软件操作把当前位置保存在终端监控云台的解码器上。
2140 0
ESP8266 OTA之服务器更新
我之前介绍了两篇关于ESP8266的OTA更新方法: 基于 Arduino OTA "ESP8266 OTA之Arduino IDE更新" 基于 浏览器的 OTA "ESP8266 OTA之浏览器更新" 说实话以上这两种方案除有点好玩其实没有什么实用性,由其在开发产品时上述的两种方案就是一种鸡肋,甚至可以说是不可用的。
4505 0