瑞芯微RK2808_安卓(android)系統固件包修改基礎教程

 編寫: locke­

前言:­

本文爲locke原創文章,請尊重作者的勞動成果,轉載請註明出處:http://user.qzone.qq.com/401389373/blog/ ;(原帖在MSN空間,因爲那個空間已掛了,所以現在搬到QQ空間了。)本文所涉及到的資源及工具均來源於網絡,因爲原空間已掛了,暫時找不到合適的空間存放文件,所以暫時不提供固件修改工具包了,有需要的朋友可以自行搜索。

 

看來需要工具包的網友還不少,但一個個的分發比較費事,特找了個空間將之上傳,供有需要的人下載,地址:

千腦在線

本教程推出未多久時間,很多熱門網站和論壇都進行了轉載,本人很是欣慰,這是對我勞動成果的肯定。但也有個別的人將上面一段話和文章最後的簽名刪除了,更有人打出了“原創”字眼,本人在此BS一下這類人。本教程雖然內容不算多,但裏邊簡簡單單的一處修改,本人有些都要花費很長時間、一次次嘗試、一次次的受着機子變“磚頭”的結果做出來的,這些人簡簡單單的一個拷貝、粘貼命令就把成果佔爲己有,實在有點不厚道。再次BS之!­

 

目錄:­

瑞芯微android固件包介紹­

一、解包、打包­

二、固件升級­

三、固件修改­

1. 固件精減、添加APK軟件­

2. 提取Root權限­

3. 修改用戶分區大小­

4. 修改設置中“關於MID”中的機型型號­

5. 美化界面­

6. 美化桌面­

 

瑞芯微android固件包介紹­

瑞芯微的android固件包分兩種:­

一種爲量產升級包(暫且如此稱呼吧,PS:其實稱之爲開發包較爲合適,因爲是使用開發工具進行升級。),使用量產升級工具RKAndroidTool.exe進行升級,量產升級包的文件包含:HWDEF、package-file、parameter、recover-script、Rock28Boot(L).bin、update-script和一個Image文件夾,裏邊又包含boot.img、 kernel.img、 misc.img、 recovery.img 、system.img五個鏡像文件。System.img包含所有用戶資源,大部分情況下修改system.img文件就能達到我們的目的。本文也是重點圍繞system.img的修改。­

 

另一種爲用戶升級包(也暫且如此稱呼吧),即將上述量產升級包的文件用工具打包成一個文件――update.img,使用用戶升級工具RKAndroidDM.exe進行升級。此文件包需通過解包成量產升級包後才能修改,修改後再打包成update.img進行升級。 ­

一、解包、打包­

對於update.img的解包、打包,需用到附件“打包解包工具”中的AFPTool.exe、mkupdate.bat、unpack.bat三個文件,其中unpack.bat爲解包工具,mkupdate.bat爲打包工具。將用戶升級包update.img和上述三個文件放在同一目錄下,雙擊unpack.bat後,就可以將用戶升級包解包成6個文件和一個Image文件夾,即和量產升級包完全相同的文件。此時可對相應的文件進行修改,修改完成後,再雙擊mkupdate.bat,會在Image文件夾下產生一個update.img,此文件就是打包後新生成的用戶升級包文件。­

對於system.img的解包、打包,需用到cramfsck、mkcramfs兩個工具,此img文件和工具需在Linux(Ubuntu、RedHat等)系統下操作和使用,來進行解包、打包,cramfsck爲解包工具,mkcramfs爲打包工具。­

先通過本地硬盤、U盤或者Live CD啓動到Linux下(Linux相關知識和安裝不在本篇介紹範圍內,請自行Google),然後將system.img、cramfsck、mkcramfs三個文件拷貝到系統的root文件夾下。(有些Linux系統對掛載的其它分區或磁盤兼容性不好,所以拷貝到系統分區進行操作可減少出問題的可能性,本文涉及到Linux部分的操作以BackTrack3操作系統爲示例。部分人反映用Ubuntu的精簡等版本時用不了已編譯好的cramfsck和mkcramfs,所以在教程包中又放入了一個deb的文件,在啓動到Linux後雙擊就可以像Windows一樣安裝它了。) ­

圖片

 

打開一個shell,在shell中輸入:­

cramfsck -x system system.img­

對system.img文件進行解包,執行完成後,會產生一個名爲system的文件夾,如下圖所示:­

圖片

也可以採用以下方法進行解包,原理就是mount這個鏡像文件,然後再拷貝出來,命令如下:

