见好多论坛朋友对FASTBOOT刷机相当困惑和不解,抑或是相当害怕使用fastboot刷机.不管是什么原因,我只需要告诉你,其实用fastboot很简单,也很快捷。
下面把我自己总结的一些方法写出来,希望能给广大G友在刷机路上助一臂之力。
fastboot for windows 已加入附件内,请自行下载。
只有一个文件,下载后随便放在你能找到的地方.在正式讲刷机之前先讲一下G1或者称android的分区知识
splash1:开机画面,使用Nandroid backup备份系统后的文件为splash1.img
recovery:该分区是恢复模式(即开机按Home+power进入的界面),使用Nandroid backup备份为recovery.img
boot:内核启动分区,使用Nandroid backup备份为boot.img
system:Android系统部分,目录表示为/system,通常为只读,使用Nandroid backup备份为system.img
cache:缓存文件夹,目录表示为/cache,事实上除了T-mobile的OTA更新外,别无用处,使用Nandroid backup备份为cache.img
userdata:用户安装的软件以及各种数据,目录为/data,使用Nandroid backup备份为data.img
因此对于刷机一般可以这么理解:
1. 修改开机画面, 修改的是splash1
2. root时刷的是所有分区
3. 刷test_keys,更新的应该是recovery
4. 使用update.zip刷是更新boot、system
5. 恢复出厂设置, 清空的是userdata和cache
明白这些之后就很好理解,一般无须更新recovery.IMG,正常情况下只需要更新BOOT和SYSTEM即可.但依我看来这两者是相互依存而不可分割的.好下面开始说刷机步骤。
进入手机的SPL模式(power+相机) ,且驱动已经安装。
驱动已经以附件上传,若在我的电脑设备管理中发现此情况,图1亦是未正确安装驱动,只需要右键更新驱动,且指向你从我这里下载的驱动即可。
描述:图1
无论你从哪里下载到一个包含boot.img,system.img只要含有这两个文件的文件你就可以刷机了,将刚才下载的fastboot拷贝到此文件夹,图2
描述:图2
在开始-运行CMD 如下图3
描述:图3
此时可以看见打开的命令行
用cd命令打开fastboot所在的文件夹。 图4
描述:图4
输入 fastboot devices 图5
描述:图5
若出现我HTxxxxxxx fastboot,这就证明你已经成功了一半,ok,接下来就是擦除分区,使用fastboot erase xxxx
如下图 只需擦除boot,system,也可以是userdata也可以是recovery。。呵呵 看实际需要了。
Ok 看图6
描述:图6
Okay啦 吼吼 接着擦除system 图7
描述:图7
依然OKAY。。userdata和recovery我就不擦了,,命令也是
Fastboot erase userdata 敲完回车
Fastboot erase recovery 敲完回车。
Ok,擦除完了那就开始刷进去吧。。。看图8
描述:图8
先flash boot.img。命令很简单
接着flash system.img 图9
描述:图9
也okay,,,像之前备份的userdata或者是recovery,再未擦除就不用在flash了。若需要语法如下
Fastboot flash userdata userdata.Img(确定在备份里面是这个名字或者之前又这个分区)
Fastboot flash recovery recovery.img
Ok下一步重启 图10
描述:图10
至此刷机全部结束,等待你的小G启动起来就OK了。。
有时需要在电脑端安装apk程序时,这时候是不许用fastboot的,只需要进入SDK-tools下面运行 adb install xxx.apk既可,前提是你要安装的程序和adb同一目录。
由于底层研发的习惯,我先看了看文件系统在Nand Flash中的分布情况:
我在Ubuntu下使用adb连接了G1,然后:
# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00020000 "misc"
mtd1: 00500000 00020000 "recovery"
mtd2: 00280000 00020000 "boot"
mtd3: 05a00000 00020000 "system"
mtd4: 01e00000 00020000 "cache"
mtd5: 059c0000 00020000 "userdata"
mtd6: 10000000 00020000 "msm_nand"
从中可知:
misc :0.25MB:是存放开机画面的分区,也就是开机时看到的那个白色的大G1字样(默认为白色"T-mobile G1")
recovery :5MB:是G1的恢复模式镜像区(即开机按Home+End进入的界面)
Boot :2.5MB:Linux操作系统内核和ramdisk镜像一起打包后存放的分区
system :90MB:是system.img存放的分区,启动后此镜像挂载在根目录下的system文件夹中。
cache :30MB:是缓存临时文件夹,挂载为/cache目录,据说是除了T-mobile的OTA更新外,别无用处。
userdata :89.75MB:用户安装的软件以及各种数据,挂载为/data目录
msm_nand :256MB:代表整个Nand Flash,不是一个分区。但是所有的分区加起来才217.5MB,小于256MB,说明还有剩余的flash空间。(此分区在大部分机上不存在,不影响使用)
G1所使用的Nand Flash是K5E2G1GACM,但是在三星的网上居然没找到Datasheet,网上也没有google到!
模拟器中的输出是这样的:
# cat /proc/mtd
dev: size erasesize name
mtd0: 04000000 00020000 "system"
mtd1: 04000000 00020000 "userdata"
mtd2: 06100000 00020000 "cache"
补黑色台版的G2分区 :
# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00020000 "misc"
mtd1: 00500000 00020000 "recovery"
mtd2: 00280000 00020000 "boot"
mtd3: 05a00000 00020000 "system"
mtd4: 05000000 00020000 "cache"
mtd5: 127c0000 00020000 "userdata"
可以看到 cache 和 userdata变大了,因为 G2的ROM 为512MB的。
从上面的数据我么可以发现一个现象:无论是G1还是G2,所有的分区加起来都比整个Nand flash小38.5MB,这些空间应该另有他用,其中有一个用处就是存放bootloader。但是从以往的经验来看,bootloader不可能有38.5MB,肯定另有用处,可能用于虚拟内存(猜测)
///////////////////////////////
大容量ROM的Android手机一般都把ROM的一部分分为系统分区,其他的都虚拟为内置SD卡,比如三星和华为的手机都是这样,标称的大ROM实际上大部分都虚拟成了内置SD卡。
所以,由于是分区时设置的容量,ROM是可以调整的,比如一块硬盘上,c盘和d盘、e盘的大小都是可以调整的,区别是安卓系统用户自己很难调整。
先看安卓Android系统的分区,安卓系统一般把ROM芯片分成7个区,如果再加上内置SD卡这个分区,就是8个:
hboot分区———-负责启动。
radio分区———-负责驱动(通讯基带)。
recovery分区——-负责恢复。
boot分区———–系统内核。
system分区———系统文件。
cache分区———-系统缓存。
userdata分区——-用户数据。
大家看到没有,前6个区的容量在系统信息里面是看不出来的,我们看到的ROM总容量,其实就是第7个区userdate区的大小,这个区主要装一些软件,是用户可以使用的分区。这个分区的大小直接影响到安装软件的数量。也就是说userdate区就是我们常说的“可用ROM”。
在安卓里,虽然软件可以安装到卡中,但是一些系统软件最好还是安装到userdata分区,否则会出现加载的一些小问题,比如使用的桌面软件和一些在桌面上显示插件的软件。并且就算你把软件都装到卡里,userdata分区还是会不断减小。就像在Windows里,就算你把软件装到D盘,仍然会在c盘生成一些系统文件,占掉c盘空间一样。
///
“system”区保存了android系统目录的所有数据,机器启动后的全部系统主要都在这里(在系统启动后会挂载到system/目录)。
“userdata”区将保存了android数据目录中的所有数据(在系统启动后会挂载到data/目录,里面是会有很多应用数据以及用户的preference之类的配置数据,我们在手机设置里看到的手机内存空间就是指这里)。
“userdata2”区是用户可自己支配的,可以存放自己喜欢的图片、音乐等(在系统启动后会挂载到data/HWUserData/目录,我们在手机设置里看到的内部SD卡空间就是指这里)(这2.2版的没有,和userdata合并了)。
“cache”区是缓存空间,程序或系统用到的缓存数据和指令就存放在这,cpu在调用和执行指令时会优先调用这里的。(在系统启动后会挂载到cache/目录)。
“boot”区是存放引导手机启动时的必要的系统,包含一些硬件底层的驱动,主要分为ramdisk和linux内核两大块。(在系统启动后挂载到根目录下)。
“recovery”区与boot的相似,但是恢复时启动的系统,比boot多了些恢复用的程序与资源。(只在进入recovery模式才挂载)
“splash”区是开机第一个画面,开机启动时用到的。(不知挂载到哪了?)
“misc”区是有Bootloader Control Block (BCB) ,用于存放recovery引导信息。(猜是在进入recovery模式才挂载)