转载自:https://www.cnblogs.com/jiayayao/p/7147140.html

对于一些不可以root的手机,我们可以通过修改boot.img的方式进行修改,修改boot.img后,需要重新打包boot.img,然后通过fastboot重新刷入新的boot.img

  1. 准备工作:

准备一台ubuntu机器,将boot.img复制到该机器上,下载必要的工具
sudo apt-get install abootimg
git clone https://github.com/anestisb/android-simg2img.git
cd android-simg2img
make
sudo cp simg2img /usr/bin

  1. 解压缩boot镜像
    abootimg -x boot.img
    mkdir ramdisk
    cd ramdisk
    gunzip -c ../initrd.img | cpio -i

  2. 修改default.prop文件,使得
    ro.secure=0
    ro.debuggable=1

  3. 修改init.rc,使得
    on property:ro.debuggable=1
    start console

service adbd /sbin/adbd
class core
socket adbd stream 660 system system
disabled
seclabel u:r:su:s0

on post-fs

once everything is setup, no need to modify /

mount rootfs rootfs / rw remount

  1. 修改fstab.freescale,使得挂载权限可写
    /dev/block/mmcblk0p5 /system ext4 rw wait

  2. 重新打包ramdisk文件
    cd ramdisk/
    find . | cpio –o –H newc | gzip > ../new-ramdisk.img

  3. 生成新的boot.img
    由于解压缩后再打包,new-randisk.img文件大小会与原来的initrd.img大小不同,
    如果比原来大,需要重新设置boot.img的大小,
    查看原来的大小
    cat bootimg.cfg,
    第一行是原来的boot.img的大小,
    使用ls -l 查看initrd.img和new-ramdisk.img两个文件的大小,
    在原来boot.img的大小基础上加上两个文件的大小差(NEWSIZE-BYTES),注意增加的字节数最好是block的整数倍,例如4096字节等等。
    然后使用命令生成新的镜像:
    abootimg –create new-boot.img -f bootimg.cfg -k zImage -r new-ramdisk.img -c “bootsize=NEWSIZE-BYTES”

  4. 将生成的new-boot.img作为boot.img重新刷入开发板,
    重启后进入系统,system分区变成可写了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

定制适合自己的Android studio插件 上一篇
OkHttp源码阅读 下一篇