第一使解壓工具
下載:ext4_utils源碼包編譯
下載地址:
解壓:ext4_utils
- ~/work$ cd ext4_utils
- ~/work/ext4_utils$ make clean
- rm -rf *.o make_ext4fs simg2img
- ~/work/ext4_utils$ make
- gcc -I. -DANDROID -c make_ext4fs.c
- gcc -I. -DANDROID -c make_ext4fs_main.c
- gcc -I. -DANDROID -c ext4_utils.c
- gcc -I. -DANDROID -c allocate.c
- gcc -I. -DANDROID -c backed_block.c
- gcc -I. -DANDROID -c output_file.c
- gcc -I. -DANDROID -c contents.c
- contents.c: In function ‘make_directory’:
- contents.c:118: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 4 has type ‘u32’
- gcc -I. -DANDROID -c extent.c
- gcc -I. -DANDROID -c indirect.c
- gcc -I. -DANDROID -c uuid.c
- gcc -I. -DANDROID -c sha1.c
- gcc -I. -DANDROID -c sparse_crc32.c
- gcc make_ext4fs.o make_ext4fs_main.o ext4_utils.o allocate.o backed_block.o output_file.o contents.o extent.o indirect.o uuid.o sha1.o sparse_crc32.o -o make_ext4fs -lz
- gcc -I. -DANDROID -c simg2img.c
- gcc simg2img.o sparse_crc32.o -o simg2img
- ~/work/ext4_utils$
如果有錯誤不能output_file.c就需要安裝的zlib庫,運行:
sudo apt-get install zlib1g-dev
第二解壓system.img
把得到的make_ext4fs simg2img
[生成的ext4格式的文件]
../simg2img system.img system.img.ext4 (輸入./simg2img的意思是,執行當前目錄下的這個文件)
mkdir tmp (建立 tmp 資料夾方便我們修改)
[掛載tmp對應系統鏡像做修改]
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 -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原始權限
一般建議大家使用命令來移動、複製文件,這樣不存在權限問題
第三打包
./mkuserimg.sh -s sysmain systest.img.ext4 ext4 tmp 512M
注意:tmp是我在當前目錄新建立的一個目錄,後面的512M是這個鏡像打包後佔用空間大小。如果你不知道你的鏡像包應該多大,你查看你鏡像掛載到目錄後,這個鏡像分區的大小
當你完成以上步驟,新的systest.img.ext4成功生成了,好了,你可以在fastboot模式下刷入了
sudo ./make_ext4fs -l 512M -s -a system system-new.img ./tmp