建议的设备启动流程如下所示:

图 1. 启动时验证流程

适用于 A/B 设备的流程

如果设备使用的是 A/B 系统,则启动流程略有不同。必须先使用启动控件 HAL 将要启动的槽位标记为 SUCCESSFUL,然后再更新回滚保护 (Rollback Protection) 元数据。

如果平台更新失败(未标记 SUCCESSFUL),A/B 堆栈便会回退至仍具有先前 Android 版本的其他槽位。不过,如果已设置回滚保护元数据,之前的版本会因回滚保护而无法启动。

将启动时验证状态传达给用户

确定设备的启动状态后,您需要将该状态传达给用户。如果设备没有任何问题,则会继续运行,而不显示任何内容。启动时验证问题分为以下几类:

黄色:针对设有自定义信任根的已锁定设备的警告屏幕

橙色:针对未锁定设备的警告屏幕

红色 (eio):针对 dm-verity 损坏的警告屏幕

红色 (no os found):未找到有效的操作系统

具有自定义信任根的已锁定设备

黄色屏幕示例:

如果设备处于已锁定状态,已设置自定义的信任根,并且映像已使用该自定义信任根进行签名,则会在每次启动时显示黄色屏幕。黄色屏幕会在 10 秒钟后关闭,并且设备会继续启动。如果用户按下电源按钮,“按电源按钮即可暂停”文字便会更改为“按电源按钮即可继续”,并且该屏幕永远都不会关闭,但设备可能会调暗或关闭显示屏以防烧屏。如果再次按下按钮,该屏幕便会关闭,并且手机会继续启动。

对于hex-number,请使用用于验证的 libavb 表示形式公钥的 sha256 的前 8 位数字,例如 d14a028c。

建议采用的文本:

您的设备加载了不同的操作系统。

请在其他设备上访问此链接以了解详情:

g.co/ABH

ID:hex-number

power_settings_new 按电源按钮即可暂停

已解锁的设备

橙色屏幕示例:

如果设备处于已解锁状态,则会在每次启动时显示橙色屏幕。橙色屏幕会在 10 秒钟后关闭,并且设备会继续启动。如果用户按下电源按钮,“按电源按钮即可暂停”文字便会更改为“按电源按钮即可继续”,并且该屏幕永远都不会关闭(设备可能会根据需要调暗和/或关闭显示屏,以防出现烧屏或类似问题)。如果再次按下按钮,该屏幕便会关闭,并且手机会继续启动。

对于hex-number,请使用用于验证的 libavb 表示形式公钥的 sha256 的前 8 位数字,例如 d14a028c。

建议采用的文本:

引导加载程序已解锁,无法保证软件完整性。攻击者可能可以获取设备上存储的所有数据。请勿在此设备上存储任何敏感数据。

请在其他设备上访问此链接以了解详情:

g.co/ABH

ID:hex-number

power_settings_new 按电源按钮即可暂停。

dm-verity 损坏

红色 eio 屏幕示例:

如果找到 Android 的有效版本,并且设备当前处于 eio dm-verity 模式,则会显示红色 eio 屏幕。用户需要按电源按钮才能继续。如果用户未在 30 秒内确认警告屏幕,设备将关机(以防烧屏并节省电量)。

注意:系统可能会在显示此屏幕后显示其他警告屏幕。例如,如果设备处于 UNLOCKED 状态,则之后会显示橙色屏幕。

建议采用的文本:

您的设备已损坏。该设备不可信任,并且可能无法正常工作。

请在其他设备上访问此链接以了解详情:

g.co/ABH

power_settings_new 按电源按钮即可继续。

找不到有效的操作系统

红色屏幕示例:

如果找不到有效的 Android 版本,屏幕会显示红色。设备无法继续启动。如果用户未在 30 秒内确认警告屏幕,设备将关机(以防烧屏并节省电量)。

对于hex-number,请使用用于验证的 libavb 表示形式公钥的 sha256 的前 8 位数字,例如 d14a028c。

建议采用的文本:

找不到有效的操作系统。设备无法启动。

请在其他设备上访问此链接以了解详情:

g.co/ABH

ID:hex-number

power_settings_new 按电源按钮即可关机。

解锁确认

屏幕示例:

显示一个解锁确认屏幕,以响应通过 fastboot 接口执行的 fastboot flashing unlock 命令。初始选中的是“不解锁”选项。如果用户未在 30 秒内与警告屏幕互动,屏幕会消失并且该命令会失败。

建议采用的文本:

如果您解锁引导加载程序,则可以在此手机上安装自定义操作系统软件。自定义操作系统未经过与原始操作系统相同级别的测试,可能会导致您的手机和已安装的应用停止正常工作。使用自定义操作系统无法保证软件完整性,因此在引导加载程序处于解锁状态时存储在手机上的所有数据都可能面临风险。

为防止他人未经授权访问您的个人数据,解锁引导加载程序还将删除您手机上的所有个人数据。

按音量调高按钮/音量调低按钮可选择是否解锁引导加载程序,然后按电源按钮即可继续。

解锁

解锁引导加载程序。

不解锁

不解锁引导加载程序并重启手机。

锁定确认

显示一个锁定确认屏幕,以响应通过 fastboot 接口执行的 fastboot flashing

