【轉】Android ROM分析(1):刷機原理及方法


一、刷機原理

android系統啟動的時候,首先會進行一些諸如硬件自檢之類的操作,這些操作完成以后(至少它應該知道當前的機器有沒有電),會檢查一下當前手機按鍵的狀態(接下來就是所謂刷機模式切換了,不同的android手機有不同的按鍵組合用來進入刷機模式),如果此時按鍵狀態處於刷機組合,那么系統會調用ROM里面的一個叫做recovery的程序(這時就是進入了所謂的刷機程序了,它只是一個工具性質程序,用於檢查刷機包的完整性和數字簽名的合法性。對於目前大多數root過的機器而言,數字簽名的合法性都不會成問題,然后由recovery程序將刷機包進行解壓,然后把刷機包里面的文件寫入到ROM中去,以此完成刷機過程);如果此時按鍵沒有標明是刷機模式,那么系統會創建內存盤,開始從ROM里面載入相應的文件系統,並把相關的文件拷貝到內存盤中,進而引導linux啟動,然后是啟動虛擬機dalvik,然后就是創建工作進程載入和運行framework,然后就會看到待機的畫面。當然在這個過程中還發生了許多事情,啟動了許多服務等等。

現在來總結一下,實際上刷機包就是一個ROM文件的壓縮包,進入刷機模式后,recovery程序會把刷機包里面的文件寫入ROM存儲區替換ROM存儲區的原有文件;當下次啟動手機的時候,會從ROM中載入剛剛替換過的文件,並利用這些文件來啟動和運行系統。這就是刷機包的全部功能和作用,刷機的本質就是文件的覆蓋和替換操作。

 

二、刷機方法

(1) recovery方法,就是我們平時將update.zip保存在SD卡,按X+電源鍵開機,這種方法是調用了recovery的方法將各種img或文件進行復制等操作。關於recovery的工作原理,另文再講。
(2) fastboot方法,這個方法其實是比較酷的方法,說白點,fastboot就是將已有的各分區映象文件(img文件,意義上類似我們對光盤做的映象文件)直接覆蓋寫到指定分區中,有點類似我們平時操作系統的Ghost還原。
這兩種方法哪種更好,這就不好比高低了,總的來說:
Recovery方法更簡單,只需要傻瓜式的將update.zip放到SD卡的要目錄下,然后進入Recovery模式alt-s就可以了,但和任何傻瓜式東西一樣,他的靈活度就很小了,而且出錯了也都不知道如何解決。一般來說做Rom的高手為了保證Rom的可靠性,在安裝程序中都會對一些安裝環境進行一些確定,而各位的手機環境又是千變萬化的,Rom高手也很難考慮周全,另外,Recovery程序本身也有一些環境驗證。
fastboot方法更靈活,功能也更強大,fastboot方法不需要依賴於recovery,甚至linux底層刷壞了recovery模式都進不了的情況下也可以通過fastboot方工刷回來。fastboot模式其實是調用spl進行刷機的,所以如果刷spl壞了,fastboot模式應該也進不了,也就是磚了。fastboot方法需要各位電腦上有fastboot程序,同時手機要進入fastboot模式才可以操作,關於這些知識,請參見Google *^_^*


三、Android系統中的各分區(可能分區這個說法不太准確)
(1) hboot(我們刷的SPL就是這玩意),這個分區是最基本的引導分區(類似電腦中的BIOS),這個區壞了,差不多就變磚了,所以我們刷SPL時才要如此小心啊。
(2) boot,這個分區應該是linux操作系統的引導分區。
(3) radio,這個分區是手機的一些底層設備相關的驅動或功能程序吧,如打電話和發短信等,不同的系統版本會有不同的radio配套,我們平時刷了高版本的ROM后,如果不刷高版本的Radio就有可能導致打電話不正常之類的。
(4) recovery,這個分區裝的就是前面提到的recovery程序了,這個刷不同的recovery版本可以帶來不同的功能,但一般來說,刷recovery最主要的就是提Root權限。
(5) system,是一般發布的ROM的主要功能程序分區了,我們說的ROM功能和自帶程序的定制應該就是基於這個分區的修改和編譯了。
(6) userdata,用戶數據,不說了。
(7) cache,緩存,一般是用來OTA升級時的緩存,我們說刷SPL可以增加程序區的空間大小就是主要將這個區的大小縮水了然后加大了程序區的分區大小。

from:https://blog.csdn.net/y97523szb/article/details/6452076


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM