ROM定製開發入門-system userdata鏡像解包打包

 

一、linux環境解包打包

 

環境要求:Ubuntu

此處以system.img和userdata.img打包爲例,基於谷歌源碼編譯的工具使用方法和命令

 

1.轉換格式

在解包過程中,system或者userdata鏡像文件經常以兩種格式出現:raw和sparse。

 

一種是raw ext4 image,即經常說的raw image,使用file觀察它:

其特點是完整的ext4分區鏡像(包含很多全零的無效填充區),可以直接使用mount進行掛載,因此比較大。

 

$ file system.img

system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)

信息非常明確了。

 

另一種是sparse ext4 image,即經常說的simg,使用file觀察它:

$ file system.img

system.img: data

如果格式爲data,需要從data格式轉成ext4格式,也就是raw格式,如下

 

> simg2img system.img system.img.ext4 //轉換格式

> mkdir tmp //新建臨時文件夾

> sudo mount -o loop system.img.ext4 tmp 將ext4文件掛載到tmp目錄

 

2.常規打包:

ls -l system.img.ext4看大小,假設是1073741824,這個參數後邊用到。(此處l是英文字母L)

 

> ./make_ext4fs -s -l 2684354560  -a system new_system.img ./tmp

 

3.安卓5.0以及5.0以上版本打包,需注意

 

命令如下:

$ ./make_ext4fs -s -T 1421464178 -S file_contexts -l 1073741824 -a system new_system.img system/

 

或者:

./make_ext4fs -s  -S file_contexts -l 2048M -a system new_system.img system/

 

命令參數說明:

// -s 表示安靜處理,不輸出動作,可以不帶該參數

// -T 表示Unix時間戳,對system.img中的文件設置修改時間,執行“

date +%s”獲取某個時間點的時間戳,也可以直接不用-T 1421464178 ;

// -S 表示sepolicy 的file_contexts,把該文件放到此目錄下,文件取自官方system/root路徑卡刷包自帶(解壓內核,在內核裏面)

// -l 表示最大的文件大小(受限於分區大小);可以ls -l 當前轉格式出來的system大小、單位也可以爲MB

// -a 表示Android的mount點,比如system、userdatarecovery;

// oksystem.img 表示輸出文件名

// system/ 表示輸入目錄,該目錄下有framework、appbin等目錄;

 

上述的simg2img和make_ext4fs是android自帶的工具,如果有android源碼而且編譯通過的話, 這些工具可以在/out/host/linux-x86/bin中找到。

 

Linux工具下載:

https://github.com/Loren-Yi/make_ext4fs

 

 

二、windows下解包打包

僅列出如下,不一一說明用法,如下:

1.第三方PC客戶端工具

2.第三方批處理腳本工具

3.主流客戶端工具:ROM定製大師,ROM製作工具和蘑菇助手

 

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