软件架构
Recovery升级系统原理:
- Main System下载新版本升级包到设备存储;
- 重启进入Recovery System;
- Recovery从设备存储load升级包并升级Main System;
- 最后重启回到Main System。
与之对应的软件架构如下图所示:
- Main System
由五个软件层级组成,自下而上依次是:BootLoader、Kernel、Native、Framework、Application。 - Recovery System
由三个软件层级组成:BootLoader、Kernel、Native。
从图中可以看出Main System和Recovery System启动过程中共用一个BootLoader,BootLoader决定启动到哪个目标系统,然后从不同的分区加载软件镜像到内存中并跳转执行。
- BootLoader
比如高通平台使用UEFI作为BootLoader,从abl分区加载运行(MTK平台使用LK,从lk分区加载运行)。至于谁加载BootLoader并跳转到BootLoader运行?读者可以认为是固化在CPU上的一段代码完成的(实际上要比这复杂的多,但是原理一致)。 - Kernel
Main System和Recovery System的kernel是独立的(虽然内容一模一样,但根据传递的cmdline部分软件流程有差异)。都是BootLoader从指定分区load到固定的内存区域并调转运行的(Main System是从boot分区加载,Recovery System从recovery分区加载)。 - Native
Main System的Native层比较复杂,主要是从system和vendor分区加载的Android C/C++软件运行环境;
Recovery System的Native层相较就简单很多,是从recovery分区加载的ramdisk提供的简单C/C++软件运行环境; - Framework
简单理解为Android java软件运行环境即可。 - Application
出厂预转或者用户安装的app。