从源码开始之编译Android源码以及…

http://bbs.gfan.com/thread-201576-1-1.html

system文件夹就是system.img的解压结果,data就是userdata.img的解压结果,root就是ramdisk.img的解压结果。
这里如果了解一下Android的系统结构会有一点帮助。
我们常在刷机包见到的boot.img就是内核+ramdisk,Android的引导过程就是通过ramdisk内的启动脚本进行,而ramdisk内的目录结构明显就是一个linux的根目录,
所以启动后,将system加载到ramdisk内的system下,userdata加载到ramdisk的data下,每次关闭系统的时候就会将当前的system文件夹再压缩为system.img覆盖原有的,data文件夹压缩覆盖原有的userdata.img,从而实现用户数据的记录。
而userdata.img和system.img均是以yaffs2的格式压缩,这种格式是专为闪存设计的,具有什么优点这里就不赘述了。
如果直接给我们一个刷机包,我们再从源码编译了相同版本的Android,那么有一部分是可以实现替换的。
资源版块有win平台的unyaffs工具下载。这里介绍一下在linux平台如何解压缩yaffs(2)格式的文件(CG39.smg或者今天提到的两个img文件)
你可以从http://code.google.com/p/unyaffs/了解并下载这个解压yaffs的开源项目,下载prebuild的unyaffs文件放入/bin下(文末有附件,防止这个网站被墙了进不去)
即可使用unyaffs命令解压缩yaffs的文件(项目主页是说只能解压由 mkyaffs2image工具生成的img文件,不过解压缩system.img和userdata.img是肯定没有问题的)

最后如果我要解压缩ramdisk.img 怎么办呢?这里说一下,ramdisk.img是一个彻头彻尾的伪命名,它其实是cpio文件。通过下面几个连续的操作可以解开。

本帖隐藏的内容需要 回复 才可以浏览(2周后自动解除隐藏)
$ mv ramdisk.img ramdisk.cpio.gz
$ gzip -d ramdisk.cpio.gz
$ mkdir tmp
$ cd tmp
$ cpio -i -F ../ramdisk.cpio




*** 此时 tmp 目录下的就是 ramdisk.img 的文件和目录了,可以根据需要编辑 init.rc 或者增加 自己的启动画面。 ***

压缩回 ramdisk.img

本帖隐藏的内容需要 回复 才可以浏览(2周后自动解除隐藏)
$ cpio -i -t -F ../ramdisk.cpio | cpio -o -H newc -O ../ramdisk_new.cpio
$ cd ..
$ gzip -5 -v ramdisk_new.cpio
$ mv ramdisk_new.cpio.gz ramdisk.img



这一串看似简单的命令行我还是找了好几分钟 :-) 最后从墙外弄到的,真想不通功夫网搞什么的,害死人。

每天一教程!这是今天最后一帖,等5个月后回来会继续为大家“工作”的……

前面提到的Linux平台的unyaffs工具(二进制程序,解压放入/bin下):

本帖隐藏的内容需要 回复 才可以浏览(2周后自动解除隐藏)
unyaffs.tar.gz (4.03 KB)
下载次数: 71
2010-8-26 09:32
下载消耗 G币 1  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值