博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android boot.img unpack pack
阅读量:5244 次
发布时间:2019-06-14

本文共 4140 字,大约阅读时间需要 13 分钟。

每次编译boot.img都要花比较长的时间,有时候只是更改其中的配置文件。

如果能够将boot.img解压,更改之后再打包的话,就能节省时间。

boot.img tools是别人写好的工具,能很好的解决boot.img解包的问题。

参考链接:

http://mtksupport.blogspot.ru/2015/07/tool-bootimg-tools-unpack-repack-ramdisk.html

https://forum.xda-developers.com/showthread.php?t=2319018

boot.img unpack

从上面的网址中下载boot.img tool。我下载的是bootimg_tools_7.8.13.zip。

解压之后会有如下几个文件。

tony@tony:~/myandroid/out/target/product/sabresd_6dq/bootimg_tools$ ll -htotal 4.9Mdrwxrwxr-x  3 tony tony 4.0K Feb 24 17:39 ./drwxrwxr-x 11 tony tony 4.0K Feb 24 11:03 ../-rwxrwxr-x  1 tony tony 5.0K Feb 24 11:03 boot_info*        # 查看boot.img信息 -rwxrwxr-x  1 tony tony  28K Feb 24 11:03 mkbootimg*        # 打包boot.img-rwxrwxr-x  1 tony tony  371 Feb 24 11:03 repack_ramdisk*   # 打包ramdisk-rwxrwxr-x  1 tony tony 7.2K Feb 24 11:03 split_boot*       # 分离bootimg-rwxrwxr-x  1 tony tony 580899 Feb 27 13:24 umkbootimg*-rwxrwxr-x  1 tony tony    257 Feb 27 13:24 unpack*-rwxrwxr-x  1 tony tony  287 Feb 24 11:03 unpack_ramdisk*   # 解压ramdisk

boot_info查看boot.img的信息,后续从新打包的时候会用到。

tony@tony:~/myandroid/out/target/product/sabresd_6dq/bootimg_tools$ ./boot_info ../boot.img PAGE SIZE: 2048BASE ADDRESS: 0x10800000RAMDISK ADDRESS: 0x11800000CMDLINE: 'console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=freescale'
  • boot.img 解包
tony@tony:~/myandroid/out/target/product/sabresd_6dq/bootimg_tools$ ./split_boot ../boot.img Page size: 2048 (0x00000800)Kernel size: 4825724 (0x0049a27c)Ramdisk size: 183962 (0x0002ce9a)Second size: 0 (0x00000000)Board name: Command line: 'console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=freescale'Base address: (0x10800000)Writing boot/boot.img-kernel ... complete.Writing boot/boot.img-ramdisk.cpio.gz ... complete.Unpacking ramdisk... complete.

在当前目录生成了一个boot的目录,内容如下:

tony@tony:~/myandroid/out/target/product/sabresd_6dq/bootimg_tools$ ls boot -lhtotal 4.8M-rw-rw-r-- 1 tony tony 4.7M Feb 27 11:26 boot.img-kernel-rw-rw-r-- 1 tony tony 180K Feb 27 11:26 boot.img-ramdisk.cpio.gzdrwxrwxr-x 8 tony tony 4.0K Feb 24 13:26 ramdisk

boot.img-kernel是kenel的镜像

boot.img-ramdisk.cpio.gz是ramdisk的压缩包。

ramdisk是boot.img-ramdisk.cpio.gz解压之后的目录。

boot.img pack

  • ramdisk pack

从新打包ramdisk。

tony@tony:~/myandroid/out/target/product/sabresd_6dq/bootimg_tools$ ./repack_ramdisk boot/ramdisk/625 blocks#在 boot目录生成new-ramdisk.cpio.gz文件tony@tony:~/myandroid/out/target/product/sabresd_6dq/bootimg_tools$ ls bootboot.img-kernel  boot.img-ramdisk.cpio.gz  new-ramdisk.cpio.gz  ramdisk
  • boot.img pack

从新打包boot.img,命令行比较长,所以写成一个脚本。

repack_boot.sh

#!/bin/shset -x  # 脚本运行时,在终端输出每条运行的命令。cmdline="console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=freescale"page_size=2048base_addr=0x10800000ramdisk_addr=0x11800000./repack_ramdisk boot/ramdisk./mkbootimg --cmdline "$cmdline" --base $base_addr --ramdiskaddr $ramdisk_addr --pagesize $page_size --kernel boot/boot.img-kernel --ramdisk boot/new-ramdisk.cpio.gz -o boot.img

运行时,输出如下所示。在当前目录生成boot.img文件。

tony@tony:~/myandroid/out/target/product/sabresd_6dq/bootimg_tools$ ./repack_boot.sh + cmdline=console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=freescale+ page_size=2048+ base_addr=0x10800000+ ramdisk_addr=0x11800000+ ./repack_ramdisk boot/ramdisk625 blocks+ ./mkbootimg --cmdline console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=freescale --base 0x10800000 --ramdiskaddr 0x11800000 --pagesize 2048 --kernel boot/boot.img-kernel --ramdisk boot/new-ramdisk.cpio.gz -o boot.img

Tony Liu

2017-2-27, Shenzhen

转载于:https://www.cnblogs.com/helloworldtoyou/p/6473661.html

你可能感兴趣的文章
Min Stack
查看>>
老鸟的Python入门教程
查看>>
Ubuntu下非常给力的下载工具--uget+aria2
查看>>
Nginx配置
查看>>
棋盘覆盖问题
查看>>
vs2003无法调试 解决方法收藏
查看>>
.net-一般处理程序及生命周期
查看>>
linux sed命令
查看>>
[Cycle.js] Making our toy DOM Driver more flexible
查看>>
7-2 然后是几点(15 分)
查看>>
PTA 04-树6 Complete Binary Search Tree (30分)
查看>>
十款提高开发效率的PHP编码工
查看>>
C# 委托参数方法实例
查看>>
Oracle多表连接查询区别
查看>>
poj2738 Two Ends
查看>>
word操作
查看>>
C#操纵Word
查看>>
犯罪团伙
查看>>
Servlet上传文件
查看>>
How to find public key token for a .NET DLL or assembly
查看>>