参考:
本文以ZTE U985为例
1.烧入recovery.img。recovery.img和boot.img两个的修改方式和文件结构内容类似。
2.配置recovery模式下的adb shell()
a.把recovery.img解包
b.把busybox()拷贝到/sbin下
c.在/sbin下执行ln -s busybox sh;ln -s busybox cd;
d.在/system下执行ln -s ../sbin bin
e.将recovery重新打包,烧入手机
f.进入recovery模式,执行adb shell;cd /sbin;然后就可以通过ln -s busybox cat创建自己需要的命令;
g.挂载其它分区
mkdir sdcard ;mount /dev/block/platform/sdhci-tegra.2/by-num/p1 /sdcard(外置sd卡);
mkdir sdcard-ext ;mount /dev/block/platform/sdhci-tegra.3/by-name/SDC /
sdcard-ext(内置sd卡)
3.进入/bootable/recovery,修改init.rc,新增一行,创建内置sd卡的挂载点
mkdir
/sdcard-ext
4.修改/etc/recovery.fstab,确保进入recovery模式下后自动将内置sd卡挂载到
/sdcard-ext
/sdcard-ext vfat /dev/block/platform/sdhci-tegra.3/by-name/SDC
/src/device/qcom/msm8660_surf/recovery.fstab
5.修改default_recovery_ui.c
点击(此处)折叠或打开
-
char* MENU_ITEMS_COLD_SD_UPDATE[] = { "reboot system now",
-
"apply update from external storage",
-
"wipe data/factory reset",
-
"insidecard update", //新增菜单
-
NULL };
6.修改recovery_ui.h,新增宏定义
点击(此处)折叠或打开
-
#define ITEM_APPLY_INSIDECARD 3
7.修改recovery.c
新增定义
-
static const char *INSIDECARD_ROOT = "/sdcard-ext";
-
static const char *INSIDECARD_UPDATE_PACKAGE ="/sdcard-ext/update.zip";
在switch (chosen_item) {}下面增加相关处理
-
case ITEM_APPLY_INSIDECARD:
-
update_package = INSIDECARD_UPDATE_PACKAGE;
-
break;
然后通过mm编译出新的recovery文件,替换recovery.img下/sbin的文件,重新打包烧入即可,然后将update.zip包放入内置sd卡就可以进行升级
8.整个过程可以通过/tmp/recovery.log进行定位
阅读(4827) | 评论(0) | 转发(1) |