Android系統Recovery工作原理之使用update.zip升級過程分析(三)—Android系統的三種啟動模式

來源:互聯網
上載者:User

            Android系統Recovery工作原理之使用update.zip升級過程分析(三)---Android系統的三種啟動模式

        

        以下的篇幅開始分析我們在上兩個篇幅中產生的update.zip包在具體更新中所經過的過程,並根據源碼分析每一部分的工作原理。

一、       系統更新update.zip包的兩種方式

    1.  通過上一個文檔,我們知道了怎樣製作一個update.zip升級包用於升級系統。Android在升級系統時獲得update.zip包的方式有兩種。一種是離線升級,即手動拷貝升級包到SD卡(或NAND)中,通過settings-->About phone-->System Update-->選擇從SD卡升級。另一種是線上升級,即OTA  Install(over  the  air)。使用者通過線上下載升級包到本地,然後更新。這種方式下的update.zip包一般被下載到系統的/CACHE分區下。

     2.  無論將升級包放在什麼位置,在使用update.zip更新時都會重啟並進入Recovery模式,然後啟動recovery服務(/sbin/recovery)來安裝我們的update.zip包。

    3.  為此,我們必須瞭解Recovery模式的工作原理以及Android系統重啟時怎樣進入Recovery工作模式而不是其他模式(如正常模式)。

二、       Android系統中三種啟動模式

       首先我們要瞭解Android系統啟動後可能會進入的幾種工作模式。先看:

                

       由可知Android系統啟動後可能進入的模式有以下幾種:

       (一) MAGIC KEY(按鍵組合):

              即使用者在啟動後通過按下按鍵組合,進入不同的工作模式,具體有兩種:             

             ① camera + power:若使用者在啟動剛開始按了camera+power按鍵組合則會進入bootloader模式,並可進一步進入fastboot(快速刷機模式)。

        ② home + power :若使用者在啟動剛開始按了home+power按鍵組合,系統會直接進入Recovery模式。以這種方式進入Recovery模式時系統會進入一個簡單的UI(使用了minui)介面,用來提示使用者進一步操作。在tcc8800開發板中提供了一下幾種選項操作:

                                “reboot system now”

                                “apply update from sdcard”

                                “wipe data/factory reset”

                                “wipe cache partition”

       (二)正常啟動:

                 若啟動過程中使用者沒有按下任何按鍵組合,bootloader會讀取位於MISC分區的啟動控制資訊塊BCB(Bootloader Control Block)。它是一個結構體,存放著啟動命令command。根據不同的命令,系統又 可以進入三種不同的啟動模式。我們先看一下這個結構體的定義。

             struct bootloader_message{

                      char command[32];  //存放不同的啟動命令

                      char status[32];   //update-radio或update-hboot完成存放執行結果

                      char recovery[1024]; //存放/cache/recovery/command中的命令

             };

         我們先看command可能的值,其他的在後文具體分析。command可能的值有兩種,與值為空白(即沒有命令)一起區分三種啟動模式。

         ①command=="boot-recovery"時,系統會進入Recovery模式。Recovery服務會具體根據/cache/recovery/command中的命令執行相應的操作(例如,升級update.zip或擦除cache,data等)。

         ②command=="update-radia"或"update-hboot"時,系統會進入更新firmware(更新bootloader),具體由bootloader完成。

         ③command為空白時,即沒有任何命令,系統會進入正常的啟動,最後進入主系統(main system)。這種是最通常的啟動流程。

         Android系統不同的啟動模式的進入是在不同的情形下觸發的,我們從SD卡中升級我們的update.zip時會進入Recovery模式是其中一種,其他的比如:系統崩潰,或則在命令列輸入啟動命令式也會進入Recovery或其他的啟動模式。

        為瞭解我們的update.zip包具體是怎樣在Recovery模式中更新完成,並重啟到主系統的,我們還要分析Android中Recovery模式的工作原理。

     

             下一篇幅開始看具體的Recovery模式工作原理,以及其在更新中的重要作用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.