boot.img的修改

Android 系統的rom最主要的就是3個文件:boot.imgsystem.imguserdata.img。其中boot.img 存放着內核以及Android系統的配置信息,好比android系統各文件夾的讀寫權限,adb 的權限。因此若是你要修改文件夾的寫權限,adbroot權限,修改boot.img對應的地方就ok了。system.img中存放的是系統的各類庫,系統預裝的app等,userdata.img是一下用戶的配置信息。今天這裏介紹怎麼解開boot.img文件,修改對應的文件,使system文件夾有寫權限,adb 登陸後爲root用戶。下面所使用的方法須要必定的linux系統基礎,若是你對linux系統一點都不瞭解,請慎重進行下面的操做。linux

須要的工具:split_bootimg.plmkbootimgmkbootfsandroid

1.拆包boot.img,須要用到一個perl腳本split_bootimg.pl。在linux終端裏輸入如下命令:c++

./split_bootimg.pl boot.img git

執行上述操做後, boot.img分紅了兩部分:boot.img-kernelboot.img-ramdisk.gzboot.img-kernel 是內核部分,這部分咱們不能修改。boot.img-ramdisk.gz解壓後獲得的boot.img-ramdisk文件纔是咱們要修改的部分。github

2.file boot.img-ramdisk 命令查看該文件格式,發現它是ASCII cpio archive格式,要用特殊的命令打開。api

解壓及打開該文件的命令以下:app

gzip -dc ../boot.img-ramdisk.gz | cpio -i 工具

這樣boot.img-ramdisk中的內容所有解壓到了ramdisk目錄下。google

3.adb root,找到ramdisk目錄下的 default.prop 文件,將其中的 ro.secure=1,修改成ro.secure=0ro.debuggable=0修改成ro.debuggable=1。這樣你的adb就是root了。spa

4.文件夾可寫,找到ramdisk目錄下的init.rc 文件,找到

mount yaffs2 mtd@system /system ro remount 這一行(不一樣的機子可能不同,可是"mount"、"/system ro remount"都是同樣的),其中的ro表明readonly,將其改爲rw,就可讀寫了,這個改的是/system文件夾。

在取得了adb root權限後,這一步徹底不須要修改,在adb 登陸後經過執行:mount -o remount,rw /system能夠達到同樣的效果,只是前面的修改是永久有效的,後面這種是臨時的,重啓後就無效了。

好,如今文件都已經修改完成了,只須要打包了。

5.ramdisk目錄下執行:

cpio -i -t -F ../boot.img-ramdisk | cpio -o -H newc -O ./boot.img-ramdisk_new

在當前目錄下生成boot.img-ramdisk_new,使用以下命令打包:

gzip boot.img-ramdisk_new

最後一步就是要生成boot.img了,這裏須要一個工具mkbootimg,這個android源代碼裏編譯而成的,若是你沒有源代碼,也能夠直接去網上下載http://code.google.com/p/android-serialport-api/downloads/detail?name=android_bootimg_tools.tar.gz&can=2&q=。使用以下命令生成boot.img

mkbootimg --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz -o newboot.img

該工具是32位的,若是在64位系統下運行則會出現"./mkbootimg: command not found"的錯誤,須要安裝如下文件:

sudo apt-get install lib32stdc++6 lib32z1 lib32z1-dev

sudo apt-get install ia32-libs

5步也能夠這樣作:

# mkbootfs ./ramdisk | gzip > ramdisk.img

# mkbootimg --cmdline "androidboot.hardware=qcom loglevel=1" --base 0x00200000 --pagesize 4096 --kernel boot.img-kernel --ramdisk ramdisk.img -o NewBoot.img

 

最後使用fastboot flash boot newboot.img (或者刷機工具)將新的boot.img刷進系統,就ok了。由於只修改了boot.img部分,因此你先前裝好的apk,下載的東西會完整無缺的保存着,系統和原先如出一轍,因此只有你備份了一個可用的boot.img,你就能夠隨便刷你本身的boot.img了,萬一修改的boot.img啓動不了,能夠把備份的boot.img刷回去,系統一點改變都沒有。

相關文章
相關標籤/搜索