android boot.img 修改,打包遇到的坑(明远智睿 Android 5.1)
在制作Android rom的时候我们需要 解压 原始的 boot.img 具体步骤如下:
首先我们进入目录:
建立Linux 文件 这个文件夹包含如下命令 :这个文件可以在****上下载到,因为基于x86 的所以基本都能运行虽然安卓源码的x86/bin 下有一部分但 不全,索性在网上下载了,如下图:
进入Linux目录 解压:boot-myimx6ek200-6q.img,因为我们是ek200的板子(根据各自需要)
首先 执行
1.cp …/boot-myimx6ek200-6q.img ./ // 复制目标文件到当前文件夹
2…/unpacebootimg -i boot-myimx6ek200-6q.img //解压文件
解压后的目录如图: test 和ramdisk 先不用管,后面介绍
3.先什么都不用改尝试打包:
命令:./mkbootimg --base 0x14000000 --cmdline ‘console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.hardware=freescale cma=384M’ --ramdisk ./boot-myimx6ek200-6q.img-ramdisk.gz --pagesize 2048 --kernel ./boot-myimx6ek200-6q.img-zImage - -second myimx6ek200-6q.dtb -o boot-myimx6ek200-6q.img
说明:
1.我们解压是时候可以看到 base 的地址 cmdline的内容, pagesize的大小,但是我们引用的时候不能引用那个文件,只能引用具体的value 就像上面的命令那样,
2.还有一个重要的点坑了我好久的是 他解压后并没有设备树文件,而且也没有提示,但是不加设备树 烧写板子 启动的时候就会提示没有设备树,我尝试观启动正常的板子的log信息,发现设备树是有的而且有地址的提示和大小,这时候我们仔细研究 mkbootimg 命令,他的参数有一个 second 选项 我首先尝试在这里写一个地址 然后加载一个空的文件,然后打包烧写,虽然没有设备树文件但是log里的地址信息已经正确了,所以我们 在这里引用设备树 打包,烧写正常。
下一篇我们将介绍如何修改ramdisk 获得root 权限,本来以为这一步很简单没有问题,但后面的步骤修改完了,烧写,系统启动不起来,所以倒退回来找问题,各种查资料请教人也没有解决,也是灵机一动想到的。最后想说一句 明远智睿的Android 技术支持 —mmp-----