又来了。开始苦逼的自追代码出补丁之路。本人辛苦追代码,原创,因此不怕任何侵权等行为。
故障现象:
把update.zip放入U盘根目录,插入普通usb口(看代码发现好像插入OTG口也可以,而且它升级完后还会切回device模式,但是otg口应该没办法获得U盘路径,所以估计不行)执行OTA升级。打如下命令。本人是ac82XX,请以具体平台为准
echo --update_package=/storage/udisk2dev1dev1/update.zip > cache/recovery/command
reboot recovery
ota升级完后,U盘底下的update.zip没了!没了!没了!这设计????如果我有多个设备要升级,你让我怼一次U盘拷一次zip到U盘里?这个工作量要死!还不如直接USB3.0烧固件快。
所以开始追代码,cd bootable.思路宝贵啊 同学们!
grep -rI update_package. ---》这里从处理的param开始找。
找到recovery.cpp有。 果断进去搜索引用。update_package 一看刚好是存了所对应的参数路径(此处本老祖这里是U盘),不断的查看引用 ,各种追踪install_package不提。
找了半天,最后看的都不像,我真的一个个函数都进去看了,都看懂了。(苦逼)
最后一个mt_main_write_result(status, update_package); 追到
mt_recovery.cpp
int mt_main_write_result(int &status, const char *update_package)
{
if (update_package) {
if (status == INSTALL_SUCCESS) {
fprintf(stdout, "write result : remove_mota_file\n");
remove_mota_file(update_package);
}
write_result_file(status);
mt_write_result_for_dm_verity(status);
}
return 0;
}
不就是这个remove_mota_file。呵呵!然后再根据自己的目录字符串特性,过滤掉不删就行了!
一般还是要删,只有U盘的不删。否则你的/storage撑不住。此处我就不放代码了