2015年2月25日 星期三

exFAT - arm linux


source code : exFAT-nonfuse
https://github.com/dorimanx/exfat-nofuse
http://opensource.samsung.com/reception/receptionSub.do?method=search&searchValue=exfat


[Installing as a stand-alone module]
make
sudo make install

 To load the driver manually, run this as root:
modprobe exfat

 You may also specify custom toolchains by using CROSS_COMPILE flag, in my case:


CROSS_COMPILE=../dorimanx-SG2-I9100-Kernel/android-toolchain/bin/arm-eabi-

[Installing as a part of the kernel]

Let's take [linux] as the path to your kernel source dir...
cd [linux]
cp -rvf exfat-nofuse [linux]/fs/exfat

 edit [linux]/fs/Kconfig
 menu "DOS/FAT/NT Filesystems"

  source "fs/fat/Kconfig"
 +source "fs/exfat/Kconfig"
  source "fs/ntfs/Kconfig"

 endmenu

edit [linux]/fs/Makefile
  obj-$(CONFIG_FAT_FS)    += fat/
 +obj-$(CONFIG_EXFAT_FS)  += exfat/
  obj-$(CONFIG_BFS_FS)    += bfs/
cd [linux]
make menuconfig

 Go to:


File systems > DOS/FAT/NT check exfat as MODULE (M) (437) Default codepage for exFAT (utf8) Default iocharset for exFAT

ESC to main menu Save an Alternate Configuration File ESC ESC

build your kernel

1./linux kernel xxx/fs/exfat/ 下產生 exfat.ko,將此ko拷貝到平台 insmod
2.cat /proc/filesystems
...
...
...
exfat => successful!!! 
....

3.mount -t exfat /dev/mmcblk0p1 /mnt/sd_card

====================
(其他資料)
====================



1) Download the "exFAT" moudule linux driver from the below link.
2) Modify the "Makefile" as per your kernel source.
3) Build with your tollchain
4) Install the "exFAT" driver in linux.
[log]
root@omapl138-lcdk:/# cat /proc/filesystems 
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   tmpfs
nodev   debugfs
nodev   sockfs
nodev   pipefs
nodev   anon_inodefs
nodev   rpc_pipefs
nodev   devpts
        ext3
        ext2
        cramfs
nodev   ramfs
        vfat
        msdos
        iso9660
nodev   nfs
        ufs
nodev   jffs2
nodev   mqueue
nodev   mtd_inodefs
nodev   ubifs
root@omapl138-lcdk:/# 
root@omapl138-lcdk:/# 
root@omapl138-lcdk:/# 
root@omapl138-lcdk:/# insmod exfat.ko 
exFAT: Version 1.2.9
root@omapl138-lcdk:/# 
root@omapl138-lcdk:/# cat /proc/filesystems 
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   tmpfs
nodev   debugfs
nodev   sockfs
nodev   pipefs
nodev   anon_inodefs
nodev   rpc_pipefs
nodev   devpts
        ext3
        ext2
        cramfs
nodev   ramfs
        vfat
        msdos
        iso9660
nodev   nfs
        ufs
nodev   jffs2
nodev   mqueue
nodev   mtd_inodefs
nodev   ubifs
        exfat

=======================================

Linux 下使用 exfat 檔案系統
 要掛載使用 exfat 檔案系統的磁碟,mount 時候指定 exfat 格式即可。其操作命令如下:
   mount -t exfat /dev/device-name /mnt/dirname
  要格式化某個磁碟裝置使用 exfat,可以透過 mkfs.exfat 命令。其操作命令如下:
   mkfs.exfat /devv/device-name

=======================================

build exFAT to linux kernel

https://github.com/dorimanx/Dorimanx-SG2-I9100-Kernel/commit/e8fc728a68096db9ffcebff40244ebfb60a3de18

1.fs/Kconfig

 menu "DOS/FAT/NT Filesystems"

 source "fs/fat/Kconfig"
+source "fs/exfat/Kconfig"
 source "fs/ntfs/Kconfig"


 endmenu



2.fs/Makefile View

 obj-$(CONFIG_CODA_FS) += coda/
 obj-$(CONFIG_MINIX_FS) += minix/
 obj-$(CONFIG_FAT_FS) += fat/
+obj-$(CONFIG_EXFAT_FS) += exfat/
 obj-$(CONFIG_BFS_FS) += bfs/
 obj-$(CONFIG_ISO9660_FS) += isofs/
 obj-$(CONFIG_HFSPLUS_FS) += hfsplus/ # Before hfs to find wrapped HFS+
 @@ -129,7 +130,6 @@ obj-$(CONFIG_EXOFS_FS)          += exofs/
 obj-$(CONFIG_CEPH_FS) += ceph/
 obj-$(CONFIG_PSTORE) += pstore/
 obj-$(CONFIG_F2FS_FS) += f2fs/
-obj-y += exfat/

 # Patched by YAFFS

 obj-$(CONFIG_YAFFS_FS) += yaffs2/



3.fs/exfat/Makefile

-# Exfat Linux kernel modules
-#
-
-obj-m += exfat.o
+obj-$(CONFIG_EXFAT_FS) += exfat.o

 exfat-y := exfat_core.o exfat_api.o exfat_blkdev.o exfat_cache.o exfat_super.o \
-   exfat_data.o exfat_global.o exfat_nls.o exfat_oal.o exfat_upcase.o
-
-EXTRA_FLAGS += -I$(PWD)
-
-#KDIR := /usr/src/linux/
-KDIR := /lib/modules/$(shell uname -r)/build
-PWD := $(shell pwd)
-
-all:
- $(MAKE) -C $(KDIR) M=$(PWD) modules
-
-clean:
- $(MAKE) -C $(KDIR) M=$(PWD) clean
-
-help:
- $(MAKE) -C $(KDIR) M=$(PWD) help
-
-.PHONY : install
-install : all
- sudo $(MAKE) -C $(KDIR) M=$(PWD) modules_install; sudo depmod

+   exfat_data.o exfat_global.o exfat_nls.o exfat_oal.o exfat_upcase.o


確認=>
File systems > DOS/FAT/NT check exfat as MODULE (*) (437) Default codepage for exFAT (utf8) Default iocharset for exFAT

====================================

google 的 exFAT 與 tool
https://code.google.com/p/exfat/wiki/Downloads?tm=2


沒有留言:

張貼留言