android boot.img unpack pack
每次编译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 -h
total 4.9M
drwxrwxr-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: 2048
BASE ADDRESS: 0x10800000
RAMDISK ADDRESS: 0x11800000
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'
- 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 -lh
total 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.gz
drwxrwxr-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 boot
boot.img-kernel boot.img-ramdisk.cpio.gz new-ramdisk.cpio.gz ramdisk
- boot.img pack
从新打包boot.img,命令行比较长,所以写成一个脚本。
repack_boot.sh
#!/bin/sh
set -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=2048
base_addr=0x10800000
ramdisk_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/ramdisk
625 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
android boot.img unpack pack的更多相关文章
- In Depth : Android Boot Sequence / Process
In Depth : Android Boot Sequence / Process What happened when I press power on button in my Android ...
- android boot.img 结构
android 的boot.img 包括 boot header,kernel, ramdisk 首先来看看Makefile是如何产生我们的boot.img的: boot镜像不是普通意义上的文件系统, ...
- 另一种root方法,Android boot.img破解
一.破解原理 Android手机获得Root权限,其实就是让/system和/data分区获得读写的权限.这两个分区的权限配置,一般在根分区的init.rc文件中,修改这个文件可永久获得root权限. ...
- android boot.img
android在启动时uboot推断有没有组合健按下或者cache分区的升级文件来决定进入哪个系统(可能还有别的推断方式) 有组合健按下或者cache分区有升级文件,则载入recovery.img进入 ...
- Android/Linux boot time分析优化
如果需要优化boot time,就需要一个量化的工具来分析每个阶段的时间消耗.这种类型的优化特别适合使用基于timeline的图表,有着明显的时间顺序.要求不但能给出整个流程消耗的时间,还要能对流程进 ...
- 解压 boot.img
./split_bootimg.pl boot.img Page size: 2048 (0x00000800) Kernel size: 7062084 (0x006bc244) Ramdisk s ...
- Lenovo k860i 移植Android 4.4 cm11进度记录【上篇已完结】
2014.5.16 为了验证一下下载的CM11的源码有没有问题,决定编译一下cm官方支持的机器,手上正好有台nexus7 2012,就拿它为例测试一下在mac os x平台的整个编译过程. 1. 最开 ...
- 从Android设备中提取内核和逆向分析
本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57074695 一.手机设备环境 Model number: Nexus 5 OS ...
- Android Bootloader LittleKernel的两篇文章 【转】
转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 ...
随机推荐
- Android开发10——Activity的跳转与传值
Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. 一.Activity跳转 方法一Intent intent = new Intent(A.this, B ...
- ev3dev :利用ssh登录系统
ev3dev是在debian 8 的基础上修改的,主页上只介绍了利用usb连接系统后,ssh登录的方法. 可是我想用wifi连接到网络后,用ssh登录,非usb线连接. ev3dev的默认用户名为:r ...
- awstat分析nginx日志
awstat分析nginx日志 http://lxw66.blog.51cto.com/5547576/1323712 server{ listen ; server_name localhost; ...
- 在java代码中用xslt处理xml文件
java处理xml文件 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...
- 随记MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、date_format、str_to_date)
时间差函数(TIMESTAMPDIFF.DATEDIFF) 需要用MySQL计算时间差,使用TIMESTAMPDIFF.DATEDIFF,记录一下实验结果 select datediff(now(), ...
- Mac OSX系统、Linux、Windows命令行教程
目录 Mac OSX系统.Linux.Windows命令行教程 一.各系统终端的使用方法 二.各系统命令的功能 Mac OSX系统.Linux.Windows命令行教程 用你的终端做一些事情 (com ...
- 用C++画光(三)——色散
写在前面 源码:https://github.com/bajdcc/GameFramework/blob/master/CCGameFramework/base/pe2d/Render2DScene5 ...
- 关于Parse字符串为时间一次被坑经历
在Java代码中发现一个bug,就是本来更新为时间的内容更新为一些奇怪的内容,比如20819这种形式,本来更新的时间都是近期不会超过一年, 为什么会出现这种情况,非常奇怪,遂调试下代码,跟踪发现要匹配 ...
- 通过分区(Partitioning)提高Spark的运行性能
在Sortable公司,很多数据处理的工作都是使用Spark完成的.在使用Spark的过程中他们发现了一个能够提高Sparkjob性能的一个技巧,也就是修改数据的分区数,本文将举个例子并详细地介绍如何 ...
- 使用vuex保存singer每个歌星的基本信息
1.建src/store文件夹,建立以下文件来存储歌星信息 2.state.js const state = { singer:{} } export default state 2.mutation ...