1. 程式人生 > >Android 解壓system.img方法(Ubuntu)

Android 解壓system.img方法(Ubuntu)

No.1 make解壓工具        

下載:ext4_utils原始碼包編譯

下載地址:

解壓:ext4_utils

如果有錯誤 cannot output_file.c
就需要安裝zlib庫,執行:
sudo apt-get install zlib1g-dev

No.2   解壓 system.img

把得到的make_ext4fs simg2img 和mkuserimg.sh放在你的工作目錄下,把韌體包裡解壓出來的sysmtem.img拷貝到工作目錄。

[生成ext4格式的檔案]

./simg2img system.img system.img.ext4       (輸入./simg2img的意思是,執行當前目錄下的這個檔案)


mkdir tmp

[在tmp中對system系統映象做修改]

mount -t ext4 -o loop system.img.ext4 tmp/ 

檢視tmp目錄可以看見如下:

這時候可以進入掛載的目錄mysys裡面檢視各個檔案,甚至是修改了。不過這時候要注意一點,就是保持檔案的原始許可權,如果一不小心修改錯了,那麼你可以將檔案許可權設定最大的777,然後再修改使用者為root既可
小提示:app目錄內的檔案許可權都是644,framework目錄也是644,其他目錄一般也都是644的,資料夾許可權一般都是755

舉個例子,我準備把su這個檔案加到韌體的bin目錄下,並且修改許可權

cp ~/work/su ./

ls -l su -rwxr-xr-x 1 root root 26264 2011-07-17 21:16 su

sudo chown root.2000 su
ls -l su -rwxr-xr-x 1 root 2000 26264 2011-07-17 21:16 su
sudo chmod 06755 su

ls -l su -rwsr-sr-x 1 root 2000 26264 2011-07-17 21:16 su

(如果你不知道許可權該如何設定,可以使用命令 ls -l sysmain/app 檢視檔案具體許可權,根據其他檔案的許可權來修改你的檔案許可權即可)
(當你替換已經存在的檔案,無需

修改許可權,如果放入一個沒有存在過的檔案,切記修改相應的使用者組,使用命令 chown root.root 來修改它的使用者和使用者組)
如果執行命令許可權不足,可以在每個命令前加上sudo命令,這樣可以以最高許可權執行每個命令了
這個就是將app目錄設定為許可權高,然後你將檔案放入。放入後記得一定要再將你放入的檔案許可權改好。同時恢復app原始許可權
一般建議大家使用命令來移動、複製檔案,這樣不存在許可權問題

No.3      打包

./mkuserimg.sh -s sysmain systest.img.ext4 ext4 tmp 512M

注意:tmp是我在當前目錄新建立的一個目錄,後面的512M是這個映象打包後佔用空間大小。如果你不知道你的映象包應該多大,你檢視你映象掛載到目錄後,這個映象分割槽的大小
當你完成以上步驟,新的systest.img.ext4成功生成了,好了,你可以在fastboot模式下刷入了

有個朋友如此做:避免無許可權的問題。temp是個臨時掛載目錄,需要你手工建立。

sudo /home/xiaolu/work/mkuserimg.sh -s /home/xiaolu/work/ZNKG5  /home/xiaolu/work/ZNKG5-new.img ext4 /home/xiaolu/work/temp 512M

sudo /home/xiaolu/work/mkuserimg.sh -s /home/xiaolu/work/ZNKG5  /home/xiaolu/work/ZNKG5-new.img ext4 /home/xiaolu/work/temp 512M in mkuserimg.sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin ./make_ext4fs -s -l 512M -a /home/xiaolu/work/temp /home/xiaolu/work/ZNKG5-new.img /home/xiaolu/work/ZNKG5