Android 的底层基于 Linux Kernel,因此从启动流程来看,先启动 Linux Kernel,然后才启动 Android Framework,最后进入应用程序 Launcher,也就是看到的主界面。因为这一流程复杂且冗长,所以分为三篇文章来介绍,其实也就是 Android 启动的三个阶段。第一个阶段是 Linux 启动过程,包含上电后从 Bootrom 开始,到进入 BootLoader,然后运行 Linux Kernel。第二阶段是 Android Framework 的启动过程,包含启动 Zygote,System Server,servicemanager 等 Android 核心服务进程。第三阶段为启动第一个 Android 应用程序 Launcher 的过程。
Android 支持多种启动模式,主要有正常模式(normal mode),恢复模式(recovery mode),快速启动模式(fastboot mode)等,其中后两者是刷机模式。通过以下方式可以快速进入刷机模式:
adb reboot recovery 进入 recovery 模式
adb reboot bootloader 进入 fastboot 模式
第一阶段又可以分成三个小步骤(有的资料会把步骤1和步骤2作为一个整体,统称为 Bootloader)。
1. 机器上电,进入Bootrom
Bootrom 是固化在芯片中的一小段程序,主要功能是上电时完成硬件自检,然后从固定分区加载 Bootloader。严格来说,由于 Bootrom 需要尽可能精简,一般只会加载 Bootloader 头部一小段镜像内容,再由这一小段镜像加载剩余 Bootloader。
Bootrom 的功能相当于 PC 上的 BIOS,Bootloader 的功能相当于 PC 上的 GRUB,一般每个 Android 厂商都会根据实际需要对 Bootloader 进行客制化。此外,一些手机厂商会锁住 BootLoader,这样确保用户只能使用官方的系统。如果想要运行第三方的 R