imx6 android4.4 Recovery添加从U盘升级功能

Platform: imx6

OS: Android 4.4


device/fsl 目录:

[plain]  view plain  copy
  1. diff --git a/common/recovery/Android.mk b/common/recovery/Android.mk  
  2. index f98468b..c7a7886 100644  
  3. --- a/common/recovery/Android.mk  
  4. +++ b/common/recovery/Android.mk  
  5. @@ -1,6 +1,10 @@  
  6.  LOCAL_PATH := $(call my-dir)  
  7.  include $(CLEAR_VARS)  
  8.    
  9. +#Kris,20151214, update by udisk.  
  10. +LOCAL_CFLAGS += -DUDISK_UPDATE  
  11. +  
  12. +  
  13.  LOCAL_MODULE_TAGS := eng  
  14.  LOCAL_C_INCLUDES += bootable/recovery  
  15.  LOCAL_SRC_FILES := recovery_ui.cpp  
  16. diff --git a/common/recovery/recovery_ui.cpp b/common/recovery/recovery_ui.cpp  
  17. index 8d128e4..5b083c7 100644  
  18. --- a/common/recovery/recovery_ui.cpp  
  19. +++ b/common/recovery/recovery_ui.cpp  
  20. @@ -35,6 +35,12 @@ const char* ITEMS[] = { "reboot system now",  
  21.                          "wipe cache partition",  
  22.                          /*Kris, Support upgrading from external sd.*/  
  23.                          "apply update from external sd",  
  24. +/*Kris, 20151214, update by udisk. {*/  
  25. + #ifdef UDISK_UPDATE  
  26. +                        "apply update from udisk",  
  27. +#endif  
  28. +/*Kris, 20151214, update by udisk. }*/  
  29. +  
  30.                          NULL };  
  31.    
  32.  class ImxUI : public ScreenRecoveryUI {  
  33. @@ -83,6 +89,11 @@ class ImxDevice : public Device {  
  34.            case 3: return WIPE_CACHE;  
  35.            /*Kris, Support upgrading from external sd.*/  
  36.            case 4: return APPLY_EXT;  
  37. + /*Kris, 20151214, update by udisk. {*/  
  38. +#ifdef UDISK_UPDATE  
  39. +          case 5: return APPLY_FROM_UDISK;  
  40. +#endif  
  41. + /*Kris, 20151214, update by udisk. }*/  
  42.            default: return NO_ACTION;  
  43.          }  
  44.      }  
  45. diff --git a/tek_mx6/fstab_recovery.freescale b/tek_mx6/fstab_recovery.freescale  
  46. index 65cd716..ec62247 100644  
  47. --- a/tek_mx6/fstab_recovery.freescale  
  48. +++ b/tek_mx6/fstab_recovery.freescale  
  49. @@ -5,6 +5,7 @@  
  50.    
  51.  #Kris, mount external sd to /sdcard.  
  52.  /dev/block/mmcblk1p1    /sdcard      vfat    nosuid,nodev,barrier=1,data=ordered,nodelalloc                                   wait  
  53. +/dev/block/sda1         /udisk       vfat    nosuid,nodev,barrier=1,data=ordered,nodelalloc                                   wait  
  54.  /dev/block/mmcblk0p5    /system      ext4    ro                                                                               wait  
  55.  /dev/block/mmcblk0p4    /data        ext4    nosuid,nodev,nodiratime,noatime,nomblk_io_submit,noauto_da_alloc,errors=panic    wait,encryptable=footer  
  56.  /dev/block/mmcblk0p6    /cache       ext4    nosuid,nodev,nomblk_io_submit                                                    wait  

bootable/recovery目录改动:

