官方韌體修改以及T卡升級包修改
首先給大家介紹一下,system.img 檔案
system.img檔案經常以兩種格式出現:raw和sparse。
1. raw ext4 image,即經常說的raw image,使用file觀察它:$ file system.img
system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b
其特點是完整的ext4分割槽映象(包含很多全零的無效填充區),可以直接使用mount進行掛載,因此比較大(一般1G左右)。
2. sparse ext4 image,即經常說的simg,使用file觀察它:$ file system.img
system.img: data
就是說是一個非常普通的dat檔案。由於它將raw ext4進行稀疏描述,因此尺寸比較小(沒有全零的無效填充區,一般在300到500M之間)。
注:
所有操作Linux中執行
make_ext4fs,simg2img 如果有原始碼可以從/out/host/linux-x86/bin/ 下獲取
signapk.jar 如果有原始碼可以從/out/host/linux-x86/framework/
下獲取
第一部分 system.img檔案修改
1.system.img是raw ext4 image格式(raw image),
1)建system資料夾
mkdir system
2) 掛載分割槽到系統修改
sudo mount -t ext4 -o loop system_org.img system
3) ls 檢視一下system_org.img映象大小。
ls -l system_org.img
-rw-rw-r-- 1 xxx:xxx999997440
.... system_org.img
因為我們打包需要設定映象檔案大小,這個大小是固定的,最好別亂改。
4) 獲取file_contexts檔案,打包需要用到。
adb pull system/file_contexts(或者解包boot.img來獲取,這裡不詳述)
5) 修改過後通過make_ext4fs來打包為sparse img模式的ext4,關鍵引數是 -s
sudo make_ext4fs -S file_contexts -s -l 999997440 -a system system_org.img ./system
6) 打包後,需要將simg轉換為raw image
simg2img system.img system_out.img
2.system.img是sparse ext4 image格式(simg),
1)建system資料夾
mkdir system
2) 將simg轉換為raw image
simg2img system_org.img system_org_raw.img
3) 掛載分割槽到系統修改
sudo mount -t ext4 -o loop
system_org_raw.img system
4) ls 檢視一下system_org_raw.img映象大小。
ls -l system_org_raw.img
-rw-rw-r-- 1 xxx:xxx 999997440 .... system_org_raw.img
因為我們打包需要設定映象檔案大小,這個大小是固定的,最好別亂改。
5) 獲取file_contexts檔案,打包需要用到。
adb pull system/file_contexts(或者解包boot.img來獲取,這裡不詳述)
6) 修改過後通過make_ext4fs來打包為sparse img模式的ext4,關鍵引數是 -s
sudo make_ext4fs -S file_contexts -s -l 999997440 -a system system_org.img ./system
第二部分 T卡整包升級修改
分為兩種,
1.update.zip包仿照增量包的方式進行打包了。使用make
otapackage得到一個zip檔案,檢視內容:
boot.img
file_contexts
META-INF
system.new.dat
system.patch.dat
system.transfer.list
直接用修改後的system.img(可參考第一部分修改),
執行指令:python img2sdat.zip
然後生成如下三個檔案
system.new.dat
system.patch.dat
system.transfer.list
替換原始T卡升級包,然後簽名即可
2.update.zip中system全部解包,
直接修改update.zip包,修改後簽名
簽名方法:
java -Xmx2048m -jar signapk.jar -w releasekey.x509.pem releasekey.pk8 update.zip update_new.zip