aosp_007. android刷机

android系统启动的时候,首先会进行一些诸如硬件自检之类的操作,这些操作完成以后(至少它应该知道当前的机器有没有电),会检查一下当前手机按键的状态(接下来就是所谓刷机模式切换了,不同的android手机有不同的按键组合用来进入刷机模式),如果此时按键状态处于刷机组合,那么系统会调用ROM里面的一个叫做recovery的程序(这时就是进入了所谓的刷机程序了,它只是一个工具性质程序,用于检查刷机包的完整性和数字签名的合法性。对于目前大多数root过的机器而言,数字签名的合法性都不会成问题,然后由recovery程序将刷机包进行解压,然后把刷机包里面的文件写入到ROM中去,以此完成刷机过程);如果此时按键没有标明是刷机模式,那么系统会创建内存盘,开始从ROM里面载入相应的文件系统,并把相关的文件拷贝到内存盘中,进而引导linux启动,然后是启动虚拟机dalvik,然后就是创建工作进程载入和运行framework,然后就会看到待机的画面。当然在这个过程中还发生了许多事情,启动了许多服务等等。

现在来总结一下,实际上刷机包就是一个ROM文件的压缩包,进入刷机模式后,recovery程序会把刷机包里面的文件写入ROM存储区替换ROM存储区的原有文件;当下次启动手机的时候,会从ROM中载入刚刚替换过的文件,并利用这些文件来启动和运行系统。这就是刷机包的全部功能和作用,刷机的本质就是文件的覆盖和替换操作。
 

安卓系统一般把rom芯片分成7个区,如果再加上内置sd卡这个分区,就是8个:

  • hboot分区----------负责启动。
  • radio分区----------负责驱动。
  • recovery分区-------负责恢复。
  • boot分区-----------系统内核。
  • system分区---------系统文件。
  • cache分区----------系统缓存。
  • userdata分区-------用户数据。

就是第7个区userdate区的大小,这个区主要装一些软件,是用户可以使用的分区。这个分区的大小直接影响到安装软件的数量。也就是说userdate区就是我们常说的“可用rom”在安卓里,虽然软件可以安装到卡中,但是一些系统软件最好还是安装到userdata分区,否则会出现加载的一些小问题,比如使用的桌面软件和一些在桌面上显示插件的软件。并且就算你把软件都装到卡里,userdata分区还是会不断减小。就像在电脑里,就算你把软件装到D盘,仍然会在c盘生成一些系统文件,占掉c盘空间一样。

2. BootLoader

简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

3. BootLoader 和 FastBoot

从字面意思来讲,Fastboot是一个英文单词,翻译成中文的意思是『快速启动』。Fastboot 可以说是一个通信协议,电脑可以通过这个通信协议,直接向手机系统不同分区中写入文件(.img 文件)。

fastboot 主要是用来与bootloader的USB通讯的PC命令行工具。他一般主要也用来向bootloader传送刷机文件进行文件分区重烧。 因此在使用时,必须有一个PC机并且USB线要始终联着。所以这种方式称为线刷。 用fastboot需要bootloader 支持,所以不是每一家公司产品都支的这个功能的

通常大家所讨论的Fastboot,通常都是说安卓手机的Fastboot模式。在安卓手机中fastboot是一种比recovery更底层的刷机模式。简单来说,就是使用USB数据线,连接电脑的一种刷机模式。这种刷机方式,我们又通常称为“线刷”刷机。另外安卓手机还有一种刷机方式,叫做“卡刷”,两者区别如下。

线刷: 直接想手机硬盘写入*.img 文件,我个人觉得这种方法比较快捷,而且省事。但是必须借助电脑和数据线。
卡刷:就是利用recovery的从SD卡中更新系统的这个功能,如果你想刷第三方Rom,必须刷入个第三方recovery,只有fastboot模式才能刷recovery.img。卡刷有个限制,必须要把想要更新的ROM(Android系统)拷贝到SD卡上。如果手机已经是砖了。那只能用线刷了。


卡刷

刷入RECOVERY

