首页 转载ramdisk.imgsystem.imguserdata.img介绍与解包、打包方法

转载ramdisk.imgsystem.imguserdata.img介绍与解包、打包方法

举报
开通vip

转载ramdisk.imgsystem.imguserdata.img介绍与解包、打包方法文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.ramdisk.imgsystem.imguserdata.img介绍及解包、打包方法2011-11-2511:37:24分类:ramdisk.imgsystem.imguserdata.img介绍及解包、打包方法Android源码编译后,在out/target/product/generic下生成的三个镜像文件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data。ramdisk.i...

转载ramdisk.imgsystem.imguserdata.img介绍与解包、打包方法
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.ramdisk.imgsystem.imguserdata.img介绍及解包、打包方法2011-11-2511:37:24分类:ramdisk.imgsystem.imguserdata.img介绍及解包、打包方法Android源码编译后,在out/target/product/generic下生成的三个镜像文件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data。ramdisk.img是根文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,android加载这3个映像文件后,会把system和userdata分别加载到ramdisk文件系统中的system和data目录下。三个镜像文件及其三个目录树之间的生成关系是我们进行详细介绍。Ramdisk镜像是采用cpio打包,gzip压缩的。用ROM制作的基础,下面将做file验证:#fileramdisk.img输出:#ramdisk.img:gzipcompresseddata,fromUnix为了便于说明问题,我们将ramdisk.img拷贝到其它一个目录,然后按以下步骤将ramdisk.img还原为目录树:mvramdisk.imgramdisk.img.gzgunzipramdisk.img.gzmkdirramdisk#cdramdisk#mkdirtemp#cdtemp#cpio–i–F../ramdisk.img这样,就得到一个完整的ramdisk目录,与out/target/product/generic/root对比后,我们发现它们是一样的内容。通过执行以下的操作,我们可由目录树再生成ramdisk镜像#cdtemp#find.|cpio-o-Hnewc|gzip>../ramdisk-new.img这两个镜像都属于yaffs2文件格式,生成方式是一样的。我们就以system.img为例来说明。文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.System.img>>system目录树所需工具unyaffs,下载地址/unyaffs/downloads/listmkdirsystemcdsystemunyaffs../system.imgsystem目录树>>system.img所需工具mkyaffs2image,Android源码编译后会生成该工具,在out/host/linux-x86/bin目录下。命令格式:#mkyaffs2imagesystem/system_new.img了解以上方法的意义在于,我们可以对镜像文件镜像修改,定制,以符合自己的需求。网上有很多制作AndroidROM的教程,这里罗列一些链接:北理工的陈罡写的两篇文章,是我目前发现的最好的教程,写的非常详细/26691/showart_2193396.html/26691/showart_2194274.html这两篇文章参考了国外论坛的几个经典教程:-developers.com/showthread.php?t=566235http://android-dls.com/wiki/inde...Re-Pack_Boot_Images国内还有一篇文章写的也不错,这篇文章更侧重于制作类似Patch的ROM包/201002/00ID1030.html这里基于自己的理解和测试, 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 了一些方法步骤。Android的ROM包通常称为update.zip包,你可以到www.hiapk.com上下载现成的.zip包。要学习ROM包的制作,我们可以从这样一个zip包开始。解开zip包后,通常有这样一些内容:1、boot.imgramdisk.img文件这是编译内核源代码生成的内核映像,然后与android源码编译出来的一起通过mkbootimg工具创建出来的,图省事的朋友也可以从网上其他的刷机包里面拷贝一个能用的出来即可,基本上都差不多。2、META-INF目录这个目录是手工创建的,主要用来存放一个升级脚本update-script(这个脚本的内容与system目录中包含的文件有很大关联)以及签名。3、system目录这个目录就是编译android的平台源代码生成的要创建自己的ROM,我们通常会涉及到以下的一些工作:1.编译内核生成内核映像。但一般情况下,我们没有必要自己去编,直接从刷机包里面取出一个就可以。譬如,你要做一个2.2版本的升级包。可以到网上找一个与自己机型相文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.匹配的刷机包,从里面取出相应的kernel.img。2.ramdisk.img的修改。ramdisk.img是根文件系统,Uggboots,里面包含了启动配置脚本。3.update-script的修改。4.System的修改。详细的步骤可以参考/26691/showart_2194274.html。我们先做个简单的测试工作,来为后面更复杂的工作做好铺垫。测试内容为:先对zip进行解包,然后分别在ramdisk和system的根目录下添加一个小文件,接着,生成新的ROM,并验证ROM是否可用。这里要指出的是,这篇文章以及网上许多类似网站提到的方法都是针对HTCG1或Nexusone的。而我在测试的时候,用的是HTCG3Hero。以上的方法导致的一个后果是,重新打包后再烧录,机器无法正常启动,adbshell也无法登陆。后来在国外的一篇博客上看到了对此问题的说明,问题的根源很简单,从G3开始,打包的时候需要指定“--base”参数。对于Hero,参数为”--base0x”,但对于其它型号的机器,”--base"要设定为多少,需要参考内核代码的实现。解包打包可用两个脚本完成unpack-bootimg.pl,repack-bootimg.pl。其中打包脚本用到的mkbootimg工具,在out/host/linux-x86/bin目录下。unpack-bootimg.pl可直接将boot.img生成内核镜像boot.img-kernel和ramdisk目录树boot.img-ramdisk。repack-bootimg.pl可将boot.img-kernel和boot.img-ramdisk重新生成boot.img。在解包后,我们在ramdisk和system目录下,各添加一个测试小文件(譬如叫mytest)。做完这些开始组包,重新生成update.zip。到这里我们的工作并没有完全结束,还有最后的一步——签名。签名需要用到签名工具testsign.jar,这是一个基于java1.6版本的工具。在编译Android源码的时候,我们强调要用java1.5。在这里,我们必须切换到1.6版本。1)重新生成boot.img将前面解包得到的boot.img-ramdisk和编译源码后out/target/product/generic/下的root目录树放在一个目录下,然后用repack-bootimg.pl重新生成boot.img创建一个目录myupdate,将上面生成的boot.img放到这个目录下3)将编译Android后,out/target/product/generic/生成的system目录树拷贝到myupdate目录4)在myupdate目录下创建update-script脚本目录#mkdir-pMETA-INF/com/google/android5)删除system/bin目录下的“符号链接”,创建update-script脚本文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.研究原有的update-script脚本,我们可以大致看出update-script负责文件删除拷贝,权限设置,符号链接创建等工作。我们可以在原有update-script的基础上进行修改以得到我们自己的update-script。这里,我们要注意的是,要保证update-script的link创建成功,必须把/system/bin下的link删除。我们可以用一个脚本来做这个工作delsymlink。我修改后与自己编译的Android2.2system目录树相匹配的脚本。6)重新打包并签名7)自制ROM下载时报错在试验过程中,我经常遇到如下的报错Can'topen/sdcard/download/update.hiapk问题原因:当update-script中有命令操作错误,脚本就会停止,并报这个错误,解决的办法就是修正脚本。你可以从这个错误前面的提示,知道脚本哪一行出错了。很多时候,你并不需要创建一个完整的ROM包。你需要的只是,添加删除或修改一些功能(譬如你仅想添加一个应用,或者你想添加busybox工具)。我们可以参考这里,来实现这个目的。3.创建一个Patch功能的ROM很多时候,你并不需要创建一个完整的ROM包。你需要的只是,添加删除或修改一些功能(譬如你仅想添加一个应用,或者你想添加busybox工具)。我们可以参考这里,来实现这个目的。我用一个简单的例子来说明这个过程。该例子是在system目录下添加一个mytest文件,同时创建一个指向这个文件的符合链接mylink。以下是过程:1)创建patch_update目录,并在该目录下执行mkdirsystemmkdir–pMETA-INF/com/google/android2)在system目录下生成mytest文件3)在META-INF/com/google/android创建如下的update-scriptshow_progress0.10copy_dirPACKAGE:systemSYSTEM:symlinkmytestSYSTEM:mylinkset_perm000755SYSTEM:mytest打包签名文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.如果前面的3步曲,你已经很好的掌握了,应付你的日常工作应该没有太大的问题。但要成为真正的ROM高手,你还有很多东西要修炼。你要了解整个启动过程,内核编译,Android源码的编译及配置,文件系统及启动配置。。。烧录Android机器HTC的官网上有一篇文章这里详细介绍了镜像包及烧机方法。通常用两种烧录方式:recovery模式,fastboot模式。通过一些组合键,可以进入烧录模式。以HTCG3Hero为例,“Home+Power”同时按,可以进入Recovery模式,“Back+Power”可以进入fastboot模式。Recovery模式比较常用,它相当菜单界面的下载模式。直接把前面所述的update.zip文件放到SD卡上,然后通过在机器上操作控制菜单,就可完成烧录。Fastboot是基于命令行的较低级的下载模式,它可直接烧录.img文件。Fastboot工具也在out/host/linux-x86/bin目录下。在我测试过程中,发现fastboot模式无法烧录,当我试图烧录system.img的时候,出现下面的出错信息:fastbootflashsystemsystem.imgwriting'system'...INFOsignaturechecking...FAILED(remote:signatureverifyfail)在网上查了之后,发现这和签名有关系,SPL要重新刷一下才可,默认是SPL-on,即检测签名,改成SPL-off,就不会出现这个问题,目前没有什么好办法来处理这个问题。好在recovery模式已经能很好地满足需求了,可以先放弃fastboot。如果你通过recovery模式烧录后,发现系统无法正常启动,没有关系,recovery还是可以进去的。在recovery模式下,你可以通过adbshell登陆机器。可能你进去后,发现SD卡并没有挂接上来(执行mount就可以查看挂载情况)。但recovry模式要求update.zip必须放在SD卡根目录下,怎么办?很简单,执行“mount–a就”可把SD卡区域挂接上来。如果这招也不行,还有一招,就是把userdata分区手动挂接到sdcard目录,这样就骗过了recovery。#mount/dev/mtdblock5/sdcard然后,你再用adbpush把新的update.zip拷贝到sdcard目录,重新进行烧录。一般来说,在执行“Flashzipfromsdcard之”前,都要先进行Wipe操作,以清除旧的用户数据。如何更新recovery?可以参考,Hero更新成了recovery-RA-hero-v1.6.2-blue.img。不过,一般无特别的需求,最好不要更新recovery。毕竟有一定风险,一不小心就成了板砖。其它参考信息:文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.知名的Android论坛:国内:www.hiapk.com国外:http://android-dls.com很多国内论坛的文章都是参考或翻译http://android-dls.com的国内一个很好的博客:国外一个很好的博客:.com/,有很多对Android的研究专题/android/,这个博客帮我解决了在烧录HTCG3HERO的时候,自己打的ROM包烧录后无法启动的问题Android文件系统/cn/linux/l-k26initrd//201001/180468.htm.com/?p=kernel/common.git;a=blob;f=Documentation/filesystems/ramfs-rootfs-initramfs.txt/6_s...0090901/173312.htmlAndroidinit脚本的语法/103613/showart.php?id=2237012_pdk/bring_up.html
本文档为【转载ramdisk.imgsystem.imguserdata.img介绍与解包、打包方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥13.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
is_090279
暂无简介~
格式:doc
大小:210KB
软件:Word
页数:0
分类:
上传时间:2021-09-24
浏览量:37