android學習第八講:Android的一個啓動過程的分析

從這章開始,我們來分析Android的一個啓動過程的分析
我們首先來看一下Android的整個系統的啓動分析,
首先我們得先給我們的設備通電(Powon),上完電CPU內部會有一個bootloader,這個是在生產的時候就已經燒錄好了,它會根據我們的硬件GPIO的一些設置來判斷我們的系統是在U盤,SD卡,或者是在內置Flash中啓動,然後去引導我們的uboot,我們的uboot主要是初始化一些外設,比如我們的內存、Flash,以及我們CPU的一些IO,並且通過串口給我們提供修改啓動參數的一個啓動過程,並且根據我們所配置的參數去引導內核啓動,當我們的內核啓動之後,他會首先初始化一些外設,加載驅動,並且根據我們uboot所配置的參數來啓動我們的系統,當我們的Android系統被起來之後,他也會進行一系列的初始化過程,他會首先掛在我們的分區,並且創建Android一些相關的目錄,創建完成之後,他會動態加載一些必要的驅動,然後就會根據我們的啓動腳本,來啓動我們的系統服務,如:mediaserverservicemanage等,或者我們自己新加的一些服務就會在這裏進行啓動,啓動完之後,他還會做一些環境變量的配置,這些配置會在系統中使用,最後我們將所有的服務系統啓動之後,我們的啓動服務就會守護整個系統,如果中間有一個服務中檢出錯了,我們這個守護進程就會重新創建這個服務。現在Android設備的啓動時間都是比較長的,所以我們想要加快Android系統的啓動過程主要是從ubootkernelAndroid這三塊來做調整
我們主要講的是Android這一層面的啓動過程,並且根據我們的理解來做一些優化。
下面我們來看一下Android啓動過程分析的主要內容
接下來我們來學習一下Android的啓動模式,Android的啓動模式共包括兩種模式:
一種是recovery升級模式:啓動recovery分區內核和文件
http://tiyubisai.com/video_news/news_135532.html
另一種是正常啓動模式:引導內核和啓動Android系統
那麼我們來看一下我們的uboot在啓東時,如何區分是recovery升級模式還是正常啓動模式呢,那麼我們再來看一下Android的啓動過程
第一種方式:當我們給我們的設備上電,啓動到uboot模式時,首先會有一個輸入模式,如果我們觸發了輸入模式,並且輸入了recovery命令,那麼我們重啓uboot時,uboot就會檢查到我們的recovery命令,這是uboot就會引導我們的recovery分區,就會進入recovery升級模式。
第二種方式:如果我們沒有設置recovery命令,那麼我們的uboot再啓動過程中也會等待我們的按鍵輸入,等待一定的時間,比如我們等待我們的power+音量加或者音量減健,如果說,在等待的這一段時間裏,恰好捕獲到一對組合按鍵,這時候我們的uboot也會直接引導我們的recovery分區,從而進入recovery升級模式。
第三種方式是:我們系統正常啓動之後,我們下載了一個新的安裝包,然後我們調用reboot命令來進行recovery升級,這時候我們重啓之後就會直接進入到recovery模式,默認去安裝我們下載的安裝包,如果我們重啓時設置了安裝包的路徑,那麼他就會使用這個安裝包去進行升級,如果說這三條都不滿足的話,那麼我們的uboot就會直接啓動我們的boot images來正常啓動Android系統。
Recovery模式主要完成兩個任務,一是可以清楚我們的一些數據,第二個是完成系統的升級,而在系統升級時也會遇到兩種模式,一個是差量包升級,第二個是全包升級,當我們使用Android手機時遇到過這種情況,我們下載一個升級包,有的升級包只有幾十兆,但是有的升級包卻是上百兆,那麼幾十兆的就是差量包升級的一個過程。
Recover分區他有自己的一套文件系統,他和我們的正常文件系統是有區別的,他比較小,而且啓動的時候也沒有啓動太多的服務,他是一套簡單的文件系統,在升級過程中他會把我們的system分區掛在起來,然後使用差量升級包和我們的system下的文件進行一個比對,然後把這些差量數據打到system文件系統中,從而完成我們一個差量包的升級。而我們的全包升級呢,就是把整個包的內容全部替換掉我們system分區下的內容,完成一次全包升級,在升級過程中我們最好不要斷電,斷電會導致升級失敗,會把我們的系統寫壞,如果在我們的升級過程中,因爲我們下載的升級包不對,或者說當前的差分包和我們的系統不匹配,那麼這時我們的升級就會失敗,在失敗之後,我們會在屏幕上看到失敗的信息,這時我們可以重啓系統,啓動之後在cache分區下可以看到升級過程中的所有log,而開發人員就可以根據我們的log信息分析一下問題到底出在哪裏。
我們升級成功之後,我們的系統就會重啓,重啓之後如果沒有檢查到我們的按鍵消息,那麼他就會正常的啓動安卓,也就是在正常的升級之後,他會把我們的recovery命令擦除掉,從而我們不會再檢查到recovery的一些命令,這就是Android的兩種模式,recovery模式和正常啓動模式
http://blog.csdn.net/chengfeng135/article/details/49618523
http://blog.csdn.net/chengfeng135/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章