正在进行安全检测...

发布时间:2024-01-08 22:46:25   来源:文档文库   
字号:
目录1、背景知识2bootrecovery映像的文件结构3、对映像文件进行解包、编辑、打包的常规方法3.1、另一种解包、编辑、打包的方法4、将新的映像刷回到手机5、解包、编辑、打包为我们带来了什么6、本文讲的内容与使用update.zip刷机包不是一码事正文1、背景知识Android手机的文件系统有许多存储器组成,以下是在adbshell下面的输出:#cat/proc/mtddev:sizeerasesizenamemtd0:0004000000020000"misc"mtd1:0050000000020000"recovery"mtd2:0028000000020000"boot"mtd3:0438000000020000"system"mtd4:0438000000020000"cache"mtd5:04ac000000020000"userdata"注意,不同的手机在上述存储设备的顺序可能会各不相同!一定要检查您的手机,确定在以下的操作中选择正确的设备号(mtdX,这个X的序号一定要检查清楚)。在本向导中,我们主要描述对"recovery""boot"的存储设备进行操作;"system"存储设备保存了android系统目录的所有数据(在系统启动后会挂载到“system/”目录);“userdata”存储设备将保存了android数据目录中的所有数据(在系统启动后会挂载到“data/”目录,里面是会有很多应用数据以及用户的preference之类的配置数据)。从上面的输出可以看出来,recoveryboot分区对应着/dev/mtd/mtd1/dev/mtd/mtd2在你您开始做任何修改之前一定要做两件事情,第一件事情,一定要先对这两个分区进行备份。可以使用如下命令进行备份:#cat/dev/mtd/mtd1>/sdcard/recovery.img#cat/dev/mtd/mtd2>/sdcard/boot.img(注意addedbylxros,只有手机获取了ROOT权限以后才能够执行上述的备份命令)第二件事情,你您应该把你您最喜欢的update.zip刷机包放置到你您的sd卡的根目录上面。如此一来,即使你您在后续的操作中出了问题,也可以启动到recovery模式进行恢复。另外一个你您需要知道的重要文件是在android系统目录下的/system/recovery.img,此文件是mtd1存储设备的完全拷贝。这个文件在每次关机的时候,会自动地被写回到mtd1储设备里面。这会意味着两个事情:(1任何对/dev/mtd/mtd1中数据的直接修改都会在下一次重启手机以后消失。(2如果希望对/dev/mtd/mtd1进行修改,最简单的做法是用你您自己的recovery.img替换掉/system/recovery.img。当你您创建自己的update.zip刷机包的时候(特别是在做刷机包的
适配的时候)如果你您忘记替换这个/system/recovery.img,这个recovery.img就会在关机的时候被烧写到mtd1里面去或许会变砖。一定要注意这一点!2bootrecovery映像的文件结构bootrecovery映像并不是一个完整的文件系统,它们是一种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,secondat**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/

本文来源:https://www.2haoxitong.net/k/doc/0fe48633f111f18583d05a64.html

《正在进行安全检测....doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式