mkdir system
sudo mount -t cramfs -o loop system.img  system
 tar cvzf system.tgz system
sudo umount system
rm -r system
tar xzvf system.tgz

用這個方法的好處是可以避免某種情況下出錯的可能,第一種方法在某些情況下會造成某些文件損壞,有碰到過。

 

解包後的System文件夾內包含9個文件夾和1個文件,簡單說明如下:­

圖片

 

/system/app     系統應用程序存放目錄­

/system/bin      系統的本地程序,是binary二進制的程序,裏面主要是Linux系統自帶的組件。­

/system/etc      系統的配置文件,比如APN接入點設置等核心配置。­

/system/fonts    字體文件夾。­

/system/framework 主要是一些核心的文件,從後綴名爲jar可以看出是系統平臺框架。­

/system/lib     存放的主要是系統底層庫,如平臺運行時庫。­

/system/media   鈴聲音樂文件夾,除了常規的鈴聲外還有一些系統提示事件音­

/system/usr     用戶文件夾,包含共享、鍵盤佈局、時間區域文件等。­

/system/xbin    存放系統管理工具,他們都是爲系統管理員準備的,是一些系統管理和配置工具。­

/system/build.prop 屬性文件,“關於MID”中所顯示的軟件版本、內核、機型等信息。­

 

通過上面進行簡單的介紹,相信你已有了一個大概的瞭解了。­

此時可對system文件夾下的文件進行其它修改了,比如提取root權限、固件精減、APK替換修改等操作。­

修改完成後,需要對system文件夾進行打包,在shell中輸入:­

mkcramfs system system02.img­

(爲了便於區分原先的img文件,所以建議重新生成的文件不要與原文件名一樣。)­

此時會在root目錄下生成一個新文件system02.img,這個文件就是我們修改好並重新打包OK的文件了。­

圖片

 

此時,對於update.img和system.img兩個文件的解包、打包操作就介紹完了。對於system.img和相應的文件是否需要打包成用戶升級包update.img就看各位是否有需要了。­

 

二、固件升級­

固件升級有兩種工具可實現(其實還有第三種升級――即通過MID本機進行升級,不過需要原生軟件和硬件支持纔可以實現,目前發現上市的機子還無此功能。所以略過…),即量產升級、用戶升級。­

量產升級:將量產升級包的6個文件和一個文件夾,放入../升級工具/量產升級工具_RKAndroidTool/rockdev文件夾下,然後打開量產工具RKAndroidTool.exe,如下圖所示:­
圖片

 

(如有需要勾選Loader、Backup選項,對於軟件跨版本較大或修改過分區等情況可勾選Loader,如果你的MID沒有Recover功能,Backup選項無需勾選。題外話太多了,現轉移到正題。)­

關機狀態下長按ESC鍵或菜單鍵(視機型而定,具體請自行查找相應信息)的同時連接PC,按提示安裝驅動(首次使用),驅動路徑指向.. /升級工具/rk28usb‐Driver,安裝好驅動後按“執行”即可完成升級。­

注意:如果是Vista、Windows7系統需用管理員權限運行本工具,否則會提示“測試設備失敗”,造成升級失敗。­

 

用戶升級:打開用戶升級工具RKAndroidDM.exe,如下圖所示:­

圖片

 

點擊“…”按鈕,選擇電腦中要升級的用戶升級文件update.img,然後按量產升級的方法連接你的MID,提示找到設備後按“升級”按鈕進行升級,完成後提示“升級成功”後拔掉USB線重新開機即可。­

 

三、固件修改­

  前面講解了那麼多了,前戲應做的很足了,現在開始介紹各位同鞋最爲關心滴事、最最爲想做滴事情,我再次手把手滴開始教各位同鞋鳥,希望能和大家一起達到目的,衝向高潮。吼……!!!­

1,固件精減、添加APK軟件­

將system.img解包,解包後將../system/app目錄下的不需要的APK文件進行刪除、修改、替換,以製作適合自己的固件包,對於app目錄內不清楚用途的APK文件,請勿隨意刪除,以免引起不必要的問題。­

注意:據說個別APK軟件需自帶的庫文件支持才能正常運行,此時可用WinRAR等壓縮軟件將APK文件打開(將.apk後綴改成.zip,然後用壓縮軟件打開即可),從裏邊找到後綴爲.so的文件,然後放入../system/lib文件夾下即可。­

修改完成後,然後進行打包、升級、測試。­

2,提取Root權限­

將system.img解包,解包後將“取root權限文件”目錄中的Superuser.apk、su兩個文件分別放進下列目錄:­

