Android系统分区介绍
hboot——系统开机引导类似电脑BIOS,这块刷错手机就会变成砖
radio——通讯模块、基带、WIFI、Bluetooth等衔接硬件的驱动软件
recovery——系统故障时负责恢复
boot——Linux嵌入式系统内核
system——系统文件、应用
cache——系统运行时产生的缓存
userdata——用户使用APP产生的缓存数据
让我们从 Android 手机/平板电脑的内部存储器分区列表开始吧。它们是:
另外,还有 SD 卡相关的分区:
需要注意的是大部分 Android 设备通常只有 /sdcard 分区,而 /sd-ext 分区只在少数设备上可以看到。现在,我们来看看划分出的这些分区的内容和目的吧。
/boot
顾名思义,这个分区负责设备的启动。它由 kernel 和 ramdisk 构成。如果没有这个分区,那么设备将无法开机。只有在极必要的时候才可以在恢复模式下删除该分区,并且一旦删除,在重新烧入一个新的分区(可以通过刷入一个带有 /boot 分区的 ROM 完成)以前务必不要重启设备。
/system
这个分区包含了整个操作系统除 kernel 和 ramdisk 之外的其它部分,包括 Android UI 和设备上预装的 APP。删除这个分区只会同步将 Android 系统从设备上卸载掉,而不会导致设备不能重启,因此你依然可以顺利让设备进入到 recovery 或 bootloader 模式来为它重新刷入一个新的 ROM。
/recovery
recovery 分区相当于一个备用的 boot 分区,利用它我们可以使设备启动到恢复模式窗口来进行一些高级的恢复和维护操作。想了解更多关于该分区的知识,可以阅读《guide to ClockworkMod recovery》中的“About Android Recovery”章节。
/data
这个分区也被称作 /userdata,是用户数据被存储的地方——也就是说你的联系人、短信、配置文件和你自己安装的 APP 都位于这里。删除这个分区相当于将你的设备恢复出厂设置,你的设备会变得和你第一次开机或最后一次刷入官方/自定义 ROM 后一样。你在设备上点击清除用户数据或恢复出厂设置按钮后,实际上清除掉的就是这个分区。
/cache
这个分区中存放的是 Android 系统中经常被访问的数据和 APP 的部件。删除这个分区不会对你的个人数据造成影响,这个分区上的数据会随着你继续使用设备被重新收集并存储在这里。
/misc
这个分区中包含了各种以开关量形式保存的系统配置,包括 CID(Carrier or Region ID)、USB配置和某些硬件配置等。这是个很重要的分区,如果它遭到了破坏或有数据丢失,那么设备的一些功能可能无法正常使用。
/sdcard
这个分区为 SD 卡所属,和内部存储空间无关。你可以按照你喜欢的方式来使用这个分区,用来存储多媒体文件、文本文档、ROM镜像等等。删除它不会带来任何问题(当然如果这个分区上有你需要的重要数据,那么最好在删除分区前先将它们备份到电脑上)。有的 APP 会将它们的数据和配置信息保存在 SD 卡上,这种情况下删除该分区会使这些数据丢失。
在同时具备内部存储空间和外部 SD 卡的设备上,比如三星Galaxy S 和某些平板电脑,/sdcard 分区始终代表内部存储空间。此时外部 SD 卡通常会使用其它名称的分区来表示,不同设备上名称可能有所不同,比如三星Galaxy S系列的设备使用 /sdcard/sd 来表示,也有其它的一些设备使用 /sdcard2 这样的名字。和 /sdcard 分区不同,系统或 APP 并不会主动在 /sdcard/sd 或 /sdcard2 这类分区上存放数据,所有出现在这类分区上的数据肯定都是用户自己添加的。同样,你可以在对你觉得必要的数据进行备份后随意删除这些分区。
/sd-ext
这并不是标准的 Android 分区,但单独划分出这个分区正在自定义的 ROM 上变得流行。只有在开启了 APP2SD+ 或者 data2ext 功能的 ROM 才支持这么做,它实际上是在 SD 卡上划分出来一块空间作为 /data 分区来使用。这对于原本只为原生 /data 分区预留了少量存储空间的设备来说非常有用。用户可以通过刷入支持这个功能的 ROM 的方式来扩大 /data 分区的容量,从而安装更多的 APP。删除这个分区和删除 /data 分区的效果一样,联系人、短信、APP、配置文件都会丢失。
行文至此,你是不是对 Android 分区更了解了呢?你应该知道了当你刷入一个需要删除某些分区的 ROM 前,哪些数据会丢失,哪些数据因此应该备份了吧。
首先需要准备好刷机包,可以是自己编译的,也可以是从别处拷贝的,但一定要确保刷机包适用于你的 Android 设备。然后解压刷机包,解压后我们可以得到 boot.img、recovery.img、system.img、bootloader 文件,正是这些文件构成了 Android 设备的系统。
让设备进入 fastboot 环境。有 2 种方法:
执行命令 adb reboot bootloader
或者
同时按住 增加音量 和 电源 键开机。
【命令执行流程】
在设备进入到 fastboot 环境后,根据需求执行下面的命令进行刷机:
fastboot flashing unlock # 设备解锁,开始刷机
fastboot flash boot boot.img # 刷入 boot 分区。如果修改了 kernel 代码,则应该刷入此分区以生效
fastboot flash recovery recovery.img # 刷入 recovery 分区
fastboot flash country country.img # 刷入 country 分区。这个分区是开发组自己划分的,别的 Android 设备上不一定有
fastboot flash system system.img # 刷入 system 分区。如果修改的代码会影响 out/system/ 路径下生成的文件,则应该刷入此分区以生效
fastboot flash bootloader bootloader # 刷入 bootloader
fastboot erase frp # 擦除 frp 分区,frp 即 Factory Reset Protection,用于防止用户信息在手机丢失后外泄
fastboot format data # 格式化 data 分区
fastboot flashing lock # 设备上锁,刷机完毕
fastboot continue # 自动重启设备
fastboot -S 300M flash system system.img //解决fastboot 刷 system.img 尺寸限制问题
adb reboot bootloader -- 进入fastboot模式
fastboot devices -- 查看设备是否连上
adb reboot recovery 手机会重启到recovery卡刷模式
adb reboot bootloader 手机会重启到bootloader(fastboot)线刷模式
adb reboot edl 手机会重启到9008刷机模式!仅限高通部分机型!慎用!
解锁bootloader和上锁: fastboot oem lock 和 fastboot oem unlock
adb wait-for-device #等待设备
adb reboot-bootloader #这个是重启到bootloader界面 默认是fastboot。可以先重启到这里再刷入boot.img
fastboot flash boot boot.img #这个是刷入boot的命令。官解的要手动刷一次。
fastboot flash recovery recovery.img #刷入recovery 已有recovery的可以跳过。
fastboot erase boot #擦除boot分区
以下两个是一样的 有加-w 跟 没有加-w 的区别
fastboot erase system -w #擦除system分区 擦除 userdata分区和cache分区
fastboot erase system #擦除system分区
fastboot erase cache #擦除cache分区
fastboot erase userdata #擦除userdata分区
fastboot update update.zip #将update.zip刷入
fastboot reboot #重启手机
1.Fastboot简介
Fastboot是Android快速升级的一种方法,Fastboot的协议fastboot_protocol.txt在源码目录./bootable/bootloader/legacy下可以找到。
Fastboot客户端是作为Android系统编译的一部分,编译后位于./out/host/Linux-x86/bin/fastboot目录下。
sudo fastboot flash bootloader u-boot.bin
sudo fastboot flash kernel uImage
sudo fastboot flash system system.img
sudo fastboot flash userdata userdata.img
sudo fastboot flash ramdisk ramdisk-uboot.img
sudo fastboot erase cache
fastboot erase config
一次烧写boot,system,recovery分区:
(1)创建包含boot.img,system.img,recovery.img文件的zip包。
(2)执行:fastboot update {*.zip}
烧写开机画面:
fastboot flash splash1 开机画面
2.2 重启系统
sudo fastboot reboot
2.3 不烧写flash情况下调试
sudo fastboot boot uImage 或者u-boot.bin
2.4 查看版本号
sudo fastboot getver:version
2.5 复位到bootloader
sudo fastboot reboot-bootloader
2.6 命令格式
主机端发送字符串的命令,字符串小于等于64个字节,客户端首先返回四个字节的内容,是OKAY、FAIL、DATA、INFO之一,随后跟着是信息或数数据。
2.7 清空分区
fastboot erase {partition} 例:fastboot erase boot或fastboot erase system等。
fastboot erase boot
fastboot erase system
fastboot erase data
fastboot erase cache
上面的命令也可以简化成一条命令
fastboot erase system -w
Android 擦除nv数据:
adb reboot bootloader
fastboot erase fsg
fastboot erase fsc
fastboot erase modemst1 ///擦除mdem文件
fastboot erase modemst2 ///擦除mdem文件
刷入新的modem文件
adb reboot bootloader
fastboot erase fsg
fastboot erase fsc
fastboot erase modemst1
fastboot erase modemst2
---------------------------------------
手机刷机方式:
打开 USB调试,使用命令
adb reboot edl (进入9008模式),
方法2,当有时刷了一个有问题的版本,只能进入fastboot却不能连接adb时,可用下面这方式(该方法本人未成功过,一直提示找不到该命令):
C:\Users\xxx>fastboot oem edl
...
FAILED (remote: unknown command)
finished. total time: 0.001s
进入手机fastboot模式,执行命令
fastboot oem edl
进入 高通模式9008模式 时,手机黑屏,但是连接上电脑有反应,设备管理器 可以见到 一台串口为9008的设备
方法三:
确保手机已处于关机状态中,同时一起按住 音量上键 与 音量下键 ,然后连接USB数据线,当端口识别正确即可进入9008模式(),