修改nexus 7的boot.img,打开系统调试

来源:互联网 发布:原图下载软件 编辑:程序博客网 时间:2024/04/30 17:37

给android设备刷入新的boot.img,可以在IDE下调试进程,否则都是“?”符号,只得在清单中加入debuggable属性,才能调试,这样很不方便!


Android 系统的 rom 最主要的就是 3 个文件: boot.img 、 system.img 、userdata.img 。其中 boot.img 存放着内核以及 Android 系统的配置信息,比如android 系统各文件夹的读写权限, adb 的权限。所以如果你要修改文件夹的写权限, adb 的 root 权限,修改 boot.img 对应的地方就 ok 了。 system.img 中存放的是系统的各种库,系统预装的 app 等, userdata.img 是一下用户的配置信息。 今天这里介绍怎么解开 boot.img 文件,修改对应的文件,使 system 文件夹有写权限, adb登录后为 root 用户。下面所使用的方法需要一定的 linux 系统基础,如果你对 linux 系统一点都不了解,请慎重进行下面的操作。

需要的工具: split_bootimg.pl , mkbootimg , mkbootfs

1. 拆包 boot.img ,需要用到一个 perl 脚本 split_bootimg.pl 。在 linux 终端里输入以下命令:

./split_bootimg.pl boot.img


执行上述操作后, boot.img 分成了两部分: boot.img-kernel 和 boot.img-ramdisk.gz , boot.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=0 ; ro.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 | minigzip > 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 刷回去,系统一点改变都没有。

注:本文转载http://www.tuicool.com/articles/UjMNJf#c-12527,本人也亲自修改了nexus 7 wifi table android 5.0.1系统rom中的boot.img,现在可以在IDE下调试程序了!我把修改的boot.img上传至本文,方便大家使用。

下载地址:boot.img下载     fastboot工具下载


1 0
原创粉丝点击