二、Android BCB的作用

本文深入解析OTA升级流程,涵盖问题来源、固件内容、开机流程、BCB作用及Recovery模式交互,阐述了主系统与Recovery模式下关键组件的工作原理。

这篇很多部分来源于其他博客,我个人进行了总结,可以串联起来整个ota流程

1、问题来源
2、固件内容与开机流程
3、开机BCB作用
4、recovery升级交互流程

1、问题来源
查看解密流程和recovery.cpp升级流程,多次提到BCB相关
1、从system到recovery需要用到BCB
文件RecoverySystemService.java //设置BCB
public boolean setupBcb(String command) {
return setupOrClearBcb(true, command);
private boolean setupOrClearBcb(boolean isSetup, String command) {
Slog.i(TAG, "uncrypt " + (isSetup ? "setup" : "clear") +" bcb successfully finished.");
对应Log:RecoverySystemService: uncrypt setup bcb successfully finished.\
2、 recovery升级也需要操作BCB
//get_args方法获取misc分区的command文件
std::vector<std::string> args = get_args(argc, argv);
std::vector<char*> args_to_parse(args.size());
std::transform(args.cbegin(), args.cend(), args_to_parse.begin(),
[](const std::string& arg) { return const_cast<char*>(arg.c_str()); });
Last_log:
I:Boot command: boot-recovery
I:Got 3 arguments from boot message
3、遇到过一次升级问题,因为系统会发送多次开机广播而导致升级失败,第二次开机广播清除了command信息
所以查询了一些资料作为整理该部分涉及到bootloder Misc system recovery boot分区
在升级流程上很少有客户会改动,作为了解就可以

2、固件内容
Boot:包含Linux内核和一个最小的root文件系统(装载到ramdisk中),
用于挂载系统和其他的分区,并开始Runtime。正如名字所代表的意思(注:boot的意思是启动),
这个分区使Android设备可以启动。如果没有这个分区,Android设备通常无法启动到Android系统。
System:这个分区几乎包含了除kerner和ramdisk之外的整个android操作系统,
包括了用户界面、和所有预装的系统应用程序和库文件(AOSP中可以获取到源代码)。
在运行的过程中,这个分区是read-only的。当然,一些Android设备,也允许在remount的情况下,
对system分区进行读写。 擦除这个分区,相当于删除整个安卓系统,会导致不能进入Main System,
但不会影响到Recovery。因此,可以通过进入Recovery程序或者bootloader程序中,升级安装一个新ROM。
Userdata:用户数据区,用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值