Superuser.apk --->  ../system/app­

su --->  ../system/bin­

打開一個shell,然後用chmod 6755修改文件的權限,如圖示。­

Chmod 6755 /system/app/Superuser.apk­

Chmod 6755 /system/bin/su­

圖片

 

上述命令需注意大小寫,否則有可能會出錯。修改完成後打包即可。­

我開始在驗證過程中,因使用了較老的root explorer版本根本不能進入資源管理器,於是更換了最新版V2.94,是能進資源管理器界面了,但是卻不能修改或刪除system下的文件,可能有人會懷疑這是否真正的取得了root權限?我可以很負責的告訴你,已經取得了root權限,因爲運行drocap2這類root權限的軟件是灰常正常滴。­

嗯,其實這裏又涉及到一個專業知識了,請坐好捏,哎,後面那位同鞋別看別人了,說的就是你。現在仔細聽我講解:­

瑞芯微android系統固件的system分區採用的是cramfs文件系統。­

cramfs文件系統是一個壓縮式的文件系統,它並不需要一次性地將文件系統中的所有內容都解壓縮到內存之中,而只是在系統需要訪問某個位置的數據的時侯,馬上計算出該數據在cramfs文件系統中的位置,將其實時地解壓縮到內存之中,然後通過對內存的訪問來獲取文件系統中需要讀取的數據。cramfs文件系統中的解壓縮以及解壓縮之後的內存中數據存放位置都是由cramfs文件系統文件系統本身進行維護的,用戶並不需要了解具體的實現過程,因此這種方式既方便,又節省了存儲空間。cramfs文件系統的數據都是預先經過處理、打包的,這種系統是一種只讀、不支持寫操作的文件系統,在刷到機器裏後,這個分區就是隻讀的,不能做任何更改。所以,刷機後是不能對這個系統進行修改的,只能在刷機前對system.img進行解包、修改,以達到我們的目的。 ­

修改用戶分區大小­

部分同鞋使用了MID一段時間後,就會爲用戶區空間太小裝不了幾個軟件而發愁,其實,你不用發愁,只要稍稍修改一下兩個文件就可以將分區加大。現在出產的MID一般都是配備2GB以上的內存,劃個幾百M至1G都不會太影響本機使用的,再者現在TF卡那麼便宜,都是標配2~4G以上的容量了。所以即便將用戶區再劃大些都不會有太大的影響。­

(題外話:還有同鞋在尋找APP2SD的功能,個人建議不如修改一下這兩個文件,將用戶區劃大一些來得實在,一來在本機上讀取軟件穩定性會高些,二來不會因TF卡的問題導至軟件出問題嘛!)­

言歸正傳:將用戶升級包update.img解包(如果已經是量產升級包,略過此解包操作),找到其中的HWDEF、parameter兩個文件並備份。再用UE(UltraEdit32,其實用記事本也可以,不過看起比較亂)修改兩個文件的分區偏移量和分區大小,是以16進製表示,前一個分區的偏移量和大小加起來就是後面一個分區的偏移量,我們需讓用戶分區增大,所以只修改用戶分區即可,只需修改userdata、user兩個分區的偏移量和大小即可。­

A.修改HWDEF文件:­

用UE打開HWDEF,找到如下部分的代碼(請注意紅色部分數據):­

mtd_id=rk28xxnand­

#Format: part_name offset:size­

parameter 0x00000000:0x00001000:fh­

misc 0x00001000:0x00001000:f­

kernel 0x00002000:0x00003000:f­

boot  0x00005000:0x00002000:f­

recovery 0x00007000:0x00003000:f­

system  0x0000A000:0x0001E000:f­

backup 0x00028000:0x00026000:­

cache 0x0004E000:0x0001E000:­

userdata 0x0006C000:0x0001E000

user 0x0008A000:0xFFFFFFFF:­

END­

簡單解釋一下,上面的userdata分區表示:偏移量爲0x0006C000,分區大小爲:0x0001E000,比如我們需將使用空間由原來的123M增大一倍到246M,即0x0001E000+0x0001E000=0x0003C000,那麼,下一個分區user的偏移量就變成6C000+3C000=0x000A8000,修改後新的數據如下:­

userdata 0x0006C000: 0x0003C000

user 0x000A8000:0xFFFFFFFF:­

修改後保存。對HWDEF的修改完成了。 ­

B.修改parameter文件­

再用UE打開parameter,找到最後一行,其部分代碼如下:­

