android系統又一次刷ROM簡記(一)

2021-09-07 16:45:19 字數 2522 閱讀 6361

當須要對android系統進行大刀闊斧的改造的時候,應該清晰的了解android各個image的組成才幹做到庖丁解牛。

首先在android燒寫過程中須要燒寫的檔案主要包含uboot.bin\boot.img\system.img\userdata.img\recovery.img等檔案。

小公尺的刷機檔案主要包含data\meta-inf\recovery\system\blob\boot.img\file_contexts檔案。

data目錄下僅僅有乙個目錄miui從名字能夠知道裡面存放的檔案主要是小公尺的使用者介面檔案。 。

system/bin  

這個資料夾下的檔案都是系統的本地程式,從bin資料夾名稱能夠看出是binary二進位制的程式,裡面主要是linux系統自帶的元件(命令)

system/etc  

從目錄名稱來看儲存的都是系統的配置檔案,比方apn接入點設定等核心配置。

system/fonts  

字型目錄。除了標準字型和粗體、斜體外能夠看到檔案體積最大的可能是中文字庫。或一些unicode字型檔當中droidsansfallback.ttf檔案大小

system/framework  

framework主要是一些核心的檔案。從字尾名為jar能夠看出是是系統平台框架。

system/lib  

lib資料夾中存放的主要是系統底層庫,一些so檔案,如平台執行時庫

system/media/audio  

鈴聲**目錄,除了常規的鈴聲外另一些系統提示事件音。

system/usr  

使用者目錄,包括共享、鍵盤布局、時間區域檔案等

system/vendor

存放產品相關檔案

bootimg檔案是由image和ramdisk.img檔案生成。在/build/core/makefile檔案裡有相關的描寫敘述。# the boot image, which is a collection of other images.

internal_bootimage_args := \

$(addprefix --second ,$(installed_2ndbootloader_target)) \

--kernel $(installed_kernel_target) \

--ramdisk $(installed_ramdisk_target)

在system/core/mkbootimg/bootimg.h中有詳細打包的描寫敘述。

** +-----------------+

** | boot header     | 1 page

** +-----------------+

** | kernel          | n pages

** +-----------------+

** | ramdisk         | m pages

** +-----------------+

** | second stage    | o pages

** +-----------------+

從上面可以清晰的看出boot.img檔案的構成主要是將kernel以及ramdisk.img檔案打包而且加入檔案頭完畢。

假設須要改動小公尺官方給出的檔案的情況下,能夠使用

#./split_bootimg.pl boot.img

page size: 2048 (0x00000800)

kernel size: 6695672 (0x00662af8)

ramdisk size: 1276106 (0x001378ca)

second size: 0 (0x00000000)

board name:

command line:

writing boot.img-kernel ... complete.

writing boot.img-ramdisk.gz ... 

complete.

解包ramdisk檔案。首先要建立乙個目錄用於存放解壓後的檔案,進入目錄之後,執行以下命令:

#gzip -dc ../boot.img-ramdisk.gz | cpio -i

對檔案作出改動之後,須要又一次做成boot.img檔案。

使用mkbootfs工具(mkbootfs工具是編譯完成android原始碼以後。就會在~/android-src/out/host/linux-x86/bin自己主動生成)來又一次建立ramdisk。能夠使用例如以下命令來操作:

#mkbootfs ./ramdisk | gzip > ramdisk-new.gz

使用mkbootimg來又一次建立boot.img,mkbootimg也能夠在~/android-src/out/host/linux-x86/bin資料夾中能夠找到:

#mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot-new.img

android系統又一次刷rom簡記(二)

又一次講課

今天早上1,2節在海韻404給學生上了習題課,講述大概有一節半的時間。台下學生是軟體學院2007級,大概130多號人物,講授課程是計算機網路的習題課。雖然前幾天已做好功課,寫好習題課課件,大概理清要講的內容,但是今天兩節課上完,感覺還是一般,表達技巧和能力停滯不前。講課時有注意到抑揚頓挫 語速 咬字...

又一次錯愕

昨天突然得到訊息,被公司優化了,優化的不是我乙個人,是我和我帶的團隊,本來也曾想過有可能有類似的情況發生,但沒想到這刀會砍到我頭上,到現在還有點緩不過神來,上一次類似的情形是18年6.1和echo分手,再上一次就是17年5.22和雲科談。其實和雲科解約那次並沒有很痛苦,反倒還有點重獲自由以及對未來未...

又一次重灌系統

真是受不了,現在重裝完系統的第一件事就是裝防毒軟體更新到最新,第二件就是把windows更新到最新,然後才能做其它事,不然,什麼病毒就是大堆大堆的來。太可怕了!想想,乙個暑假已經裝了四次系統了,每次都有原因讓偶重灌,有。裝完之除錯而不能用的,只好重灌。有裝完之後dns居然不能解析,找了一天原因也找不...