boot.img的解包与打包
来源:互联网 发布:windows平板救砖 编辑:程序博客网 时间:2024/06/06 02:23
Android 产品中,内核格式是Linux标准的zImage,根文件系统采用ramdisk格式。这两者在Android下是直接合并在一起取名为boot.img,会放在一个独立分区当中。这个分区格式是Android自行制定的格式。
Android开发时,最标准的做法是重新编译于内核和根文件系统,然后调用Android给的命令行文件mkbootimg(out/host/linux-x86/bin/)来打包。
在制作手机ROM时,有时会单独编译内核或抽出根文件进行修改内容,比如我只编译内核,其余的地方不变。这样重新安装巨大的Android开发环境实在不划算。因此很多boot.img解包工具被人开发出来,这一些工具都是把内核和根文件系统从一个现成的boot.img抽取出来,修发后再次打包还原。
一.常见的解包工具
因为boot.img的格式比较简单,它主要分为三大块(有的可能有四块)
+—————–+
| boot header | 1 page
+—————–+
| kernel | n pages
+—————–+
| ramdisk | m pages
+—————–+
| second stage | o pages
+—————–+
n = (kernel_size + page_size – 1) / page_size
m = (ramdisk_size + page_size – 1) / page_size
o = (second_size + page_size – 1) / page_size
- all entities are page_size aligned in flash
- kernel and ramdisk are required (size != 0)
- second is optional (second_size == 0 -> no second)
因此很多人开发分析工具,有是linux shell脚本,比如repack-zImage,也有人采用perl,还有C语言编写的 unbootimg,
我使用的是在源码位置system/core/mkbootimg/ 下的 mkbootimg。为了简化,蓝点工坊把与mkbootimg中打包工具和解包工具以及所包含的libmincrpty库抽出来,并且重写一个Makefile,作为开源项目。
使用者只需要在linux(需安装gcc,make,一般是标配)或windows(需要安装mingw)的命令行执行make,即可产生可执行文件 mkbootimg ,unpackbootimg。
二.解/打包工具使用
解包工具:unpackbootimg
usage: unpackbootimg
-i|–input boot.img
[ -o|–output output_directory]
[ -p|–pagesize ]
常见格式
unpackbootimg -i .\tmp\boot.img -o .\out
这一句命令行表示把boot.img解包,所有文件输出到out目录下
它会解压出如下文件:
boot.img-zImage (内核文件)
boot.img-ramdisk.gz (根文件系统打包文件)
boot.img-cmdline (mkbootimg cmdline参数)
boot.img-pagesize (mkbootimg pagesize参数)
boot.img-base (mkbootimg base参数)
打包工具:mkbootimg (Android自带)
H:\ttt>mkbootimg.exe
error: no output filename specified
usage: mkbootimg --kernel <filename> --ramdisk <filename> [ --second <2ndbootloader-filename> ] [ --cmdline <kernel-commandline> ] [ --board <boardname> ] [ --base <address> ] [ --pagesize <pagesize> ] -o|--output <filename>
常见的命令格式:
./mkbootimg –cmdline ‘no_console_suspend=1 console=null’ –kernel zImage –ramdisk boot/boot.img-ramdisk.gz -o boot.img –base 02e00000
这句含义是把内核文件zImage和boot目录下的根文件压缩包 boot.img-ramdisk.gz打包成boot.img.
其中cmdline和base的值均来源于unpackbootimg的结果
附上工具下载链接:
http://download.csdn.net/download/qq_33160790/10015612
- boot.img的解包与打包
- boot.img的解包与打包
- boot.img的解包与打包
- boot.img的解包与打包
- boot.img的解包与打包
- boot.img的解包与打包
- boot.img的解包与打包
- boot.img的解包与打包
- boot.img 解包与打包
- boot.img的解包、root、打包
- boot.img与recovery.img的解包
- boot.img与recovery.img的解包
- 【转载】boot.img与recovery.img的解包
- 解包、编辑、打包boot.img文件
- 解包、编辑、打包boot.img文件
- mtk boot.img打包解包
- boot.img解包和打包
- boot.img解包和打包过程
- parentNode,parentElement,childNodes,children的区别
- 利用python+opencv识别图片中的圆形(霍夫变换)
- AirPower的无线充电板
- amixer命令行修改声音大小
- Spring注解@Scheduled执行定时任务
- boot.img的解包与打包
- Windows10下安装VS2013语言包(Compatibility mode is on兼容模式问题)
- android 回合计时器
- BMS状态转换及上电策略
- Java的九个内置对象和四个作用域
- 免费的内网穿透方法(Ngrok映射端口、不限速、不限流量)
- 皮带线定时器的修改
- sessionStorage 、localStorage 和 cookie 之间的区别
- 顺序表插入删除查找操作