目录
Android 11 正式版发布了,刷了个新系统体验下,顺便把刷机、root、安装 Xposed 这些过程整理下
整体流程是参考Android Explained的系列文章:https://www.androidexplained.com/google/pixel-2/
0x01 启动模式(Boot Modes)
Android系统相对开源,允许用户对设备进行自定义修改,对应不同的功能和权限,提供了一系列启动模式允许用户不同程度地访问设备的各个空间,包括一般启动模式(normal mode)、安全模式(safe mode)、恢复模式(recovery mode)、引导模式(bootloader mode)、快速启动模式(fastboot mode)和诊断模式(diagnostic mode)。
1.1 Bootloader
Bootloader,听名字猜测,也可以大概知道这是一个跟系统启动相关的程序。
当一个设备开机时,系统就会上电,此时硬件电路会产生一个确定的复位时序,接着 CPU 被复位,从某个内存地址开始执行指令。第一条指令的地址是一个固定值,由 CPU 制造商指定,而从这块地址开始保存的这段程序就是 Bootloader,也即引导程序。
所谓引导程序,即在操作系统运行之前,一个类似 PC 里面 BIOS 的程序,来完成整个系统的加载与启动,包括硬件设备初始化、内核文件加载、内存空间映像等操作,这些就是Bootloader 的工作,他会将系统的软硬件环境带到一个合适的状态,为运行操作系统做好准备。由于不同厂商的硬件差异,他们的引导流程也不尽相同。
事实上,除了完成这些初始化,Bootloader 还会去检测一些特殊事件,比如特殊按键组合,进入其他的一些工作模式,如 Fastboot 。
开启方式:上电自动进入 Bootloader
1.2 Fastboot Mode
Fastboot 是 Bootloader 启动后进入的一个特殊阶段,通过数据线连接 PC,通过在 PC 上执行一系列命令操作设备,其中最主要的就是向不同系统分区写入文件,即通常所说的刷机,而且还属于刷机中的线刷
(还有一种刷机方式是卡刷,区别在于线刷直接通过数据线向硬盘写入镜像文件,卡刷则需要借助 Recovery 模式从SD卡中获取镜像文件进行烧写)
这些操作都是通过 fastboot
这个命令来实现的,有点类似 adb 的通信方式
# 刷入分区
fastboot flash [boot/system/recovery] [boot.img/system.img/recovery.img]
# 刷入所有分区,即查找所有image文件并烧写到对应分区
fastboot flashall
# 擦除分区,恢复系统设置,注意不要乱擦系统分区
fast