歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 解壓和重新打包system.img

開始我們的工作前,請記住,Linux一定要學會用file命令分析文件類型,這樣才好入手,否則錯了都不知道怎麼回事!!!

1、解壓system.img

先用file命令查看system.img的文件類型

file system.img

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

看到沒 ext4 filesystem data

那好辦,采用掛載分區的方式來打開system.img文件

mount -t ext4 -o loop system.img  systemimg    //此命令的意思將system.img鏡像文件掛載到systemimg目錄

cd systemimg

Android標准的文件結構就出來了,裡面可以“隨意”定制

2、重新打包生成system.img

打包命令:

./make_ext4fs -l 1024M -s -a system system_new.img systemimg

參數解析:1024M代表你要打包的system.img大小,這個值可以參考掛載前system.img的大小

"-a system",是指這個img用於android系統,掛載點是/system,使用這個參數,make_ext4fs會根據private/android_filesystem_config.h裡定義好的權限來給文件夾裡的所有文件重新設置權限,如果你刷機以後發現有文件權限不對,可以手工修改android_filesystem_config.h來添加權限,重新編譯make_ext4fs,也可以不使用 “-a system”參數,這樣就會使用文件的默認權限。

system_new.img代表新生成的img

systemimg就是上面掛載後的目錄

一般很多人認為這樣生成的system_new.img就可以用了,其實不然

再次用file命令查看文件類型

file system_new.img

 system_new.img: data

跟之前的輸出截然不同,這顯然不是ext4文件類型,啥情況???

方法就是繼續使用simg2img工具將其轉換成真正的ext4文件

./simg2img system_new.img system_out.img

得到system_out.img

file system_out.img

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

怎麼樣?這次得到的img就是ext4了吧?ok,那麼這個system_out.img就是我們重新打包生成的img了,這就可以燒到手機裡面看看效果了。。。

PS:上面提到的make_ext4fs simg2img等工具在android環境的out/host/linux-x86/bin目錄下。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved