android rom制作之bootimg的详细介绍和使用

      adb的强大之处在于可以在PC端直接操控手机,可以说是通用的工具!那么今天带来的这款工具的强大,估计会让爱好者灰常之兴奋,用好这款工具你就可以动手修改boot.img了,而不是简简单单的精简ROM或者美化美化加加字体等每个人都可以完成的工作!

个人常用功能     

1、解包/打包boot.img/recovery.img      

2、解包/打包ramdisk     

3、解包data/system.img      

4、解密/生成rle加密图片(开机第二屏图片,不是开机动画哦)      

另外:还支持解包updata.app(本人未用过)

背景知识

一、Android手机的文件系统 Android手机的文件系统有许多存储器组成,以下是在adb shell下面的输出:

1 cat/proc/mtd

注意,不同的手机在上述存储设备的顺序可能会各不相同!一定要检查您的手机,确定在以下的操作中选择正确的设备号(mtdX,这个X的序号一定要检查清楚)。 根目录以及分区的定义(在Android源代码的root.c文件中定义)

根目录: Linux 块设备 /挂载点/ 文件系统 大小 描述
BOOT: /dev/mtdblock[?] / (RAM) Raw 内核、内存盘和引导配置。
DATA: /dev/mtdblock5 /data/ yaffs2 91904kb 用户、系统配置,软件配置以及软件(没有a2sd的话)
CACHE: /dev/mtdblock4 /cache/ yaffs2 30720kb OTA缓存,recovery/更新配置及临时文件夹
MISC: /dev/mtdblock[?] N/A   Raw,[?]kb (等待添加)
PACKAGE: (相对于刷机包) N/A     刷机包的伪文件系统。
RECOVERY: /dev/mtdblock[?] / (RAM) Raw,[?]kb recovery和更新环境的内核和内存盘。类似于BOOT:。
SDCARD: /dev/mmcblk0(p1) /sdcard/ fat32 32MB-32GB TF卡。通常刷机包就放在这里。
SYSTEM: /dev/mtdblock3 /system/ yaffs2 92160kb 系统分区,静态且是只读的。
TMP:   /tmp/ (RAM) 标准的Linux临时文件夹 在关机/重启时清空。

您首先应该要做的事情是使用您的recovery对您的ROM进行备份,以免操作失误照成数据的丢失!

 二、boot和recovery映像的文件结构

boot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk内存盘,然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)。
/*

** +-----------------+

** | 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

**

** 0. all entities are page_size aligned in flash

** 1. kernel and ramdisk are required (size != 0)

** 2. second is optional (second_size == 0 -> no second)

** 3. load each element (kernel, ramdisk, second) at

**    the specified physical address (kernel_addr, etc)

** 4. prepare tags at tag_addr.  kernel_args[] is

**    appended to the kernel commandline in the tags.

** 5. r0 = 0, r1 = MACHINE_TYPE, r2 = tags_addr

** 6. if second_size != 0: jump to second_addr

**    else: jump to kernel_addr

*/
boot的ramdisk映像是一个最基础的小型文件系统,它包括了初始化系统所需要的全部核心文件,例如:初始化init进程以及init.rc(可以用于设置很多系统的参数&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值