为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 安卓Android ROM定制、移植:第六篇:bootimg、recovery解包和打包

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

2019-07-18 3页 doc 58KB 25阅读

用户头像

is_808969

暂无简介

举报
安卓Android ROM定制、移植:第六篇:bootimg、recovery解包和打包太抱歉了,因为教程实在是有点粗浅了,其实很多东西都不知道怎么去写,这不是复制粘贴,当然很多只是一步步的走的,不过也许我自己觉得已经阐述的很清楚了,可是一旦别人看起来,还是感觉很深奥,没办法,本人就这点能力了,呵呵!大家都知道安卓的核心更换呢,那是在boot.img里面,那么如何在WINDOWS下去解开它呢,LINUX的自己略过。。。。首先百度B00TIMG.EXE,然后你懂的,会出来一大堆,这得感谢制作bootimg.exe的作者,本来是为华为的机器做的分解工具,不过我们也可以拿来分解boot.img、recovery.img...
安卓Android ROM定制、移植:第六篇:bootimg、recovery解包和打包
太抱歉了,因为教程实在是有点粗浅了,其实很多东西都不知道怎么去写,这不是复制粘贴,当然很多只是一步步的走的,不过也许我自己觉得已经阐述的很清楚了,可是一旦别人看起来,还是感觉很深奥,没办法,本人就这点能力了,呵呵!大家都知道安卓的核心更换呢,那是在boot.img里面,那么如何在WINDOWS下去解开它呢,LINUX的自己略过。。。。首先百度B00TIMG.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的文件,但从Android2.1的代码来看,该文件名应该是改为bootimg.h了)。/***++**|bootheader|1page**++**|kernel|npages**++**|ramdisk|mpages**++**|secondstage|opages**++****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.allentitiesarepage_sizealignedinflash**1.kernelandramdiskarerequired(size!=0)**2.secondisoptional(second_size==0->nosecond)**3.loadeachelement(kernel,ramdisk,second)at**thespecifiedphysicaladdress(kernel_addr,etc)**4.preparetagsattag_addr.kernel_args[]is**appendedtothekernelcommandlineinthetags.**5.r0=0,r1=MACHINE_TYPE,r2=tags_addr**6.ifsecond_size!=0:jumptosecond_addr**else:jumptokernel_addr*/ramdisk映像是一个最基础的小型文件系统,它包括了初始化系统所需要的全部核心文件,例如:初始化init进程以及init.rc(可以用于设置很多系统的参数)等文件。如果你您希望了解更多关于此文件的信息可以参考以下网址:http://git.source.android.com/?p=kernel/common.git:a=blob:f二Documentation/filesystems/ramfs—rootfs—initramfs.txt以下是一个典型的ramdisk中包含的文件列:./init.trout.rc./default.prop./proc./dev./init.rc./init./sys./init.goldfish.rc./sbin./sbin/adbd./system./datarecovery映像包含了一些额外的文件,例如一个叫做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,--unpack-ramdisk,--repack-bootimg,--unpack-bootimg,生成ramdisk解开ramdisk生成bootimg(包括boot,img及recovery.img)解开bootimg--unpack-updata,解开updata--unpack-yafffs,解开yafffs--unpack-rle,解开rle,生成raw格式及png图片(如果pil可用,exe里有pil)--repack-rle,生成rle,可支持多种格式下面一一说明功能中的参数。--unpack-updata[文件][文件]为空时,默认使用UPDATA.APP解开后,会有四个文件,boot.img,recovery.img,system.img,userdata.img这些都是刷机时可能需要的。--unpack-bootimg[文件][文件]为空时,默认使用boot.img解开后,会有两个文件,kernel和ramdisk.gz同时,注意输出,比如base,cmdline,name等等--repack-bootimg[base][cmdline][base]为空时,使用0x200000(C8600默认)[cmdline]为空时,使用mem=211console二nullandroidboot.hardware二qcom(c8600适用)生成bootimg时,会使用kernel和ramdisk.gz(如果存在ramdisk.cpio.gz,优先使用),生成boot.img实际上啊,就是在WINDOWS下更方便而已,在这里要感谢制作这个软件的人,非常感谢中!比如要解开boot.img,假设我的位置D:oot,具体,命令如下:开始-运行-cmdd:回车cdboot回车bootimg--unpack-bootimgD:\boot>bootimg--unpack-bootimgargumentsi:[bootimgfile]bootimgfile:boot.imgoutput:kernel[.gz]ramdisk[.gz]second[.gz]base=0x12cO0@OOpage„siz©=2048name=""cmdline="ncconsole_suspend=1consol@=null"padding.size=4096仅需要以上命令就会解开boot.img了!如果是recovery.img那么改名为boot那么不是照样能行了,呵呵,看到木有,哈哈!分解就是那么简单,按照上面命令,合成就如下了:bootimg--repack-bootimg0K!好了,修改大家就自己去奋斗吧,其实说实话,安卓本来基于LINUX就是在那系统下玩的,用windows的就比较吃亏了。如上,在windows下编辑的完全压力很大的说,前面谈那么多啥base基址,cmdline命令行啊这些,就是为了在微软下用这个工具打包时候好做这些工作,看图,分;luluuj.Rn.EHuna.cnm.D:\boot>bootimg--unpack-bootimgarguments:[bootimgfile]bootimgfile:boot.imgoutput:kernel[-gz]ramdisk[.gz]second[.gz]base=exZGOQ00page_size=2G48name:'"1cmdline=^!neEn=211Hconsole=nullandroidboot.hardwar^Lacom".____一r-<'■paidding_size^09G^—解boot.img后出现的情况。看图中的base基址是0x200000,cmdline命令行是“mem=211Mconsole=nullandroidboot.hardware=qcom",page-size是2048,padding-size是4096,那么都要回编回去,接下来打包的时候就应该输入以下命令bootimg--repack-bootimg0x200000"mem=211Mconsole=nullandroidboot.hardware=qcom"20484096如下图所示,0K!这才是真正的打包完成,就如果直接打包的话,华为中兴的无所谓,不过其他机器就开不了机器了!p:\boot>bgoti观一repadbootimg业"mem=211Mconsole=nullandroidboot.arguments:[base][cmdline][page_size][padding_size]kernel:kernelramdisk:ramdisk.gzsecond:base:0x290069LJJLJJLlJ.HnEHUDE.匚QEcmdline:mem=211Mconsole=nullandroidboct.hardware=qcompage_size:2G48padding_size:4096output:boot.iiiig到这里就完全打包解包无压力了,额‘recovery解包打包,就直接把他搞成boot.img封包后再搞回去就行了的。
/
本文档为【安卓Android ROM定制、移植:第六篇:bootimg、recovery解包和打包】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索