[plain]  view plain  copy
  1. diff --git a/Android.mk b/Android.mk  
  2. index 2578c11..37ec3a4 100644  
  3. --- a/Android.mk  
  4. +++ b/Android.mk  
  5. @@ -54,6 +54,10 @@ LOCAL_STATIC_LIBRARIES := \  
  6.      libm \  
  7.      libc  
  8.    
  9. +#Kris,20151214, update by udisk.  
  10. +LOCAL_CFLAGS += -DUDISK_UPDATE  
  11. +  
  12. +  
  13.  LOCAL_CFLAGS += -DUSE_EXT4  
  14.  LOCAL_C_INCLUDES += system/extras/ext4_utils  
  15.  LOCAL_STATIC_LIBRARIES += libext4_utils_static libz  
  16. diff --git a/device.h b/device.h  
  17. index 583de75..b469d48 100644  
  18. --- a/device.h  
  19. +++ b/device.h  
  20. @@ -65,8 +65,15 @@ class Device {  
  21.      //   - invoke a specific action (a menu position: any non-negative number)  
  22.      virtual int HandleMenuKey(int key, int visible) = 0;  
  23.    
  24. +/*Kris, 20151214, update by udisk. {*/  
  25. + #ifdef UDISK_UPDATE  
  26.      enum BuiltinAction { NO_ACTION, REBOOT, APPLY_EXT, APPLY_CACHE,  
  27. +                         APPLY_ADB_SIDELOAD, APPLY_FROM_UDISK,WIPE_DATA, WIPE_CACHE };  
  28. + #else  
  29. +     enum BuiltinAction { NO_ACTION, REBOOT, APPLY_EXT, APPLY_CACHE,  
  30.                           APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE };  
  31. +#endif  
  32. + /*Kris, 20151214, update by udisk. }*/  
  33.    
  34.      // Perform a recovery action selected from the menu.  
  35.      // 'menu_position' will be the item number of the selected menu  
  36. diff --git a/etc/init.rc b/etc/init.rc  
  37. index c634330..0b65db9 100644  
  38. --- a/etc/init.rc  
  39. +++ b/etc/init.rc  
  40. @@ -15,6 +15,9 @@ on init  
  41.    
  42.      symlink /system/etc /etc  
  43.    
  44. +#Kris,20151214, update by udisk.  
  45. +    mkdir /udisk  
  46. +  
  47.      mkdir /sdcard  
  48.      mkdir /system  
  49.      mkdir /data  
  50. diff --git a/recovery.cpp b/recovery.cpp  
  51. index 5ddd730..876f036 100644  
  52. --- a/recovery.cpp  
  53. +++ b/recovery.cpp  
  54. @@ -81,6 +81,12 @@ static const char *TEMPORARY_LOG_FILE = "/tmp/recovery.log";  
  55.  static const char *TEMPORARY_INSTALL_FILE = "/tmp/last_install";  
  56.  static const char *SIDELOAD_TEMP_DIR = "/tmp/sideload";  
  57.    
  58. +/*Kris, 20151214, update by udisk. {*/  
  59. + #ifdef UDISK_UPDATE  
  60. + static const char *UDISK_ROOT = "/udisk";  
  61. + #endif  
  62. + /*Kris, 20151214, update by udisk. }*/  
  63. +  
  64.  RecoveryUI* ui = NULL;  
  65.  char* locale = NULL;  
  66.  char recovery_version[PROPERTY_VALUE_MAX+1];  
  67. @@ -910,6 +916,32 @@ prompt_and_wait(Device* device, int status) {  
  68.                      }  
  69.                  }  
  70.                  break;  
  71. +/*Kris, 20151214, update by udisk. {*/  
  72. + #ifdef UDISK_UPDATE  
  73. +              case Device::APPLY_FROM_UDISK:  
  74. +         status = update_directory(UDISK_ROOT, UDISK_ROOT, &wipe_cache, device);  
  75. +         if (status == INSTALL_SUCCESS && wipe_cache) {  
  76. +             ui->Print("\n-- Wiping cache (at package request)...\n");  
  77. +             if (erase_volume("/cache")) {  
  78. +                 ui->Print("Cache wipe failed.\n");  
  79. +             } else {  
  80. +                 ui->Print("Cache wipe complete.\n");  
  81. +             }  
  82. +         }  
  83. +         if (status >= 0) {  
  84. +             if (status != INSTALL_SUCCESS) {  
  85. +                 ui->SetBackground(RecoveryUI::ERROR);  
  86. +                 ui->Print("Installation aborted.\n");  
  87. +             } else if (!ui->IsTextVisible()) {  
  88. +                 return;  // reboot if logs aren't visible  
  89. +             } else {  
  90. +                 ui->Print("\nInstall from udisk complete.\n");  
  91. +             }  
  92. +         }  
  93. +         break;  
  94. +  
  95. + #endif  
  96. + /*Kris, 20151214, update by udisk. }*/  
  97.          }  
  98.      }  
  99.  }  

猜你喜欢

转载自blog.csdn.net/xzx208/article/details/80285451
今日推荐