android解析 ramdisk.img boot.img system.img

img解析:

ramdisk.img:android根文件系统,在android编译系统生成的out/target/product/root目录中

结构:

./init.trout.rc
./default.prop 保存一些调试参数,对于开发者相当重要
./proc
./dev
./init.rc         一些启动参数
./init
./sys
./init.goldfish.rc
./sbin            
./sbin/adbd
./system  system.img挂载点
./data      userdata.img挂载点

 

userdata.img 保存用户、应用信息。

结构:

/data/app  所有安装后的app会移至此处,apk被拆成dex和apk,dex为目标文件,apk为资源包

/data/data 应用程序内部存储信息,sharepreference、database,etc

 

system.img 包含整个android系统

结构:

system/app                   android出厂内置应用在此,同时,在这里的app可以获得一些特别的权限。

system/framework         android框架在此,不宜乱动,开发者可以使用adb push + 拔电池开关机可以快速验证问题。(前提是eng版本)

Special App:

SystemUI.apk 状态栏藏在里面。

framework-res.apk包含整个系统res文件夹 including 系统UI、一些配置参数、theme、style、animation

 

recovery.img 按power键+音量上键(android默认)可以进去,可以执行T卡升级,format,backup userdata,restore userdata

结构:不知道

 

boot.img 包含一个linux kernel (maybe named as zImage)和一个ramdisk。img文件结构在源码system/core/mkbootimg/bootimg.h中声明

uboot.img android启动时第一个加载的镜像,初始化硬件和基本输入出系统。

 

所以一般flash到android设备中的img一般是这几个:uboot.img,boot.img,recovery.img,userdata.img,system.img

system提取以及打包方法:

提取:adb pull system $dst_dir

即可将system.img解包提取到本地,

貌似GB的版本system.img用的文件系统为yaffs,可以使用mkyaffs(android自带) 生成system.img 解包可以使用网友自制的unyaffs解包。

ICS版本system.img使用的是ext4文件系统,可以使用android自带的mk_ext4fs工具打包system.img,目前网上对于ICS版本的讨论较少,并没有找到解包工具

 

ramdisk提取以及打包方法:

提取:由于ramdisk各个设备商打包方法略有不同,所以不推荐直接从设备中提取,最好还是找一个官方ramdisk,分析下结构。再做提取修改打包动作。

打包(android默认):mkbootimgfs $root_dir | gzip > ramdisk.img

因此ramdisk.img是一个gzip的压缩包,里面有个ramdisk的镜像

由于不同厂商打包方式有所不同,比如MTK会把gzip的压缩包外面再加一个文件头(虽然不知道是什么,不过好像很厉害的样子),很多厂商也会加个头。不过可以根据gzip的文件格式从加壳的ramdisk中将gzip提取出来,修改后,再把gzip放回去。

因此ramdisk的修改会比较麻烦。改得不好,则无法开机。

 

boot.img打包解包方法:

解包:可以根据bootimg.h文件头格式,可以自己编个程序解包,也可以使用已有的工具进行解析:

split-bootimg.pl是一个国外网友自制的boot.img解包工具。解包后生成$bootimg_name-kernel.img 和 $bootimg_name-ramdisk.gz

打包:mkbootimg --kernel $kernelimg --ramdisk $ramdiskimg --kernel_base $kernel_base --page_size $page_size --cmd_line $cmd -o $out_image

--kernel --ramdisk 指定kernel ramdisk镜像

--kernel_base --page_size 【可选】指定kernel基址和页大小,如果有源码可以查看BoardConfig.mk

--cmd_line 指定一条命令,可以在开机的时候执行。

-o 输出镜像名字

 

boot.img一般不要轻易换,很容易造成不开机,一定要注意备份。。

不开机的几种原因:

kernel_base错了,uboot找不到kernel的引导程序。

ramdisk解包错误,无法建立文件系统

 

android开机过程:

上电,加载uboot,初始化硬件

加载boot.img,加载linux内核,建立文件系统。

根据启动模式,决定是正常启动、recovery_mode factory_mode。

加载recovery.img或者system.img

 

from http://hi.baidu.com/mysecretmood/item/78d3cdea0a0c85d0eb34c96f

### 回答1: Android系统的boot.img文件是Android固件中的一个重要部分,它包含了Android系统的内核和一些初始化脚本等文件。解包和打包boot.img文件是进行Android固件定制或修改的重要步骤之一。 在解包和打包boot.img文件时,可以使用一些工具集来辅助完成。以下是一些常用的工具集: 1. Android Kitchen:这是一个基于Linux系统的命令行工具集,可以用来解包和打包boot.img文件。它提供了一系列的命令,如unpackbootimg用于解包boot.img,mkbootimg用于打包boot.img。使用Android Kitchen工具集需要一些基本的Linux命令行操作知识。 2. Magisk Manager:这是一个通用的Android系统修改工具,其中包含了解包和打包boot.img文件的功能。Magisk Manager可以通过安装Magisk框架来实现对Android系统的修改,并且提供了可视化的操作界面,方便用户进行boot.img的解包和打包操作。 3. Android Image Kitchen:这是另一个基于Linux系统的命令行工具集,用于解包和打包Android系统的映像文件,包括boot.img文件。Android Image Kitchen提供了一系列的命令,如unpackimg用于解包boot.img,repackimg用于打包boot.img。 除了上述工具集外,还有一些第三方的GUI工具可供使用,如Magisk Manager中提供的可视化操作界面,以及一些名为"bootimage-tools"的工具集。 总之,解包和打包boot.img文件是进行Android固件定制或修改的重要环节之一,可以通过一些命令行工具集,如Android Kitchen、Android Image Kitchen等,或者一些GUI工具,如Magisk Manager等,来实现这一操作。这些工具集提供了相应的命令或操作界面,方便用户进行boot.img的解包和打包操作。 ### 回答2: Android boot.img解包和打包工具集是用于对Android系统中的boot.img文件进行解包和打包操作的一组工具集。 解包工具集包括: 1. binwalk:可以用于识别和提取boot.img文件中的各种结构和组件。 2. Unpackbootimg:可以将boot.img文件解包为ramdisk.img、kernel和cmdline等组成部分。 3. mkbootimg:可以重新打包解包后的ramdisk.img、kernel和cmdline等组成部分为新的boot.img文件。 4. Android Image Kitchen:可以提取和重新打包boot.img文件中的各种文件、分区和可执行程序。 5. Bootimg-tools:提供了一系列工具来处理boot.img文件,包括解包、打印信息、拆分和合并等操作。 使用这些工具集,可以将boot.img文件解包为其包含的ramdisk、kernel和cmdline等文件,可以对这些文件进行修改和定制。然后可以使用mkbootimgAndroid Image Kitchen将修改后的文件重新打包为新的boot.img文件。这样,就可以实现对Android系统启动过程中的各种配置和组件进行修改和定制。 这些工具集对于Android系统开发和定制非常有用,可以帮助开发者理解和修改Android系统的启动过程,同时也可以帮助厂商和用户改变和优化系统的启动行为。然而,由于涉及到系统底层,使用这些工具集需要谨慎操作,避免对系统造成损害。 ### 回答3: Androidboot.img是一个包含了Linux内核和设备树的镜像文件,用于引导Android设备的启动过程。解包和打包boot.img需要使用一些专门的工具集。 解包boot.img的工具集主要包括以下几个工具: 1. mkbootimg工具:用于解析和生成Android boot.img文件,可以从boot.img中提取出内核、ramdisk、cmdline等信息。 2. unmkbootimg工具:用于解包boot.img文件,将其中的内核、ramdisk、cmdline等内容提取出来。可以使用该工具将boot.img解包为boot.img-zImage(内核文件)、boot.img-ramdisk.gz(ramdisk文件)等。 3. simg2img工具:用于将boot.img中的system.img(系统分区镜像)解包为ext4格式的文件系统,以便进行修改和查看。 4. mkdtimg工具:用于打包设备树文件,依赖于设备树编译工具,可以将设备树编译成设备树二进制文件(.dtb)后再使用mkdtimg打包成dt.img 文件,然后将dt.img文件与之前解包得到的zImage、ramdisk等文件一起打包为新的boot.img。 打包boot.img的工具集主要包括以下几个工具: 1. mkbootimg工具:用于生成新的boot.img文件,需要提供新的zImage(内核文件)、ramdiskramdisk文件)、cmdline等参数。 2. mkdtimg工具:用于打包设备树文件,将设备树二进制文件(.dtb)打包为dt.img文件,然后将dt.img文件与zImage、ramdisk等文件一起打包为新的boot.img。 以上是Android boot.img解包和打包工具集的一些介绍。需要注意的是,操作boot.img需要一定的技术知识和经验,不当的操作可能导致设备变砖或无法正常启动,因此使用前请谨慎,并在了解清楚操作步骤后进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值