CMDLINE: noinitrd c,115200n8n androidboot.c init=/init root=/dev/mtdblock2 mem=128M@0x60000000 mtdparts=rk28xxnand:0x00001000@0x00001000(misc),0x00003000@0x00002000(kernel),0x00002000@0x00005000(boot),0x00003000@0x00007000(recovery),0x0001E000@0x0000A000(system),0x00026000@0x00028000(backup),0x0001E000@0x0004E000(cache), 0x00040000 @0x0006C000(userdata),-@ 0x000AC000 (user)­

此段代碼@前面表示分區大小,@後面表示偏移量。userdata前面的6個分區大小和偏移量都能和HWDEF文件中的一一對應起來,但userdata的分區大小明顯要大很多,暫不明白爲何要加大一些。查看過幾個不同機型的這些文件,大小也有差距,在22000-62000(16進制)之間;爲了不出問題,我們也依照那樣做吧,所以我們也在userdata空間的大小上面也加上22000至62000之間的一個數值吧。­

  所以,此處userdata的分區大小爲:3C000(擴容後的分區大小)+22000=5E000,那下一個分區user的偏移量也變成了:5E000(新分區大小)+6C000(偏移)=CA000。修改過的數據如下:­

0x0005E000@0x0006C000(userdata),-@0x000CA000(user)­

修改後保存。對parameter的修改也完成了。用剛纔改好的兩個文件替換原先的兩個文件,然後重新打包、升級。­

 不同機型分區大小可能會有差別,所以附件中放有原始的和修改好的兩個文件,以供參考!此文件僅供參考,請勿直接替換,出了問題概不負責!­

4,修改設置中關於MID”中的機型型號­

將system.img進行解包,解包後在system文件夾下找到build.prop­

圖片

 

將build.prop文件用UE打開,找到ro.product.model=sdkDemo一行,將其中的sdkDemo改成你想要顯示的文字,比如BM999,修改後保存,然後重新打包燒錄即可。­

圖片

 

5,美化界面­

這個又涉及到APK文件的修改了,這部分的教程就不作過多的介紹了,有需要的同鞋可以上網去Google下相關資料,大把的教程可供參考。­

將system.img進行解包,解包後在../system/framework文件夾下找到framework-res.apk,將.APK後綴改名爲.zip,然後將其中的assets、res兩個文件夾解壓出來開始我們的美化工作。要注意修改後的圖片分辨率大小和圖片格式要與原來保持一致,否則會出錯的哦。 ­

A.界面美化­

找到解壓後的下列兩個目錄,這兩個目錄存放所有界面的系統圖標,可對需要修改的界面小圖標進行美化:­

../framework-res/res/drawable­

../framework-res/res/drawable-land­

B.修改開機LOGO(Android啓動時,出現閃動的ANDROID字樣的動畫圖片)­

Android 的系統登錄動畫類似於Windows系統的滾動條,是由前景和背景兩張PNG圖片組成,這兩張圖片也是位於../system/framework/framework-res.apk文件當中。前景圖片(android-logo-mask.png)上的Android文字部分鏤空,背景圖片(android-logo-shine.png)則是簡單的紋理。系統登錄時,前景圖片在最上層顯示,程序代碼控制背景圖片連續滾動,透過前景圖片文字鏤空部 分滾動顯示背景紋理,從而實現動畫效果。以相同的原理修改或替換下面兩張圖片即可達到目的。­

../framework-res/assets/images/android-logo-mask.png­

../framework-res/assets/images/android-logo-shine.png­

android-logo-mask.png :Android默認的前景圖片,文字部分鏤空,大小256×64­

android-logo-shine.png :Android默認的背景圖片,有動感效果,大小512×64­

美化完成後,將修改過的圖片替換掉APK文件中相應的文件,然後將APK文件中META-INF文件夾內的CERT.SF、CERT.RSA兩個文件刪除,然後用簽名工具重新簽名。再將簽名後的APK文件替換掉原先的文件,之後重新打包成system.img並用工具升級即可。­

 

6,桌面美化­

感覺桌面默認的公版壁紙、搜索條、快捷鍵等圖標太難看?沒問題,把它都換了吧。­

將system.img進行解包,解包後在../system/app文件夾下找到Launcher.apk,將.APK後綴改名爲.zip,然後將其中的res文件夾解壓出來,將需要美化的圖片進行美化、替換,修改好後按照上面的方法將文件替換、簽名、打包再升級即可。­

 

基礎篇教程完畢!敬請關注進階篇。因本人水平有限,教程中難免會有錯誤之處,歡迎指正!­

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章