工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆

基础教程贴——安卓系统刷机 浅解!!!变砖的基本成因及刷机浅谈

安卓系统 浅谈,由此可以大概分析刷机变砖的形成
*****************系统的基本启动过程************************
本帖隐藏的内容需要回复才可以浏览(2周后自动解除隐藏)#1,整个系统的引导是从boot.bin开始的

#2,boot完成必要的初始化以后,通过pit信息找到sbl分区

#3,sbl在引导过程中,检测是否存在满足要求的按键组合,如果满足进入download模式(俗称挖煤)的条件,就进入download,如果是进入recovery模式的按键组合,就传递参数给kernel,也就是zImage分区,进入recovery模式,如果都没有,就传递参数给kernel,正常启动系统。


*****************变砖的基本成因***************************

本帖隐藏的内容需要回复才可以浏览
1、boot、pit、sbl直接决定了机器有没有变砖,如果这三个区有一个出了问题,机器将直接无法进入download模式,也就是彻底变砖了。

2、有的sbl版本不检测按键组合,这就是我们常说的锁三键,破解方法就是刷入检测按键组合的版本即可。(例如:I9000的锁三键)

3、boot和sbl具有对应关系,不是随便两个组合就能引导成功,如果单独刷入了这两个文件而彼此之间是不匹配的那就变砖了。


*****************Odin软件平台刷机详解**************************
1,pit和re-partion。这两个需要组合在一起使用,功能就是把pit文件写入到bml2分区,目前看到的pit文件内容基本一致,区别在于factoryfs和dbdatafs两个分区大小不同,也就是说不同的版本调整了factoty和dbdata分区的大小,以满足不同的要求。(建议不要乱刷)

#2,pda——Pda文件是整个rom的核心内容,一般是个tar包,完整的内容包括下面几个文件
boot.bin、sbl.bin、param.lfs、zImage、factoryfs.rfs、cache.rfs
看过上面的分区机构以后,就很容易理解了,odin刷机做的事情,就是解包后把各个文件克隆到各个对应的分区。具体哪个文件名对应哪个分区,则是根据pit文件里的信息来确定的,如果这次不刷pit文件,odin会去读机器内部的pit信息。
某些pda文件的后缀是md5,本质上还是一个tar包。(其实你不管用什么扩展名,刷机平台都会用一样的方式解压,只要确保文件是正常的就应该可以)

#3, Phone,也叫modem,原来wm系统的机器叫radio,都是一个概念,管理无线通讯的,对应分区表中的bml12

#4,Csc,一般也是一个tar包,里面包含dbdata.rfs和cache.rfs(这个在pda文件中也有,应该是会被csc覆盖的)。

#5,这里提到的文件每次刷机都不是必须的,比如我们往往单刷kernel,实际上就是只刷pda文件中的zImage。

#6,风险分析。通过前面讲的分区机构和系统引导过程,我们可以知道odin刷机主要的风险集中在pit分区和pda文件中的boot和sbl,如果这几个刷到一半出了问题,将直接导致机器变砖。

 

*****************Recovery模式刷机分析***************************

我们的机器还支持在recovery模式下刷机,由于官方的recovery程序功能有限,现在流行使用ClockworkMod Recovery,新版的Cognition 就是用这个刷的。
至于和官方的版本有什么功能增强,我没有查到相关资料,望高人补充。
这个方式下刷机使用的rom格式是一个zip包,在META-INF\com\google\android目录下有一个脚本update-script,recovery程序如何处理zip,是由这个脚本决定的。
现将Cog包里的脚本摘几句看看
format SYSTEM:
format CACHE:
format DATA:
//格式化三个分区
delete SDCARD:update.zip
copy_dir PACKAGE:sdcard SDCARD://sdcard目录下文件复制到sdcard

删除了sdcard上两个目录
delete_recursive SDCARD:Voodoo
delete_recursive SDCARD:Android

copy_dir PACKAGE:system SYSTEM://system目录下所有内容拷贝到system分区
copy_dir PACKAGE:updates TMP:/updates
format SYSTEM:
…….
…….       
//设置文件权限
set_perm_recursive 0 0 0755 0555 SYSTEM:etc/ppp
set_perm_recursive 0 0 0755 0755 SYSTEM:etc/init.d
set_perm_recursive 1002 1002 0755 0440 SYSTEM:etc/bluetooth
set_perm 0 0 0755 SYSTEM:etc/bluetooth
set_perm 3002 3002 0444 SYSTEM:etc/bluetooth/blacklist.conf
set_perm 0 0 755 TMP:/updates/bmlwrite

run_program /system/bin/busybox --install -s /system/xbin
//用bmlwrite直接克隆分区,其实和odin刷机一个道理。
run_program /tmp/updates/bmlwrite /tmp/updates/modem.bin /dev/block/bml12
run_program /tmp/updates/bmlwrite /tmp/updates/Sbl.bin /dev/block/bml4
run_program /tmp/updates/bmlwrite /tmp/updates/zImage /dev/block/bml7

注意上面的那个Sbl.bin,很多人变砖就是因为这个!原因前面已经说了。


此文为网友发过来的WORD文档,我略做修改,具体来源不明,在此发表感谢作者

 

 

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):