如何解包/编辑/打包boot.img文件

来源:互联网 发布:免费数据库网站有哪些 编辑:程序博客网 时间:2024/05/16 12:48

介绍一种解包/编辑/打包boot.img的方法

split_bootimg.pl脚本可以读取boot.img头(根据Android源码中的bootimg.h读取)将kernel和ramdisk读取出来,此脚本也会输出内核命令行和板子名字。

下载split_bootimg.pl

http://download.csdn.net/detail/chb2000/4119837


% ./split_bootimg.pl boot.img 
Page size: 2048 (0x00000800
)
Kernel size: 1388548 (0x00153004
)
Ramdisk size: 141518 (0x000228ce
)
Second size: 0 (0x00000000
)
Board name: 
Command line: no_console_suspend=1

Writing boot.img-kernel ... complete.
Writing boot.img-ramdisk.gz ... complete.

复制代码

 


解包ramdisk的命令如下:
% mkdir ramdisk
%
 cd ramdisk
% gzip -dc ../boot.img-ramdisk.gz | cpio -
i
% cd ..
复制代码

 


解码完毕后,就可以修改了(例如,在default.prop设置ro.secure=0等等)

使用mkbootfs工具(mkbootfs工具是编译完毕Android源代码以后,就会在~/android-src/out/host/linux-x86/bin自动生成)来重新创建ramdisk,可以使用如下命令来操作:
% mkbootfs ./ramdisk | gzip > ramdisk-new.gz

 


使用mkbootimg来重新创建boot.img,mkbootimg也可以在~/android-src/out/host/linux-x86/bin目录中可以找到:
% mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot-new.img
复制代码

 

(注意:console=null的命令行选现是从TC4-RC30的boot.img引入的,用以去掉root shell)