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写入出错(需仔细查验)

更多相关文章

  1. Android中经常用到的方法--SDcard下文件的操作
  2. 学习笔记:Android SQLite,并实现SQLite基本CRUD操作的Demo
  3. 如何使用Jdbc和Servlet操作Mysql数据库,编写Android登录注册服务
  4. 最新res索引讲解(drawable、layout、values等目录的分辨率和layou
  5. android的UI操作单线程模型理解
  6. Android 系统 目录 分析
  7. 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操

随机推荐

  1. Android不常用代码(1)
  2. 画廊视图Gallery
  3. Android和Java判断字符串是否是中文
  4. Android下Invalid layout of java.lang.S
  5. android ubuntu jni so 报错Java_com_gcx
  6. android文件处理
  7. Android 通过按钮弹出系统菜单(通过Button
  8. Android――Shape详解
  9. Android仿音乐播放器功能
  10. Android studio使用心得(二)--- 打包签名