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系統一點都不了解,請慎重進行下面的操作。

需要的工具:split_bootimg.plmkbootimgmkbootfs

1.拆包boot.img,需要用到一個perl腳本split_bootimg.pl。在linux終端里輸入以下命令:

./split_bootimg.pl boot.img

執行上述操作后, boot.img分成了兩部分:boot.img-kernelboot.img-ramdisk.gzboot.img-kernel 是內核部分,這部分我們不能修改。boot.img-ramdisk.gz解壓后得到的boot.img-ramdisk文件才是我們要修改的部分。

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

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

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

這樣boot.img-ramdisk中的內容全部解壓到了ramdisk目錄下。

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

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刷回去,系統一點改變都沒有。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM