安卓Android ROM定制、移植:第六篇:boot.img、recovery解包和打包

合集下载

安卓rom移植教程2篇

安卓rom移植教程2篇

安卓rom移植教程2篇

第一篇:安卓ROM移植教程

ROM移植是一项技术难度较高的工作,它可以让我们将适用于一个设备的安卓系统移植到另一个设备上。移植成功后,我们就能够在新设备上使用原本不适用的安卓系统,从而拥有更强大的功能和更好的体验。下面,我将为大家介绍安卓ROM移植的基本步骤。

第一步:了解源ROM和目标设备

在进行ROM移植之前,我们首先需要了解源ROM和目标设备的情况。源ROM指的是我们希望移植的安卓系统,而目标设备则是我们要将源ROM移植到的设备。我们需要获取源ROM的系统镜像文件和相关的驱动程序,同时需要了解目标设备的硬件配置和系统要求。

第二步:提取源ROM的系统镜像文件

提取源ROM的系统镜像文件是进行ROM移植的关键一步。我们可以使用一些工具,如Android Kitchen或者MTK Droid Tools等,来提取源ROM的boot.img、recovery.img以及system.img等文件。这些文件包含了安卓系统的核心部分,我们需要将它们复制到电脑上进行后续的处理。

第三步:编译目标设备的内核

编译目标设备的内核是进行ROM移植的另一个重要步骤。我们需要根据目标设备的硬件配置和系统要求,选择合适的内核源代码,并进行相关的编译和配置工作。这个过程可能会比较复杂,需要有一定的编程和操作系统的基础知识。

第四步:修改源ROM的配置文件

在进行ROM移植之前,我们还需要对源ROM的配置文件进行修改。这些配置文件包括了源ROM的设备树文件、启动脚本和其他一些相关文件。我们需要根据目标设备的硬件配置和系统要求,对这些配置文件进行适当的修改和调整。

bootimg的详细介绍&使用实例

bootimg的详细介绍&使用实例
款工具已经给我们提供了解决办法!首先弄一张符合自己手机尺寸的 png24 格式图片 (PHOTOSHOP 中打开图片——文件——存储为 WEB 格式——类型——PNG24——存储),然后 再将图片转换为 rle 格式,命名为 initlogo.rle,解包 boot.img 替换同名文件,再打包刷入手机 即可!当然对于一个懒人来说,每次都这样的话太麻烦,所以本人自己写了一个脚本,只需轻
--unpack-yafffs [文件] [目录] [文件]为空时,使用 userdata.img (呃,这个比 system.img 小) [目录]为空时,使用文件除.img 外的其它内容,比如 userdata.img 时使用 userdata
ps:这ຫໍສະໝຸດ Baidu参数就算看不懂也没关系,可以不用加参数,直接用默认的就行,如解包 updata.app 的话就输入 bootimg --unpack-updata 就好。
/*
** +-----------------+ ** | boot header | 1 page ** +-----------------+
** | kernel
| n pages
** +-----------------+
** | ramdisk
| m pages
** +-----------------+

提取boot.img的几种方法

提取boot.img的几种方法

提取boot.img的几种方法

引言

b o ot.i mg是A nd roi d系统中的一个关键文件,它包含了启动

A n dr oi d设备时所需的一些信息和设置。在一些情况下,我们可能需要提取bo ot.i mg文件来进行分析、修改或者备份。本文将介绍几种常用的方法来提取b oo t.im g文件。

方法一:使用AD B命令

A D B(An dr oi dD eb ug

B ri dg e)是A nd roi d开发过程中常用的工具,通过AD B命令我们可以与A nd ro id设备进行通信和控制。下面介绍使用A D B命令来提取bo ot.im g文件的步骤:

1.确保电脑已经安装了AD B,并且手机已经开启了U SB调试模式。

2.连接手机到电脑,并打开命令行终端(W in do ws为C MD,M a c为终端)。

3.执行以下命令来获取bo ot.i mg文件:

```m ar kd ow n

a d bp ul l/de v/bl ock/bo ot de vi ce/

b y-n a me/b oo tb oo t.img

```

4.执行完命令后,会在当前终端所在的目录下生成一个b oot.im g文件,即为提取成功。

方法二:使用第三方工具

除了使用AD B命令,还可以借助一些第三方工具来提取b oot.im g文件。这些工具通常提供了更多的功能和选项,方便用户进行操作。下面介绍一款常用的第三方工具——"A nd ro id Im a ge Ki tc he n"。

1.首先,从官方网站下载并安装"A nd ro i dI ma ge Ki tc he n"工具。

安卓rom制作教程

安卓rom制作教程

安卓rom制作教程

安卓ROM制作教程

安卓ROM(Read-Only Memory)是一种预先编程的存储器,它包含了操作系统和内置应用程序。制作自己的安卓ROM可以让你个性化你的手机,并添加一些自定义的功能。下面是一个简单的安卓ROM制作教程。

第一步:准备工作

1. 你需要一台可root的安卓手机,并确保手机已解锁bootloader。

2. 在电脑上下载并安装ADB(Android Debug Bridge)和Fastboot工具。

3. 下载并安装一个合适的ROM制作软件,如Kitchen MTK、ROM Toolbox等。

第二步:备份手机

在开始制作ROM之前,务必备份手机中的所有数据,包括联系人、照片、音乐等。你可以使用ADB工具把数据备份到电脑上。

第三步:解包原始ROM

1. 使用ROM制作软件把原始ROM解压到你的电脑上。这样你就可以编辑ROM包中的文件了。

2. 在解压后的文件夹中,你会找到几个重要的文件,如boot.img、system.img等。

第四步:编辑ROM

1. 修改系统设置:你可以编辑系统设置,如添加或删除应用程序、更改启动画面等。

2. 安装自定义应用:你可以在ROM中添加一些自定义应用,例如Root Explorer、SuperUser等。

3. 修改内核:如果你是高级用户,你可以修改内核以提高手机的性能或添加一些新功能。

4. 添加自定义的壁纸、铃声等。

第五步:重新打包ROM

完成对ROM的编辑后,你需要重新打包ROM。

第六步:刷入新的ROM

1. 使用Fastboot工具把手机连接到电脑上。

安卓rom简单移植

安卓rom简单移植

以前移植过华为C8812的,觉得移植内容差不多,所以决定试试,毕竟N881E也有一批用户,下面列出我的一些办法,看看对中兴机子

是否可行

我以前移植华为的办法如下

移植百度的应用层和framework 框架层(system/app system/framework system/tts

这三个文件夹我用的是百度云N880E的底包)

移植lib,不删减添加东西,但是其中的modules使用官方包的,用Beyond

Compare 3比较多出来的用百度云的包

移植system/bin 和system/xbin 文件夹全部用官方的

移植system/media 文件夹整个文件夹必须使用百度的

移植system/usr 文件夹把百度的keychars 和keylayout 两个文件删除,替换为官方包中的这两个文件夹

移植system/etc 文件夹必须将百度云的文件夹中firmware 文件夹删除,替换为官方包中的firmware文件夹

修改build.prop

必须使用官方包中官方的build.prop,但是必须在build.prop 任意位置加入如下几行(对比了N880E百度和N881E官方的build.prop,发现

百度修改和添加了一下prop,移植时如果官方的build.prop有这个属性,替换,没有则增加即可):

ro.baidu.build.hardware=N881E

ro.baidu.build.hardware.version=1.0

ro.baidu.build.software=yi_3.0

ro.baidu.build.version.release=2.1

安卓Android ROM定制、移植教程。

安卓Android ROM定制、移植教程。

CyanogenMOD移植教程

转自秋叶随风Ivan;乐蛙论坛等。

第一章:环境的搭建

一.系统选择和安装

建议使用ubuntu LTS 10.04 X64

新手朋友推荐Deepin Linux 基于ubuntu定制的,适合新手使用/download

系统安装教程,以下方法通用于UBUNTU官方版本

U盘安装:/index.php/Unetbootin

光盘安装:/index.php/光盘安装

搭建android编译环境:

英文好的请猛击这里:WIKI:

/index.php?title=Building_from

_source

1.安装JDK

因为ANDROID大部分东西是java写的,所以首先我们需要安装JDK 打开终端按照如下命令输入或者直接复制粘贴:

编译android 2.3 或者更新的版本请使用jdk 6

$ sudo add-apt-repository "deb / lucid partner"

$ sudo apt-get update

$ sudo apt-get install sun-java6-jdk如果你需要编译的是2.2以下的版本请使用JDK 5,因为现在大家都是使用Gingerbread 以上的系统,这里就不介绍jdk5如何安装的了,如果有需要请度娘或者google

2.安装各种依赖包

64位环境:依然是终端中输入

$ sudo apt-get install git-core gnupg flex bison gperf

build-essential \

zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \

AndroidROM移植和bug修复

AndroidROM移植和bug修复

ROM移植和bug修复 反向修改拼包法操作流程:1.清楚的了解本机型的硬件配置,也就是主板平台.通常同系列的CPU不同机型的ROM拼包移植成功率很高.比如说我们的N760和V880就同属于MSM7K平台.2.挑选合适的底包和移植包,底包和移植包尽量同源,即同属于CM7(CM9和CM10类似)3.找出底包和移植包两者的不同之处,目的是让我们了解需要改动什么才可以让别的机型ROM能在我们的机型上面使用一底层硬件驱动不同.删除移植包里面的boot.img和system\lib下的modules文件夹.替换成本机型的二按键配置不同.将移植包system\usr下的keychars和keylayout两个文件夹替换成本机型的三传感器不同将移植包system\lib下的hw文件夹替换成本机型的四系统配置文件不同将移植包system\etc下的bluetooth、firmware、permissions、wifi 四个文件夹替换成本机型的(如果有);还有enhanced.conf、media_profiles.xml(媒体配置文件)、vold.fstab(存储分区配置文件);最后注意system下是否有vendor和wifi文件夹.........................以上操作建议使用文件对比器来进行对比.....................五修改build.prop把可以自定义的内容修改下.比如机型、日期、版本号等.参数如果懂可以修改,如果不懂建议不动它提醒2点:ro.sf.hwrotation=180这个值需要修改为0,否则会出现系统倒立或者相机倒立;网络模式必须更正,否则开机会无服务.六修改updater-script不同机型的ROM,刷机脚本里包含的分区挂载和格式化命令都有所差异,如果不做修改直接使用,把本不该改动的分区挂载并修改了的话.等着手机变"砖头"吧!assert(getprop("ro.product.device") =="blade" || getprop("ro.build.product") == "blade" ||getprop("ro.product.board") == "blade");这段话时获取收集信息,验证你的手机是不是N760,否则将无法刷入.目的是防止一些小白误刷ROM导致手机"变砖".接下来就是测试了,一般如果内核与库文件、库文件与上层框架兼容的话,至少能开机。如果卡第一屏了,分析原因,一点点排查,看脚本有无问题,看内核是否已经替换,看传感器等库文件是否合理替换... 第三部分:bug修复方法: 1、通讯录fc 这个 只要替换libsqlite.so和libsqlite_jni.so这两个文件到cm包即可2、卡第一屏~~这个其实没什么·~由于cm更新版本的问题替换libandroid_runtime.so3、照相机拍不了照或者拍照卡死或重启~同样是libandroid_runtime.so替换就可以了4、通话时对方听不到我方声音修复方法:反编译phone.apk,找到res\values\bools.xml文件,把第13行的true语句中的true改成false5-手机要求激活--桌面上按菜单键->设置->无线和网络->移

Android_ROM制作移植及精简教程lite

Android_ROM制作移植及精简教程lite

Android ROM制作

制作,,精简及移植教程

正向移植教程

移植好说,BUG难解决啊!!!

一、Android系统文件夹结构

一个完整的ROM根目录会有以下几个文件夹及文件:

Data文件夹,有些文件存在system\vendor\operator\app中

META-IN文件夹

system文件夹

boot.img文件

系统目录说明

1.应用程序安装目录

1)系统应用程序所在目录

/system/app/*.apk

2)用户安装应用程序所在目录

/data/app/*.apk或者system\vendor\operator\app/*.apk中

3)注意:

a)在安卓4.0+模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除

b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adb install杀死正在运行的程序时,有时旧的就会被启动

2.用户数据所在目录

/data/data/应用包名/shared_prefs配置文件

/data/data/应用包名/databases/*库文件所在目录

3.SD卡对应目录

/sdcard/

而我们需要处理的只是两个文件夹里面的内容:

data/app或者system\vendor\operator\app该文本夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。

system/app在这个文件夹下的程序为系统默认的组件,可以看到都是以APK格式结尾的文件,但有些自制的ROM里面还有和APK文件名对应的odex文件。我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文件名时同时也删除与其对应的odex文件。

安卓Android_ROM定制、移植:第一~~八篇(全)

安卓Android_ROM定制、移植:第一~~八篇(全)

想写点关于安卓ROM的一些教程,也许教程和网上一些类似,不过绝对是我自己的理解以及实战教程,先来第一篇,写帖子不容易,都要慢慢的来。开始:

其实安卓也不是一天两天了,纵观国内,高手很多,但教程相当少,哎,没法,在这个天朝,啥都有可能出现的年代,只有到国外论坛淘金了,本人也是小白,就自己的理解做事,不要笑哈!

安卓Android_ROM定制、移植:第一篇:JAVA环境设置

对安卓开发来说一个好的JAVA环境很关键,因为安卓基于LINUX,那么很多要靠这个东西,当然指的是在WINDOWS下,看看以下。

1.网上下载一个JAVA工具,比如我下载的

jdk-6u26-windows-i586.exe为例

2.安装,当然是和一般软件一样,不过最好是安装在默认盘符,占不了你多大空间的,嘿嘿。

3.环境设置,请按照以下命令(我的是WIN7,XP一样的)

右键击中我的电脑——属性——高级系统设置——环境变量如

点击系统变量那栏的新建

新建以下两个变量:

1.变量名:JAVA_HOME

变量值:

1.C:\Program Files\Java\jdk1.6.0_26

复制代码

(PS:代表我的java安装路径以及名称,我的是1.6.0-26,如果你的是1.6.0-27,就直接换就行了)

点确定

2.变量名:

1.C:\Program Files\Java\jdk1.6.0_26\lib\dt.jar;C:\Program

Files\Java\jdk1.6.0_26\lib\tools.jar;.

复制代码

注意最后面有个小点,别忘了。

点确定

安卓手机 rom定制教程

安卓手机 rom定制教程

ROM定制教程

一、ROM的初级定制:

直接下载地址:下载1下载2

1.1、ROOT加入;(使用厨房一键ko)

1.2、系统精简;

以最基础的软件精简为例子吧!

第一部,我们要了解清楚什么软件可以精简,什么软件不能精简,如果乱精简,后果就是,刷机后,无限重启!

一般情况下,rom的应用程序列表是在system/app目录下(data/app等)

精简方法非常简单,使用winrar打开你要精简的zip包,直接把要精简的apk删除掉即可

1.3、脚本编写;

认识recovery教程(百度搜索下,很容易找到脚本列表的)

一般情况下,刷机脚本文件在刷机包的META-INF/com/google/android目录下

下面我们制作一个C8600加刷字体和开机画面的加刷包

机包文件结构

System/fonts/DroidSans.ttf & DroidSansFallback.ttf (要替换的字体文件)

META-INF

Data/cust /media /bootanimation.zip (因为C8600的开机动画是在data下的,所以我们要新建一个data)

然后你可以用记事本等软件编写脚本,脚本如下

show_progress 1 0

copy_dir PACKAGE:system SYSTEM://复制SYSTEM的所有文件替换到系统SYSTEM目录下

delete_recursive DATA:cust/media//删除Data/cust/media文件夹

copy_dir PACKAGE:data DATA: 复制DATA的所有文件替换到系统DATA

使用fastboot工具刷入recovery.img、boot.img、system.img等

使用fastboot工具刷入recovery.img、boot.img、system.img等

使⽤fastboot⼯具刷⼊recovery.img、boot.img、system.img等在Android SDK⽬录的platform-tools⽬录下有fastboot.exe刷机⼯具(注:需要将机器进⼊fastboo模式)

刷recovery.img:

fastboot flash recovery recovery.img

fastboot.exe flash recovery recovery.img

刷system.img:

fastboot flash system system.img

重启⼿机命令:

fastboot.exe reboot

Android系统的分区为:system分区对应的⽬录 /system ,userdata分区对应 /data ,cache分区对应 /cache ,

可⽤ADB 或超级终端通过命令查看系统分区,命令如下:

su

cat /proc/mtd

假设mtd1对应 boot分区,mtd2对应system分区,备份导出boot.img与system.img命令如下:

cat /dev/mtd/mtd1 > /sdcard/boot.img

cat /dev/mtd/mtd2 > /sdcard/system.img

/data刷⼊命令是,

⽂件名为userdata.img :

fastboot flash userdata userdata.img

⽂件名为data.img

fastboot flash userdata data.img

Android-Recovery Mode(recover模式详解)-幸福软件公司-ChinaUnix博客

Android-Recovery Mode(recover模式详解)-幸福软件公司-ChinaUnix博客

Android-Recovery Mode(recover模式详解)

1. Recovery Mode: factory default, firmware upgrade, patch upgrade and OTA upgrade.

2. Android boot mode:

1.bootloader mode (camera + power)

2.recovery mode (home + power)

3.normal boot

mand == 'boot-recovery' →启动recovery.img。recovery模式

mand == 'update-radio/hboot' →更新firmware(bootloader)

3.其他→启动boot.img

3.CACHE分区文件

Recovery 工具通过NAND cache分区上的三个文件和主系统打交道。主系统(包括恢复出厂设置和OTA升级)可以写入recovery所需的命令,读出recovery过程中的LOG和intent。

/cache/recovery/command:recovery命令,由主系统写入。所有命令如下:

--send_intent=anystring - write the text out to recovery.intent

--update_package=root:path - verify install an OTA package file

--wipe_data - erase user data (and cache), then reboot

MTK平台Recovery和Boot.img移植

MTK平台Recovery和Boot.img移植

最近用一款MTK6575的平台,但是没办法刷第三方的卡刷包,然后不是想移植最本站的recovery 5.50触屏版。(未成功)

现把自己经历提供如下以方便喜欢折腾的兄弟一起讨论。

1、先准备好系统环境ubuntu11.0和解包封包工具,然后分解发现可以分解得到kernel和ramdisk.gz,但没法解久ramdisk.gz,后来苦思不得其解,然后百度上看到“冷风一个贴子”说MTK的比其它的boot和recovery在,800到9F0的位置多了512M字节的加密文件,需先用winhex工具删除这段后再保存,才可以正常解开。

看完这条信息后立即删除后

然后重新保存recovery.img,再传到ubuntu里进行解recovery.img香到recover.kernel和recovery-ramdisk.gz

使用命令:gzip -dc ../boot.img-ramdisk.gz | cpio -i后可以正常解开目录。

然后当时心情不错,感觉离成功好像很近了,然后第一次也没敢做什么定制移植方面的工作,移植第三方的不在本次说明内(参考其他文档)

然后微改了一下,重新封装:

命令:mkbootfs ./ramdisk | gzip > ramdisk-new.gz

得到新的ramdisk-new.gz文件

然后

mkbootimg --kernel recovery.img-kernel --ramdisk ramdisk-new.gz --base 0x10000000 -o recove-new.img

安卓ROM修改教程

安卓ROM修改教程

安卓ROM修改教程

一、开始准备

1. 准备工具:

(2)HTCDI及驱动用于上传数据

(3)ROM包工具:GoldCard用于抹卡,fastboot用于烧写,Bootloader用于刷机

2. 准备ROM包:

二、首先抹卡

1. 重启手机,按住音量下键和电源键,保持不放进入Bootloader模式。

2. 在PC上安装HTCDI及驱动

3. 插入手机,运行Goldcard工具,上传GoldCard.img文件到手机

4. 在Bootloader界面中按住音量下键,调出“刷机模式”,打开GoldCard模式。

三、准备ROM包

2. 在ROM包中寻找Recovery.zip文件,将其复制到手机内存中

四、烧写ROM

1. 重新进入Bootloader模式

2. 使用fastboot工具,将Recovery.zip包烧写到手机内存中

3. 重新重启手机,进入Recovery模式

五、安装ROM

1. 在Recovery模式下,选择“安装新ROM”选项

2. 选择待安装的ROM包,记住安装过程要一直按照提示进行

3. 安装完成后,重新重启手机,进入新的ROM中

六、精简ROM

2. 刷入ROM包,在工具中选择要精简的项目

3. 确认精简后,重新烧写ROM包,完成精简

七、系统优化

1. 用安装工具安装需要的软件,比如系统清理、性能优化等

2. 用后台进程控制工具。

magisk修改boot.img原理

magisk修改boot.img原理

magisk修改boot.img原理

Magisk修改boot.img原理

[引言]

随着安卓系统的不断发展,越来越多的用户开始尝试对手机进行Root和定制化操作。而Magisk作为一款较为知名的Root工具,其强大的功能和稳定性深受用户喜爱。其中,Magisk通过修改boot.img来实现Root和系统定制化。本文将详细介绍Magisk修改boot.img的原理和步骤。

[boot.img是什么]

在深入了解Magisk修改boot.img的原理之前,我们首先要了解boot.img是什么。boot.img是安卓系统引导镜像文件,包含了启动Android系统所需的所有文件和配置。其中包括了Linux kernel、initrd和设备树等,是Android系统启动的关键文件。

[Magisk是什么]

Magisk是一款开源的Android软件,其主要功能是进行系统定制化和Root。通过Magisk的安装,用户可以获得管理员权限并且进行深度定制化操作。Magisk采用了一种无损的Root方式,可以通过修改boot.img的方式来实现。

[Magisk修改boot.img原理]

Magisk修改boot.img的原理主要是通过修改Android系统的引导镜像文件

boot.img,实现Root和定制化。通过修改boot.img,Magisk可以实现Root 权限获取、系统级别的模块加载以及系统分区的修改等操作。具体来说,Magisk 使用了一种叫做“隐藏”的技术,将Root和模块等操作隐藏在了系统中,从而避免了一些应用程序检测Root的问题。

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

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

您首先应该要做的事情是使用您的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)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

太抱歉了,因为教程实在是有点粗浅了,其实很多东西都不知道怎么去写,这不是复制粘贴,当然很多只是一步步的走的,不过也许我自己觉得已经阐述的很清楚了,可是一旦别人看起来,还是感觉很深奥,没办法,本人就这点能力了,呵呵!

大家都知道安卓的核心更换呢,那是在boot.img里面,那么如何在WINDOWS下去解开它呢,LINUX的自己略过。。。。

首先百度BOOTIMG.EXE,然后你懂的,会出来一大堆,这得感谢制作bootimg.exe的作者,本来是为华为的机器做的分解工具,不过我们也可以拿来分解boot.img、recovery.img等,OK!先来谈谈这两个文件的基础,部分来自网络。

boot和recovery映像的文件结构

boot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk

内存盘,然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)。此类文件的定义可以从源代码android-src/system/core/mkbootimg找到一个叫做bootimg.h的文件。

(译者的话,原文是一个叫做mkbootimg.h的文件,但从Android 2.1的代码来看,该文件名应该是改为bootimg.h了)。

/*

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

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

*/

ramdisk映像是一个最基础的小型文件系统,它包括了初始化系统所需要的全部核心文件,例如:初始化init进程以及init.rc(可以用于设置很多系统的参数)等文件。如果你您希望了解更多关于此文件的信息可以参考以下网址:

/?p=kernel/common.git;a=blob;f=Documentation/files ystems/ramfs-rootfs-initramfs.txt

以下是一个典型的ramdisk中包含的文件列表:

./init.trout.rc

./default.prop

./proc

./dev

./init.rc

./init

./sys

./init.goldfish.rc

./sbin

./sbin/adbd

./system

./data

recovery映像包含了一些额外的文件,例如一个叫做recovery的二进制程序,以及一些对该程序支持性的资源图片文件(当你您按下home+power组合键的时候就会运行这个recovery程序)。

典型的文件列表如下:

./res

./res/images

./res/images/progress_bar_empty_left_round.bmp

./res/images/icon_firmware_install.bmp

./res/images/indeterminate3.bmp

./res/images/progress_bar_fill.bmp

./res/images/progress_bar_left_round.bmp

./res/images/icon_error.bmp

./res/images/indeterminate1.bmp

./res/images/progress_bar_empty_right_round.bmp

./res/images/icon_firmware_error.bmp

./res/images/progress_bar_right_round.bmp

./res/images/indeterminate4.bmp

./res/images/indeterminate5.bmp

./res/images/indeterminate6.bmp

./res/images/progress_bar_empty.bmp

./res/images/indeterminate2.bmp

./res/images/icon_unpacking.bmp

./res/images/icon_installing.bmp

./sbin/recovery

看到以上结构的时候就已经很奇特了,那么怎么来解开它,以及打包呢!马上揭晓!

看到我叫大家百度BOOTIMG.EXE,也许大家又在大叫坑爹了,没办法,本人天生懒人一个啊!下载这个东西之后,那就一切皆有可能啦!解开后,至于修改,那么就八仙过海,各显神通了!

工具主要语言为python,分两处版本,源文件及windows下可执行文件exe,内容及用法完全一致。

运行方法:

bootimg.py 功能参数

目前支持以下功能:

--repack-ramdisk, 生成 ramdisk

--unpack-ramdisk, 解开 ramdisk

--repack-bootimg, 生成 bootimg (包括boot.img及recovery.img)

--unpack-bootimg, 解开 bootimg

相关文档
最新文档