一、刷机原理

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

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

二、刷机方法

(1) recovery方法,就是我们平时将update.zip保存在SD卡,按X+电源键开机,这种方法是调用了recovery的方法将各种img或文件进行复制等操作。关于recovery的工作原理,另文再讲。
(2) fastboot方法,这个方法其实是比较酷的方法,说白点,fastboot就是将已有的各分区映象文件(img文件,意义上类似我们对光盘做的映象文件)直接覆盖写到指定分区中,有点类似我们平时操作系统的Ghost还原。
这两种方法哪种更好,这就不好比高低了,总的来说:
Recovery方法更简单,只需要傻瓜式的将update.zip放到SD卡的要目录下,然后进入Recovery模式alt-s就可以了,但和任何傻瓜式东西一样,他的灵活度就很小了,而且出错了也都不知道如何解决。一般来说做Rom的高手为了保证Rom的可靠性,在安装程序中都会对一些安装环境进行一些确定,而各位的手机环境又是千变万化的,Rom高手也很难考虑周全,另外,Recovery程序本身也有一些环境验证。
fastboot方法更灵活,功能也更强大,fastboot方法不需要依赖于recovery,甚至linux底层刷坏了recovery模式都进不了的情况下也可以通过fastboot方工刷回来。fastboot模式其实是调用spl进行刷机的,所以如果刷spl坏了,fastboot模式应该也进不了,也就是砖了。fastboot方法需要各位电脑上有fastboot程序,同时手机要进入fastboot模式才可以操作,关于这些知识,请参见Google *^_^*

三、Android系统中的各分区(可能分区这个说法不太准确)
(1) hboot(我们刷的SPL就是这玩意),这个分区是最基本的引导分区(类似电脑中的BIOS),这个区坏了,差不多就变砖了,所以我们刷SPL时才要如此小心啊。
(2) boot,这个分区应该是linux操作系统的引导分区。
(3) radio,这个分区是手机的一些底层设备相关的驱动或功能程序吧,如打电话和发短信等,不同的系统版本会有不同的radio配套,我们平时刷了高版本的ROM后,如果不刷高版本的Radio就有可能导致打电话不正常之类的。
(4) recovery,这个分区装的就是前面提到的recovery程序了,这个刷不同的recovery版本可以带来不同的功能,但一般来说,刷recovery最主要的就是提Root权限。
(5) system,是一般发布的ROM的主要功能程序分区了,我们说的ROM功能和自带程序的定制应该就是基于这个分区的修改和编译了。
(6) userdata,用户数据,不说了。
(7) cache,缓存,一般是用来OTA升级时的缓存,我们说刷SPL可以增加程序区的空间大小就是主要将这个区的大小缩水了然后加大了程序区的分区大小。

from:https://blog.csdn.net/y97523szb/article/details/6452076

【转】Android ROM分析(1):刷机原理及方法的更多相关文章

  1. android 与 小米1S刷机学习

    本文内容为本博客作者原创,转载请注明出处或者发私信. [名词] 1.ROM包 :安卓手机系统,以.ZIP结尾,类似windows的 win7系统包,300M-700M不止 2.卡刷(Recovery模 ...

  2. Nexus 5 Android 6.0.1刷机、Root

    Nexus 5 Android 6.0.1刷机.Root 2016-01-24   一.     准备 1.      备份通讯录等数据,切记. 2.      准备adb .fastboot.网上搜 ...

  3. android [因为开了刷机精灵等软件 导致adb 无法使用]error: could not install *smartsocket* listener: cannot bind

    今天 使用 刷机精灵后 在使用android studio 时发现 adb 无法正常使用.   于是 想重启 adb.exe , 直接在DOS里杀掉adb输入:adb kill-server 再启动输 ...

  4. android在linux下刷机

    只需要下载相应的zip包,不需装什么手机助手. 1.下载相应zip包(ROM) http://download.mokeedev.com/ 比如我在上述网站下的魔趣的对应机型的ROM包. 2.linu ...

  5. [Android - QPST] 高通刷机/QPST刷机

    参考网站: https://forum.xda-developers.com/zuk-z2-pro/how-to/howto-flash-stock-rom-t3435109 http://ask.l ...

  6. 从CM刷机过程和原理分析Android系统结构

    前面101篇文章都是分析Android系统源代码,似乎不够接地气. 假设能让Android系统源代码在真实设备上跑跑看效果,那该多好.这不就是传说中的刷ROM吗?刷ROM这个话题是老罗曾经一直避免谈的 ...

  7. Android手机ROM刷机简介

    这一段时间刷了一堆ROM,安卓系列.CM.Hero.OldMos.隔壁新出的Android2.0,反正都尝了一下鲜,手机的照相机也刷得再也启不来了(不知道什么原因,杯具).有话说:"久病成良 ...

  8. 手机刷机软件与ROM的盈利模式分析

    一. 智能手机的兴起不过短短几年时间,更新迭代已经让实体键盘成为回忆.智能手机带来的是人们生活习惯的改变,对于手机的重度依赖,是好是坏不去评价.智能手机相对于之前的手机最大的改变不仅仅是屏幕的飞速变大 ...

  9. Android刷机教程

    我的机器是Nexus 5 一. 安装驱动 如何进入fastboot模式 1. 拔掉数据线,将手机关机 2. 关机后同时按住[音量减小键]和[开关机键]即可进入Fastboot模式 开启usb调试  - ...

随机推荐

  1. Oracle 逻辑存储结构

    一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...

  2. MongoDB 设置参数

    服务器配置文件分析 bin目录下的mongod.cfg是服务器的配置文件,文件中主要的配置参数: 1.数据库文件的存放位置 2.服务器日志文件的存放位置 3.默认的IP地址.端口号 设置密码 默认情况 ...

  3. [LeetCode] 78. 子集 ☆☆☆(回溯)

    描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3]输出:[ [3],  [1],  [2] ...

  4. Abp vNext抽茧剥丝01 使用using临时更改当前租户

    在Abp vNext中,如果开启了多租户功能,在业务代码中默认使用当前租户的数据,如果我们需要更改当前租户,可以使用下面的方法 /* 此时当前租户 */ using (CurrentTenant.Ch ...

  5. python基础-函数递归

    函数递归 概念:直接或间接地重复调用函数本身,是一种函数嵌套调用的表现形式. 直接调用:在函数内部,直接调用函数本身 def foo(): print("这是foo函数") foo ...

  6. 肖哥HCNP-学前准备篇笔记

    HCNA:助理 HCNP:工程师 HCIE:专家 vmvare workstation 1.安装 2.创建新的虚拟机-->典型-->稍后安装系统-->选择系统模式-->选择位置 ...

  7. 调试中行支付demo

    用eclipse调试中行支付demo,本来报错. 让我同学帮我远程看了下,他删了服务器,又添加服务器,然后竟然可以运行了,牛逼! 原来报错: at java.net.URLClassLoader$1. ...

  8. 项目Alpha冲刺——集合

    作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 完成项目Alpha冲刺 团队信息 队名:火鸡堂 队员学号 队员姓名 博客地址 ...

  9. 项目Alpha冲刺 8

    作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 介绍第8天冲刺的项目进展.问题困难和心得体会 1.团队信息 队名:火鸡堂 队 ...

  10. JAVA 启动服务命令

    java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=7301,suspend=n -Xms2048m -Xmx4096m -XX:+ ...