移植exFAT到Android4.2.2
最近在Android上测试64GB的TF卡支持情况,发现在Windows平台上默认会把卡格式化为exFAT,而不是以前的FAT32或NTFS,故而引发了我对该文件系统的了解。 在Linux内核中不支持exFAT文件系统,需要像对ntfs(移植可查阅“参考网址”相关内容)支持一样使用fuse,即用户态文件系统,那什么是exFAT和fuse呢? 1.exFAT exFAT(Extended File Allocation Table),又名FAT64,是一种特别适合于闪存的文件系统,可支持单个文件超过4GB的大小。 2.fuse 用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。 上面两个名词的详细资料请查阅“参考网址”相关内容。 了解完了相关内容,那如何移植呢?下面是移植过程: 1.准备工作 a.exFAT源码 使用svn co http://exfat.googlecode.com/svn/trunk/ exfat-read-only命令下载整份exfat源码到当前的exfat-read-only目录中,现在的(2013年07月24日的版本为1.0.0)。 b.fuse源码 从https://code.google.com/p/exfat/wiki/HOWTO了解到还需要fuse-devel或libfuse-dev,故而从http://sourceforge.net/projects/fuse/files/fuse-2.X/2.9.3/下载最新的fuse-2.9.3.tar.gz文件。 2.移植步骤 a.设置内核的配置:CONFIG_FUSE_FS=y;(会创建/dev/fuse结点) b.在Android源码目录下的external目录下创建exfat-fuse目录,交将上面通过svn下载的exFAT代码复制到该目录下,并将fuse-2.9.3.tar.gz文件解压后将其文件也复制到该目录下,进入到exfat-fuse目录,执行./configure命令,会创建include/config.h等文件; c.在exfat-fuse目录下创建Android.mk文件,内容如下: ...