Android 文件系统移植总结

Android 文件系统移植总结

最近搞Android移植,文件系统自然是重头戏,移植的绝大多数问题,也都出在这里。这里总结一下一些经验技巧等。
1. 文件系统的结构
制作Android文件系统,仅需要编译出的root和system两个文件夹即可,不需要data目录,data会在启动过程中自行创建并写入文件。无论选择什么文件系统,这都是可行的。
2. 文件系统的选择
1)使用nfs的话,最简单,保证网卡驱动和kernel启动参数,另外配置好host上的nfs目录及权限即可。建议有网卡,或者能作usb over ethernet的都先作下nfs启动,方便一些。
2)真机文件系统。用在nand上的文件系统,自然是jffs2和yaffs。但是Android的平台依赖于文件系统的mmap操作,jffs2并不支持这个操作,故yaffs2更适合。yaffs的麻烦之处在于依赖于nand flash数据块的备用空间。所以烧写等要麻烦些。 测试的话可以通过支持yaffs烧写的bootloader写入,或者用nfs作引。
3)技巧,其实android需要mmap操作的目录,仅是data目录,所以如果没有烧写yaffs的条件,可以尝试用jffs2作root,以yaffs mount另外一个nand节点为根下的data目录的作法。这个方法能解决yaffs的麻烦。mount的设置,在init.rc里面可以修改。
4)很多老一点板子,比如2440,都只带64m nand,这个空间是无法支持android的,android大概需要80m左右的空间,kernel+root fs+data(不考虑有人裁减的情况),我们可以选择sd卡来作data分区,mount的方式跟3一样,确保sd/mmc卡你的kernel已经支持即可。
5)谈到sd,不能不谈谈从sd卡直接启动这一方式,sd卡也是很方便一个载体,因为可以在host上直接通过fdisk,mkfs,cp等命令就可作好。可以选用ext2/ext3等作文件系统(支持mmap),不能用vfat。
我测试过如下方式的启动:
nfs, yaffs2, jffs2(root)+yaffs(data), jffs2(root)+sd ext2(data), sd ext2等 没有括号没有单独mount data目录。
3. 文件系统的调试
做了这么多,调试方面自然有些经验,一些容易出现的问题是:
1)nfs权限问题,nfs通信问题(如mtu, blocksize)
2)启动参数配置问题, ip, serverip, init节点,root fs type等,都有可能是问题所在
3)init.rc中mount命令的使用,有一条remount成ro的误用
4)可用空间太少,多出现在data目录的操作
5)kernel的支持是否开启(初级)
6)bootloader nand写入出错(需仔细查验)

你可能感兴趣的:(数据结构,android,Flash)