Android的恢复模式

2019-07-14 01:50发布

KEY:

  • 摄像头+ 
            电源:引导程序模式,ADP里则可以使用FASTBOOT模式
           

  • 家+电源:恢复模式
           

  • 正常启动

        引导程序正常启动,又有三种方式,按照BCB(Bootloader的
控制块,下节介绍)中的命令分类:

  • 命令==“启动恢复” 
            →启动恢复模式recovery.img。
           

  • 命令== 
            'update-radio/hboot→更新固件(引导程序)
           

  • 其他→启动的boot.img

恢复涉及到的其他系统及文件
  • CACHE分区文件

 
    Recovery 
            工具通过NAND 
            cache分区上的三个文件和主系统打交道。主系统(包括恢复出厂设置和OTA升级)可以写入recovery所需的命令,读出recovery过程中的LOG和intent。 
    • /缓存/恢复/命令:
                      恢复命令,由主系统写入。所有命令如下:
                     
      • - send_intent anystring 
                                -写文本recovery.intent
                               
      • - update_package =根:路径
                                -验证安装OTA包文件
                               
      • 的- wipe_data 
                                -擦除用户数据 ​​(和缓存),然后重新启动
                               
      • - wipe_cache 
                                -擦拭缓存(而不是用户数据 ​​),然后重新启动
                       

                     
    • /缓存/恢复/日志:恢复过程日志,由主系统应将其译为出
                     
    • /缓存/恢复/目的:恢复输出的意图
             
  • MISC分区内容的Bootloader控制块         (BCB)存放恢复         bootloader的消息。结构如下:结构         bootloader_message {
            



            


           


                      [32] 字符 命令 
      字符 
                      状态[32]; / /未知用途 
      的char 
                      恢复[1024]; 

            
    };
           

    • command可以有以下两个值
                      
      “boot-recovery”:标示recovery正在进行,或指示bootloader应该进入recovery
                      mode
                      
      “update-hboot/radio”:指示bootloader更新firmware
                     

    • 恢复内容“恢复 n “ 其中恢复                 命令为CACHE :/恢复/命令命令
                      

                      

                      

                      


             


两种恢复
案例
  • FACTORY 
            RESET(恢复出厂设置)

 
  • 用户选择“恢复出厂设置”
           
  • 设置系统将“ - wipe_data”命令写入/缓存/恢复/命令
           
  • 系统重启,并进入恢复模式(/ sbin目录/恢复)
           
  • get_args()
            将
            “启动恢复”和“ - wipe_data”写入BCB
           
  • erase_root()
            格式化(擦除)数据分区
           
  • erase_root()
            格式化(擦除)高速缓存分区
           
  • finish_recovery()
            擦除BCB
           
  • 重启系统

    • OTA 
              安装(OTA升级)

  • 升级系统下载
            OTA包到/缓存/一些档案名称。
           
  • 升级系统写入恢复命令“ - update_package = CACHE:一些档案名称。”
           
  • 重启,并进入恢复模式
           
  • get_args()
            将“启动恢复” 
            和
            “ - update_package = ...” 
            写入BCB
           
  • install_package()
            作升级
           
  • finish_recovery()
            擦除BCB
           

  •         如果安装包失败** 
            prompt_and_wait()等待用户操作,选择ALT + S或ALT + W 
            升级或恢复出厂设置
           
  • 主()
            调用
            maybe_install_firmware_update()
           
  • 如果包里有HBOOT /无线的固件则继续,否则返回
                   

  •                 “启动恢复” 
                    和“ - wipe_cache” 
                    写入BCB
                   

  •                 固件映像写入缓存分区