一般官方的ROM的RE在第三方ROM上做了很多限制,如果要刷第三方ROM,替换RE是第一步 方法很简单,先下载对应机型的RECOVERY包 五太子常用的是CWM、TWRP,一个非触屏,一个触屏版。推荐使用CWM6.0以后的版本,因为会有新加入的sideload功能,可以让你不用事先将ROM包拷贝至SD卡或手机内存。

该模式可根据用户的需要进行修改,因此有官方recovery模式以及第三方recovery模式。第三方recovery模式可以识别第三方rom包,因此可以用来刷机。而官方recovery一般不能识别第三方zip文件。好用的第三方RE:TWRP 和 CWM

Recovery刷机包是称为Google Update 格式。在用Recovery恢复时,刷机包通常放在SD卡里,所以这里刷机一般称为卡刷。

第三方RE网站:https://twrp.me/Devices/      https://www.androidsage.com/

 #fastboot flash recovery recovery.img

recovery方法:
将update.zip保存在SD卡,按X+电源键开机,这种方法是调用了recovery的方法将各种img或文件进行复制等操作。

手机进入recovery模式方法:关机,同时按住开机键和+音量键;不同手机型号进入recovery的方法不同。

1、下载合适的ROM
2、拷贝zip格式的ROM文件,到SD卡
3、重启并进入recovery模式
4、备份手机,清除数据
5、菜单选择刷机
6、选择ROM文件
7、确定
8、成功后重启

线刷

fastboot方法:

当手机进去fastboot模式的时候,PC端就可以使用fastboot命令操作更低层的东西啦!

解锁bootloader

#对于新款设备(2015 年及之后发布的设备):
fastboot oem unlock

#对于老款设备(2014 年及之前发布的设备):
fastboot flashing unlock

擦除分区

fastboot erase {partition} 
例:
fastboot erase boot
fastboot erase system

烧写指定分区

1.进入bootloader烧写模式
  #adb reboot bootloader
2.查看设备
  #fastboot devices 
3.开始烧写
  #fastboot flash system system.img //烧写开始
  #fastboot flash persist persist.img
  #fastboot flash cache cache.img
  #fastboot flash userdata userdata.img
  #fastboot flash boot boot.img
  #fastboot flash recovery recovery.img
4.重启设备
  #fastboot reboot

烧写所有分区

fastboot flashall
注意:此命令会在当前目录中查找所有img文件,将这些img文件烧写到所有对应的分区中,并重新启动手机。

烧入zip

1、下载ROM,记录ROM在PC上的路径
2、重启手机进入fastboot mode,通过下面两种方法之一
1、adb reboot bootloader (需要USB调试开关打开).
2、关机长按音量加和电源按钮
3、清除手机数据
fastboot -w
4、升级到ROM
fastboot update </path/to/your/RomFile.zip>
5、你的手机将刷机并自动重启到新的ROM

烧写开机画面

fastboot flash splash1 开机画面.bmp
fastboot flashing unlock    #6.0以上设备 设备必须解锁,开始刷机(这个不同的手机厂商不同)
  fastboot erase {partition}  # 擦除分区
  fastboot  erase  frp    # 擦除 frp 分区,frp 即 Factory Reset Protection,用于防止用户信息在手机丢失后外泄
  fastboot  flash  boot  boot.img    # 刷入 boot 分区
  fastboot  flash  system  system.img    # 刷入 system 分区
  fastboot  flash  recovery  recovery.img    # 刷入 recovery 分区
  fastboot flashall    #烧写所有分区,注意:此命令会在当前目录中查找所有img文件,将这些img文件烧写到所有对应的分区中,并重新启动手机。
  fastboot  format  data    # 格式化 data 分区
  fastboot  flashing lock    # 设备上锁,刷机完毕
  fastboot  continue    # 自动重启设备
  fastboot reboot# 重启手机
  fastboot reboot-bootloader# 重启到bootloader 刷机用
  fastboot devices  ## 发现手机,显示当前哪些手机通过fastboot连接了

小米开发版线刷

1、关机后按住开机键+音量下键进入bootloader,使用usb连接手机

2、解压刷机包

sudo ./falsh_all.sh

猜你喜欢

转载自blog.csdn.net/zzq1824837536/article/details/88689319