备份和恢复Android手机的NAND分区

转自:http://chenshaoju.blogbus.com/logs/102875090.html

备份:
Android使用的是Linux系统,因此通过使用内建的命令控制台可以备份大部分闪存中的内容(除开hboot和特殊的隐藏区段)。如果手机的HBOOT是处于S-OFF的状态,还可以通过 fastboot.exe 直接进行恢复。

先决条件:安装ADB驱动,具备adb shell环境,手机ROOT过。

首先,运行以下命令:

adb shell

su

cat /proc/mtd

在运行了 cat /proc/mtd 后,会显示出当前的ROM分区情况,注意看mtd后面的数字,通常是mtd0至mtd5。如果你的NAND重新分区过,建议执行以下命令进行导出到存储卡:

cat /proc/mtd >>/sdcard/mtd.txt

备份分区表名后,即可开始备份分区了,分别执行以下命令即可将分区导出到存储卡:

cat /dev/mtd/mtd0 >>/sdcard/mtd0.img

cat /dev/mtd/mtd1 >>/sdcard/mtd1.img

cat /dev/mtd/mtd2 >>/sdcard/mtd2.img

cat /dev/mtd/mtd3 >>/sdcard/mtd3.img

cat /dev/mtd/mtd4 >>/sdcard/mtd4.img

cat /dev/mtd/mtd5 >>/sdcard/mtd5.img

备份的速度取决于存储卡的速度,备份完毕后,将存储卡根目录下的 mtd.txt 和 mtd0.img至mtd5.img 拷贝到电脑上即可。


恢复:
如果要恢复分区,则需要安装fastboot(HBOOT)驱动,并且具备fastboot.exe和运行环境。

每个分区镜像的名字(mtd0.img)都对应一个分区,比如mtd0对应的是misc,这些名字都可以在上文中导出的分区表中看到。比如我的是:

dev:    size   erasesize  name 
mtd0: 000a0000 00020000 "misc" 
mtd1: 00480000 00020000 "recovery" 
mtd2: 00300000 00020000 "boot" 
mtd3: 05a00000 00020000 "system" 
mtd4: 00a00000 00020000 "cache" 
mtd5: 151a0000 00020000 "userdata"

假如我们需要恢复misc分区,那么将手机进入HBOOT状态(HTC Desire是按住返回键开机),通过USB连接上电脑,然后运行:

fastboot flash misc mtd0.img

这样,备份的misc分区就被写回了手机,以上表为例,recovery对应的是mtd1,boot对应的是mtd2,以此类推。



你可能感兴趣的:(android,shell,Flash,HTC,存储,手机)