lock 命令。初始选中的是“不锁定”选项。如果用户未在 30 秒内与警告屏幕互动,屏幕会消失并且该命令会失败。

文本:

如果您锁定引导加载程序,则无法在此手机上安装自定义操作系统软件。为防止他人未经授权访问您的个人数据,锁定引导加载程序还将删除您手机上的所有个人数据。

按音量调高按钮/音量调低按钮可选择是否锁定引导加载程序,然后按电源按钮即可继续。

锁定

锁定引导加载程序。

不锁定

不锁定引导加载程序并重启手机。

将启动时验证状态传达给 Android

屏幕示例:

引导加载程序通过内核命令选项将启动时验证状态传达给 Android。它会将 androidboot.verifiedstate 选项设置为以下其中一个值:

green:如果设备处于LOCKED状态且未使用可由用户设置的信任根

yellow:如果设备处于LOCKED状态且使用了可由用户设置的信任根

orange:如果设备处于UNLOCKED状态

androidboot.veritymode 选项设置为 eio 或 restart,具体取决于启动加载程序在处理 dm-verity 错误时所处的状态。如需了解详情,请参阅处理验证错误。

redhad环境android源码编译,启动流程  |  Android 开源项目  |  Android Open Source Project...相关推荐

  1. Android 源码 PackageManagerService 启动流程分析

    <Android 源码 installPackage 流程分析>一节着重分析了 apk 安装流程,接下来我们分析 PackageManagerService 启动时都做了些什么? 执行 P ...

  2. 【Android开发】构建Android源码编译环境

    原文:http://android.eoe.cn/topic/android_sdk 构建Android源码编译环境 123456789 10 11 12 13 14 15 16 17 18 $ su ...

  3. Android源码编译环境搭建教程 (一) - Ubuntu系统构建

    Android源码编译环境搭建教程 (一) - Ubuntu系统构建 本教程为感兴趣的同学提供Android源码编译的环境搭建,当然这里都是基于windows系统,mac系统也差不多,将相应的软件替换 ...

  4. Android源码编译及启动模拟器

    Android源码编译及启动模拟器 源码下载 (1)更改下载源 (2)安装源码下载工具 (3)下载源码 (4)安装环境依赖 源码编译 启动模拟器 源码下载 Ubuntu18.0 (1)更改下载源 源码 ...

  5. Android 源码编译详解【合集篇】

    Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...

  6. Android源码编译(基于Ubuntu18.0.4)

    文章目录 一.环境搭建 硬件要求 软件要求 操作系统和 JDK 主要软件包 软件安装 Git安装 repo工具安装 安装 openJDK 8 其他依赖安装 二.源码下载 建立源码文件夹 初始化仓库 源 ...

  7. Android 源码编译 及 mk文件解读

    Android 源码编译 参考:探索Android FrameWork底层开发视频_哔哩哔哩_bilibili 基础 1.源代码编译 分为2个部分: (1)boot/Kernel (2)Android ...

  8. Android源码编译make的各类错误解决方案汇总

    问题: You are attempting to build with the incorrect version of java.  Your version is: java version & ...

  9. 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(上)

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/11/es-code02/ 前提 上篇文章写了 ElasticSearch 源码解析 -- ...

最新文章

  1. 【嵌入式】openmv与stm32的串口通信
  2. ACL-文件访问控制列表
  3. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - C.奇妙的数字
  4. cloud 部署_使用Google Cloud AI平台开发,训练和部署TensorFlow模型
  5. 庆祝.NET Core悄然崛起:免费送50本优秀技术书籍,请笑纳!!
  6. 关于拜读张鑫旭文章,了解的新属性
  7. java亚马逊模拟登录_java – 亚马逊MWS入门
  8. sql server 2005 链接服务器:未将服务器 配置为用于 RPC
  9. CDN的基本原理和基础架构
  10. NCH ClickCharts(流程图绘制软件)v4.10 汉化免费版
  11. 威斯敏斯特教堂(西敏寺)墓碑上的话(WestMinster Abbey,When I was young and free...,修身齐家治国平天下)...
  12. 阜师院2016年c语言真题答案,C语言A卷答案.doc
  13. 洛谷P3015 [USACO11FEB] Best Parenthesis
  14. 用photoShop简单提取他人的签名
  15. 图算法图神经网络归纳总结
  16. Linux dd 命令 限制文件夹大小
  17. 社区检测(网络分析)(图聚类)---进阶概念解析
  18. 国外免费电子书资源下载
  19. Soul网关源码学习(14)- hystrix,resilienc4j,sentinel 插件的使用和对比
  20. 信息系统风险评估内容

热门文章

  1. 独家|IBM跨越里程碑,量子芯片弛豫时间实现量级优势抵达毫秒时代
  2. CMake 与Ninja 组合的关键点
  3. 微信小程序跨页面通信解决思路
  4. 在Ubuntu中安装wannier90-3.1.0(非Intel-toolchain)
  5. 《无线电与电视》杂志创刊50周年纪念版耳机放大器 DIY笔记
  6. 酷克数据简丽荣:“模型热”将引发云计算与数据库行业大变革
  7. 《网络安全0-100》VPN 讲解
  8. spring boot如何进行统一版本的管理呢
  9. Fabric 1.0源代码分析(32) Peer #peer node start命令实现
  10. vue3上传图片解析身份证,银行卡