首页
社区
课程
招聘
[旧帖] [原创]Android刷机相关分享 0.00雪花
发表于: 2015-4-30 11:36 1292

[旧帖] [原创]Android刷机相关分享 0.00雪花

2015-4-30 11:36
1292
现在已经不是刷机技术党的辉煌时代了,电脑上已经有了各种一键刷机的软件了,甚至连ROM包都不用自己找了,刷机软件根据你的连接机型已经扎到了匹配ROM,太好太强大了。
     但是还是那句话刷机有风险,刷机需谨慎。如果我们在一键刷机的工具上出了问题,去网上找教程时看到一大堆的fastboot recovery bootloader这些术语时,是不是觉得来到了另外一个世界。
我曾经也深受其惑,所以凭着兴趣自己了解下,希望跟大家分享下.

刷机术语
     首先来张神图

     这就是刷机过程中会遇到的几个重要的数据的结构关系图.
     Bootloader是手机启动后第一个跑起来的,就像电脑上的BIOS,BIOS启动根据不同的情况启动Recovery或者Kernel.
     FastBoot是Bootloader提供的一个功能,可以确保你怎么刷手机都可以满血复活,因为你改不了Bootloader,所以Fastboot的功能一直与你同在,但是不同Bootloader支持的功能也不尽相同.
Android分区概念和分区内容提取
     Android基于Linux,所以是分区,挂载这种概念的。
     刷机的ROM包里一般会有boot.img system.img userdata.img这些文件,这些文件在刷机时会刷到特定的分区上去,在Android启动时挂载到对应的/system /data挂载点上去。
Boot.img的结构如下:

  1. 
    1. ** +-----------------+  
    2. ** | boot header     | 1 page  
    3. ** +-----------------+  
    4. ** | kernel          | n pages  
    5. ** +-----------------+  
    6. ** | ramdisk         | m pages  
    7. ** +-----------------+  
    8. ** | second stage    | o pages  
    9. ** +-----------------+  

     包含Android的真正的Linux内核(kernel),和ramdisk的根文件系统. 
     Android的启动过程大概是这样: 从Kernel启动,挂载ramdisk为根文件系统,在挂载system.img 到 /system userdata.img到/data位置。
     这里需要注意的ramdisk是不可写的,它是被加载到内存里的,即使你写入的话,也只是写入到内存里,在当前有效,当你重启机器时,系统又会重新读取ramdisk加载到内存中去。

这些分区的挂载位置与对应的挂载设备可以通过cat /proc/mtd或 /proc/emmc查看各个分区对应的设备情况
http://www.digitalinternals.com/mobile/android-mmc-mmcblk-partition-layout/259/

比如:
#cat  /proc/mtd
dev:         size         erasesize     name
mtd0:   00040000    00020000     "misc"
dev:         size         erasesize     name
mtd0:   
00040000    00020000     "misc"
mtd1:   
00500000    00020000     "recovery"
mtd2:   
00280000    00020000     "boot"
mtd3:   
04380000    00020000     "system"
mtd4:   
04380000    00020000     "cache"
mtd5: 
  04ac0000    00020000      "userdata"

     如果你有兴趣从当前手机中获取获取这些img文件,就可以根据这些对应关系通过dd命令写出到sd卡上.比如根据上面的cat命令结果获取boot.img文件可以用如下命令:
     dd if=/dev/block/mtd2 of=/sdcard/boot.img
写出boot分区设备上的boot.img到SD卡上.
     从上面的分析我们可以看到Boot.img是系统中比较关键的部分,同时也是比较独立的部分,上面说到的ramdisk的不可写,我们可以通过先导出boot.img,修改后再用fastboot flash boot功能重新写入boot分区.

Fastboot及Sideload
     Fastboot功能还可以fastboot flash recovery写入Recovery功能,网上的刷Recovery功能就是这样的原理.
     两者都是通过PC端的命令传递刷机包,但是原理是不同的。Fastboot是Booloader提供的功能,Sideload是Recovery提供的功能。Sideload方式同Recovery的卡刷方式原理一样,不过Sideload的刷机包是通过adb sideload命令传输给手机的.

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//