须知少年凌云志,曾许人间第一流。这篇文章主要讲述android boot.img文件结构拆包打包相关的知识,希望能为你提供帮助。
【android boot.img文件结构拆包打包】boot.img
is not a compressed filesystem image like
system.img
. It is read by the bootloader, and contains little more than a kernel image and a ramdisk image.
我们可以从手机导出boot.img, 其实它并不是一个完整的文件系统 ,由google定义的文件格式。如何定义见,android-src/system/core/mkbootimg/bootimg.h
2k头文件,gzip压缩的内核,ramdisk, second stage(可选)
1F 8B 08便是内核起始处
ramdisk映像是一个最基础的小型文件系统,它包括了初始化系统所需要的全部核心文件,例如:初始化init进程以及init.rc(可以用于设置很多系统的参数)等文件。如果你您希望了解更多关于此文件的信息可以参考以下网址:
http://git.source.android.com/?p=kernel/common.git;
a=blob;
f=Documentation/filesystems/ramfs-rootfs-initramfs.txt
二、boot.img解压
以下地址下载到工具,包含2个程序,
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
* unpackbootimg
* mkbootimg
解压以后得到:
* boot.img-zImage----> kernel * boot.img-ramdisk.gz ----> ramdisk
三、重点说下这个内核boot.img-zImage
很好判断gzip格式,解压命令:
gunzip -c boot.img-ramdisk.gz | cpio -i
解压后是个特定于cpu的目标文件 arm64 pe格式
四、重新打包
mkbootimg
推荐阅读
- Android错误之--Error retrieving parent for item: No resource found that matches the given name &#39
- 如何在Ubuntu 16.04 LTS上安装NGINX()
- 如何在Ubuntu 160.4 LTS上安装NetBeans()
- 如何在Ubuntu 16.04中安装Magento
- 如何在Ubuntu中安装Laravel
- 如何在Ubuntu上安装LAMP(Linux Apache MySQL PHP)()
- 如何在Ubuntu 16.04 LTS上安装IntelliJ IDEA IDE()
- 如何在Ubuntu 16.04 LTS上安装GIMP()
- 如何在Ubuntu 16.04 LTS上安装Eclipse()