Bootimg介绍

来源:互联网 发布:巨人网络借壳上市猜想 编辑:程序博客网 时间:2024/05/19 08:22
一、Android手机的文件系统


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


注意,不同的手机在上述存储设备的顺序可能会各不相同!一定要检查您的手机,确定在以下的


二、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(可以用于设置很多系统的参数)等文件。 
以下是一个典型的ramdisk中包含的文件目录列表: 
│  default.prop 
│  init  
│  init.goldfish.rc 
│  init.rc  
│  init.swift.rc  
│  initlogo.rle               //开机第二屏图片 
│  ueventd.goldfish.rc 
│  ueventd.rc  
│  ueventd.swift.rc 
│  
├─data 
├─dev 
├─proc 
├─sbin 
│      adbd 

├─sys 
└─system   
recovery的ramdisk映像包含了一些额外的文件,例如一个叫做recovery的二进制程序,
以及一些对该程序支持性的资源图片文件(当您按下home+power组合键的时候就会运行这个recovery程序)。典型的文件列表如下
│  default.prop 
│  init 
│  init.rc  
│  initlogo.rle              //开机第二屏图片 
│  ueventd.goldfish.rc 
│  ueventd.rc  
│  ueventd.swift.rc 
│  
├─data 
├─dev 
├─etc  
│      recovery.fstab 
│  
├─proc 
├─res 
│  
│  keys 
│  
│  
│  └─images  
│          icon_clockwork.png 
│          icon_error.png 
│          icon_installing.png 
│          indeterminate1.png 
│          indeterminate2.png 
│          indeterminate3.png 
│          indeterminate4.png 
│          indeterminate5.png 
│          indeterminate6.png 
│          progress_empty.png 
│          progress_fill.png 
│ 
├─sbin 
│      adbd 
│      e2fsck  
│      fix_permissions 
│      killrecovery.sh 
│      mke2fs  
│      nandroid-md5.sh 
│      parted 
│      recovery 
│      sdparted 
│      tune2fs 
│  
├─sys 
├─system 
│  └─bin └─tmp