ROM刷機原理及ROM製做技術初探

       最近在學習刷機相關的知識,在網上看了一些教程以後,對刷機的認識仍是隻停留在那麼機械式的幾步,總以爲這樣不求甚解真是很差!因此小編找來了下面這篇文章,本身學習了下,確實不錯(好吧,小編是新手,但願大牛帶小編裝x帶小編飛……),分享給你們。php


這一段時間刷了一堆ROM,安卓系列、CM、Hero、OldMos,手機的照相機也刷得再也啓不來了(不知道什麼緣由,杯具)。有話說:"久病成良醫",想咱們折騰了這麼久的刷機,也得總結總結不是,小弟不才,遠沒成"良醫",但仍是想把本身的一些認識和心得寫出來,以期拋磚引玉...linux


1、刷機原理android

        記得第一次刷機,那個心理緊張啊。其實緊張什麼呢?就是由於不明白原理啊,只看到一堆的教程來依葫蘆畫瓢,生怕錯了一步將手機變磚。提及來,刷機就是兩種方法:緩存


        一是recovery方法,就是咱們平時將update.zip放入到SD卡,而後alt-s的方法,這種方法是調用了recovery的方法將各類img或文件進行復制等操做。app


        二是fastboot方法,這個方法實際上是比較酷的方法,說白點,fastboot就是將已有的各分區映象文件(img文件,意義上相似咱們對光盤作的映象文件)直接覆蓋寫到指定分區中,有點暴力,也有點相似咱們平時操做系統的Ghost還原。工具


        這兩種方法哪一種更好,這就很差比高低了,總的來講:學習

        Recovery方法更簡單,只須要傻瓜式的將update.zip放到SD卡的要目錄下,而後進入Recovery模式alt-s就能夠了,但和任何傻瓜式東西同樣,他的靈活度就很小了,並且出錯了也都不知道如何解決。通常來講作Rom的高手爲了保證Rom的可靠性,在安裝程序中都會對一些安裝環境進行一些肯定,而各位的手機環境又是變幻無窮的,Rom高手也很難考慮周全,另外,Recovery程序自己也有一些環境驗證。google

        fastboot方法更靈活,功能也更強大,fastboot方法不須要依賴於recovery,甚至linux底層刷壞了recovery模式都進不了的狀況下也能夠經過fastboot方工刷回來。fastboot模式實際上是調用spl進行刷機的,因此若是刷spl壞了,fastboot模式應該也進不了,也就是磚了。fastboot方法須要各位電腦上有fastboot程序,同時手機要進入fastboot模式才能夠操做,關於這些知識,請參見Google *^_^*spa


2、回頭再來講說Android系統中的各分區(可能分區這個說法不太準確)操作系統

我瞭解到的Android系統中的分區有:

        hboot(咱們刷的SPL就是這玩意),這個分區是最基本的引導分區(相似電腦中的BIOS),這個區壞了,差很少就變磚了,因此咱們刷SPL時纔要如此當心啊。

        boot,這個分區應該是linux操做系統的引導分區。

        radio,這個分區是手機的一些底層設備相關的驅動或功能程序吧,如打電話和發短信等,不一樣的系統版本會有不一樣的radio配套,咱們平時刷了高版本的ROM後,若是不刷高版本的Radio就有可能致使打電話不正常之類的。

        recovery,這個分區裝的就是前面提到的recovery程序了,這個刷不一樣的recovery版本能夠帶來不一樣的功能,有興趣的同窗能夠基於recovery的源碼本身編譯出一個本身的recovery出來。但通常來講,刷recovery最主要的就是提Root權限。

system,是通常發佈的ROM的主要功能程序分區了,咱們說的ROM功能和自帶程序的定製應該就是基於這個分區的修改和編譯了。

userdata,用戶數據,不說了。

        cache,緩存,通常是用來OTA升級時的緩存,咱們說刷SPL能夠增長程序區的空間大小就是主要將這個區的大小縮水了而後加大了程序區的分區大小。


3、一個典型ROM的剖析

        咱們平時升級的Rom都是打包成適合Recovery方式刷機的包。可以被Recovery程序識別並處理的包應該有一個固定的格式,我理解的一些重要的約束以下:

        1)必須是標準的zip壓縮包;

        2)recovery腳本必須存入在META-INF\com\google\android\update-script;

        3)其它的一些證書和簽名信息應該都放在\META-INF\下。


4、咱們有沒有可能本身定製ROM呢

        理論上咱們是能夠本身定製的。

        最簡單的定製應該就是拿一個現有的認爲還不錯的基礎ROM,替換一些資源,加一些系統自帶程序,而後打包發佈;再玩高級一點,就應該本身去修改一些系統自帶的程序,如漢化一些系統原始程序;還玩高級一點,就應該本身到android官方站點去下載android系統的源碼來編譯,並進行基於系統級的定製和移植了。


        若是是簡單一點的自制ROM,主要應該會要解決以下幾個問題:

        1)選定一個比較好和穩定的內核和基礎,就是update.zip包中的哪一個boot.img,另外,system目錄中大部分也是直接可用的,就能夠做爲自定義Rom的基礎。

        2)修改系統。例如能夠這樣來定製的東西:system\etc\apns-conf.xml,這是設置APN接入點的;system\etc\hosts,這是設置Host文件的,如今有不少人用的包綁定不了GMail,就能夠在這個Host文件中增長一條:74.125.93.113 android.clients.google.com(固然,這個地址能用多久也很差說)...還有什麼東西要本身去定製就本身去翻看瞧瞧。

        3)Rom的從新打包簽名。前文已經介紹了一個Rom包的基本結構,但徹底按照這個結構打包仍是不能被Recovery安裝的,由於沒有簽名!Rom簽名能夠下載一個自動簽名工具Auto-sign,具體到哪下,請Google。(注:Rom簽名工具須要Java1.6支持,因此係統還得有JRE1.6的環境)。

再往下就有點高深了,目前只留心一下這些基礎的東西,錯誤在所不免,歡迎指正,拍磚輕些。

                                                                                                                                                                        原做者: happylo

                                來自http://www.morecomtech.com/community/article/sjjc/w2015090005.php

***************************我是分享的天使分隔線********************************

此外,分享一篇刷機常識性的文章:


      刷機綜述:http://www.morecomtech.com/community/article/sjjc/w2015090001.php

相關文章
相關標籤/搜索