關(guān)麗霞 單紅麗
摘 要: 針對Android系統(tǒng)版本過多,導(dǎo)致普通用戶對Android系統(tǒng)的ROM進(jìn)行管理配置操作困難及升級滯后的難題,提出并實(shí)現(xiàn)了一個(gè)Android系統(tǒng)核心管理工具軟件。以Android提供的通用格式,采用圖形化用戶界面的方法,對Android系統(tǒng)的核心鏡像boot.img進(jìn)行管理配置,支持解包、讀取信息、修改信息、打包的完整流程,實(shí)現(xiàn)系統(tǒng)定制和固件升級的簡易操作。測試結(jié)果表明,該軟件形成了一個(gè)可擴(kuò)展的框架,對快速加入用戶提出的核心管理功能,可極好地滿足普通用戶簡易操作,快速升級固件的要求。
關(guān)鍵詞: Android系統(tǒng); 內(nèi)核; boot.img; 固件
中圖分類號:TP315 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2015)03-44-02
Abstract: Since a variety of excessive Android system version, the ordinary users are hard to operat to the Android systems ROM for management, configuration and upgrade. This paper presents the design and implementation of a core management tool software for Android system, which configures the core mirror boot.img of Android system by using the graphical user interface in the general format offered by Android, supports the complete process of unpacking, the information reading, modifying and packing, and realizes the simple operating of system customizing and firmware upgrading. The test results show that, the software has formed an extensible framework, to quickly add user proposed core management functions, meet the ordinary user easy to operate, rapid upgrade firmware requirements.
Key words: Android system; kernel; boot.img; firmware
0 引言
Android是Google基于Linux平臺推出的開源操作系統(tǒng),主要用于各種智能手機(jī)和平板電腦。Android平臺的開放性允許任何移動(dòng)終端廠商加入到Android聯(lián)盟中來,使得Android在國內(nèi)外有著廣泛的應(yīng)用[1]。
正由于Android開放性的特點(diǎn),很多廠商都通過定制自己的Android系統(tǒng)(如界面、應(yīng)用程序)來給用戶提供豐富的選擇,同時(shí)也形成了各種各樣的過多的版本。再加上Google Android升級很快,而廠商對固件的升級要經(jīng)過深度研發(fā),需要有一定的周期,這又造成了升級的滯后問題。
Android系統(tǒng)的ROM中boot.img和recovery.img是系統(tǒng)最核心的部分,管理系統(tǒng)啟動(dòng)時(shí)的各種關(guān)鍵任務(wù)和配置。但是Android系統(tǒng)對ROM的管理、配置、修改功能的管理還很松散,操作非常不方便,難以被普通用戶使用。目前國內(nèi)外尚沒有出現(xiàn)較簡潔的管理方式,一般都是在Linux環(huán)境下通過各種工具在命令行方式下進(jìn)行,步驟較多,操作較復(fù)雜,而且稍有不慎就可能損壞鏡像,造成死機(jī),極不適合普通用戶[2]。
針對上述問題,本文提出實(shí)現(xiàn)一個(gè)圖形化用戶界面的方法,對Android系統(tǒng)的核心鏡像boot.img進(jìn)行管理、修改、配置,從而使系統(tǒng)定制和固件升級變得簡單和易于操作。
1 Android系統(tǒng)核心管理工具開發(fā)過程
Android系統(tǒng)ROM中的boot.img包含系統(tǒng)啟動(dòng)時(shí)使用的內(nèi)核(kernel)、文件系統(tǒng)(ramdisk)及附加部分(second)。recovery.img主要用于恢復(fù)系統(tǒng)原始配置時(shí)使用,其所包含的內(nèi)容不同于boot.img,但包含的文件鏡像和boot.img相似。這里以boot.img為例,對這兩個(gè)鏡像的管理分兩個(gè)步驟完成。
1.1 鏡像制作打包
kernel來自于Linux 2.6的內(nèi)核,是Android系統(tǒng)采用的底層操作系統(tǒng),主要有進(jìn)程、內(nèi)存管理和硬件設(shè)備驅(qū)動(dòng)等模塊,由內(nèi)核編譯得到相應(yīng)的鏡像。
ramdisk映像是一個(gè)最基礎(chǔ)的小型文件系統(tǒng),在內(nèi)核啟動(dòng)完畢后,會將此映像掛載為根文件系統(tǒng),ramdisk是一種內(nèi)存文件系統(tǒng),整個(gè)映像作為內(nèi)存盤,它包括了初始化系統(tǒng)所需要的全部核心文件,例如:初始化init進(jìn)程以及init.rc(可以用于設(shè)置很多系統(tǒng)的參數(shù))等文件。可以由cpio工具進(jìn)行打包和gzip壓縮得到。
1.2 鏡像解包
根據(jù)mkbootimg的打包文件格式,對boot.img進(jìn)行解包,其中boot header主要記錄整個(gè)鏡像的全部信息,大小為一頁2k(根據(jù)大容量Nand Flash頁的大小決定)。我們的解包程序?qū)⒆x取boot header的信息,首先判斷魔數(shù)是否為"ANDROID!"確認(rèn)所給鏡像為boot.img,然后根據(jù)各部分鏡像大小和頁大小分別提取kernel、ramdisk、second三個(gè)部分的內(nèi)容。用戶界面將及時(shí)提示解包出的各個(gè)鏡像信息,也可以將信息存儲成相應(yīng)的文件。
對ramdisk,second鏡像進(jìn)行解包,還原系統(tǒng)文件。首先對ramdisk使用gzip解壓縮,將根文件系統(tǒng)還原為原來大小,然后由cpio工具對鏡像進(jìn)行解包,保存到指定的目錄中,解包過程中保留Linux系統(tǒng)需要的各文件的UID/GID/權(quán)限等信息。所以,需要將gzip或7z等壓縮工具設(shè)定為無損壓縮。用戶界面顯示解壓出的文件列表,用戶根據(jù)需要選擇相應(yīng)文件,可以進(jìn)行修改、替換、刪除、添加等操作,例如修改init.rc,對Android系統(tǒng)啟動(dòng)進(jìn)程進(jìn)行管理。
以上流程將做成一個(gè)與mkbootimg相對應(yīng)的工具debootimg。鏡像解包流程中還包含對各部分文件的管理工作,如刪除、添加、替換等操作。這一部分將由debootimg核心解包工具提供相應(yīng)接口對用戶界面進(jìn)行支持。
2 關(guān)鍵技術(shù)
實(shí)現(xiàn)boot.img和recovery.img的解包和打包,要求可以解出兩個(gè)img中的頭信息、啟動(dòng)核心、ramdisk及附加部分,以及ramdisk中的文件。要求保留Linux系統(tǒng)需要的各文件的UID/GID/權(quán)限等信息。
編寫界面程序,需處理各種異常情況。形成一個(gè)可擴(kuò)展的框架,對以后用戶提出的核心管理功能可以快速加入。一鍵完成對核心的打包壓縮。根據(jù)用戶愛好設(shè)定并實(shí)現(xiàn)對核心部分的智能化管理。
3 生成圖形化用戶操作窗口
在用戶操作的界面中,顯示當(dāng)前正在編輯home/zz/kunpeng/test_d/boot_img/ram/init.rc文件。在用戶配置好boot.img文件路徑以及工具集路徑后,即可以選擇制作升級包或者解包來完成相應(yīng)的操作。其圖形化用戶操作窗口界面略。
4 結(jié)束語
本文以Android提供的通用格式,采用圖形化用戶界面的方法,實(shí)現(xiàn)了一個(gè)Android系統(tǒng)核心管理工具,對Android系統(tǒng)的核心鏡像boot.img進(jìn)行管理、修改、配置,實(shí)現(xiàn)了boot.img和recovery.img的解包和打包,可以解出兩個(gè)img中的頭信息、啟動(dòng)核心、ramdisk及附加部分,以及ramdisk中的文件,并且保留了Linux系統(tǒng)需要的各文件的UID/GID/權(quán)限等信息。實(shí)驗(yàn)結(jié)果表明,該軟件支持解包、讀取信息、修改信息、打包的完整流程,方便普通用戶對Android系統(tǒng)的ROM進(jìn)行管理,實(shí)現(xiàn)系統(tǒng)定制和固件升級的簡易操作。下一步將對該軟件進(jìn)一步完善,形成一個(gè)可擴(kuò)展的框架,讓用戶可以快速的加入其所需要的核心管理功能,如對一鍵完成對核心的打包壓縮和Flash的燒寫,根據(jù)用戶愛好設(shè)定,實(shí)現(xiàn)對核心的智能化管理等,進(jìn)一步滿足普通用戶簡易操作,快速升級固件的要求。
參考文獻(xiàn):
[1] 柯元旦.Android內(nèi)核剖析[M].電子工業(yè)出版社,2001.
[2] 陳璟,陳平華,李文亮.Android內(nèi)核分析[J].現(xiàn)代計(jì)算機(jī),2009.11:
112-115