NTFS-3g ARM



NTFS-3g ARM

驱动用fuse-xx.tar.gz,而ntfs-3g-xx.tar.gz 是实现对linux用户环境下读写NTFS文件系统
fuse是替代内核中的fuse模块,目前所使用的是2.6.32-RC2的内核,集成了对NTFS文件读写,
在实际的测试中,如果内核中加入对files system driver ->NTFS files system support
的支持,能读出在硬盘中读出数据但不能写,每次写就数据出错,而引起kernel crash。
后面在一些网站上看到的信息也证实了这个说法。
实现过程:
一、准备
1、 module-init-tools-3.0.tar.bz2
2、 ntfs-3g-1.2812.tgz
3、 fuse-2.5.2.tar.gz

二、环境
我的是在fedore 8,arm-linux-gcc-3.3.2。
export PATH=/usr/local/arm/3.3.2/bin/:$PATH
因为arm-linux kernel 我也是用arm-linux-gcc-3.3.2来编释的,使用中发现编释kernel和编释fuse- 
2.5.2.tar.gz不一样的话,编释fuse-2.5.2.tar.gz出来的fuse.ko不能ismod或modprobe。

三、安装过程

1、编释module-init-tools工具,后面要用到。
         tar xvjf module-init-tools-3.0.tar.bz2
         ./configue CC=arm-linux-gcc –host=arm-linux –prefix=/usr/mod_init
         make install
         cp –fdr /usr/mod_init <到arm-linux 的/usr 目录下>

   2、编释ntfs-3g
         tar xvzf ntfs-3g-1.2812.tgz
         ./configue CC=arm-linux-gcc –host=arm-linux –prefix=/usr/ntfs-g3
         make install
         cp –fdr /usr/ntfs-g3 <到arm-linux 的/usr 目录下>
         <我按这个设置后,生成的可执行文件竟然放在 x86下:/usr/bin/ntfs-3g>

   3、编释fuse
         tar xvzf fuse-2.5.2.tar.gz
         ./configure CC=arm-linux-gcc --host=arm-linux --enable-kernel-module --with-kernel=/home/longjindong/single-flash-linux-2.6.15-8140
         make
         这里不要install..
         cp fuse.ko <到arm-linux 的/lib/modules/2.6.15/ 目录下,如果没有这个目录,那就
         mkdir –p /lib/modules/2.6.15/ >

四、使用

    面作了那么多,现在该开始到ARM里面使用了。
    1、到/usr/mod_init/sbin 运行depmod 生成fuse.ko相关依赖和配置文件。
         /usr/mod_init/sbin/ depmod fuse.ko
    2、插入ntfs格式的盘并用fdisk –l | grep NTFS 看此盘是哪个device.。 
      # fdisk -l | grep NTFS
      /dev/sdc1   1   19457   156288321   7 HPFS/NTFS
    3、 把fuse.ko装入内核
       modprobe fuse.ko (试过,直接insmod /lib/modules/2.6.15/fuse.ko 也可以)
    4、 mount ntfs分区
       /usr/ntfs/bin/ntfs-3g /dev/sdc1 /mnt/ntfs -o silent,umask=0
       <实际用到:ntfs-3g /dev/hdb1 /media/hdb1 > 就可以用
       好了,到/mnt下就可以读写ntfs了,但是不支持中文文件和目录,那是因为我的ARM linux里没安
    装配置loclae语言支持;如果你已经安装置了locale,那就用:
    /usr/ntfs/bin /ntfs-3g /dev/sdc1 /mnt/ntfs -o silent,umask=0,locale=zh_CN.utf8
    就ok了。

、其它

    1、多国语言支持主要是靠locale.arm-linux-gcc 3.4.1中就包含了locale。其中arm-linux/lib中的
   gconv就是字体转化时候用到的库.我们把gconv文件夹copy到开发板文件系统/usr/lib下面.把 arm- 
   linux/share文件夹copy到文件系统/usr下面。把arm-linux/locale和localedef复制到/usr/bin下面.
   通过localedef设置相应字体,将会在/usr/lib/locale下面生成locale-archive.这样就可以实现对不同
   语言的支持.
      不过整个移植比较大,根据不同需求裁减gconv中的库文件 和i18n,以及locale,这样就能减少很大
   空间。

     2 、编译某个内核模块
      编内核难免有的时候忘记了配置某个模块,导致该模块不可用,那是不是必须重新配置内核并重新
   编译呢,答案是否定的,完全可以单独编译某一个内核模块。
   我在使用最新的fuse-2.8.0-pre1时,发现其中已经没有fuse模块了,该项目的内核模块看来已经彻底
   移进内核源码中了,而我当前的内核在编译时并没有选中fuse模块,于是就产生了本文一开始的需求。

   定位fuse模块内核代码:/root/linux-2.6.23/fs/fuse/*.c
   查看其下的Makefile:
   #
   # Makefile for the FUSE filesystem.
   #
   obj-$(CONFIG_FUSE_FS) += fuse.o
   fuse-objs := dev.o dir.o file.o inode.o control.o

   进行如下操作即可单独编译fuse模块:
   [root@localhost ~]# make CONFIG_FUSE_FS=m -C /root/linux-2.6.23 M=/root/linux-

    2.6.23/fs/fuse modules

   然后手动将生成的fuse.ko拷贝到/lib/modules/2.6.23/kernel/fs/fuse/fuse.ko
   运行depmod -a重新配置依赖关系,以后就可以通过modprobe fuse来加载fuse模块了。
   类似其他可编译成模块的内核代码都可以这样单独编译
     这两段是从网上copy过来的。

所以过程是:
1. insmod fuse.ko
2. fdisk -l | grep NTFS //找出NTFS的盘
3. ntfs-3g    /dev/hdb?   /media/hdb?   //
经过以上步骤就可以实现NTFS文件的读写。

NTFS-3g ARM

驱动用fuse-xx.tar.gz,而ntfs-3g-xx.tar.gz 是实现对linux用户环境下读写NTFS文件系统
fuse是替代内核中的fuse模块,目前所使用的是2.6.32-RC2的内核,集成了对NTFS文件读写,
在实际的测试中,如果内核中加入对files system driver ->NTFS files system support
的支持,能读出在硬盘中读出数据但不能写,每次写就数据出错,而引起kernel crash。
后面在一些网站上看到的信息也证实了这个说法。
实现过程:
一、准备
1、 module-init-tools-3.0.tar.bz2
2、 ntfs-3g-1.2812.tgz
3、 fuse-2.5.2.tar.gz

二、环境
我的是在fedore 8,arm-linux-gcc-3.3.2。
export PATH=/usr/local/arm/3.3.2/bin/:$PATH
因为arm-linux kernel 我也是用arm-linux-gcc-3.3.2来编释的,使用中发现编释kernel和编释fuse- 
2.5.2.tar.gz不一样的话,编释fuse-2.5.2.tar.gz出来的fuse.ko不能ismod或modprobe。

三、安装过程

1、编释module-init-tools工具,后面要用到。
         tar xvjf module-init-tools-3.0.tar.bz2
         ./configue CC=arm-linux-gcc –host=arm-linux –prefix=/usr/mod_init
         make install
         cp –fdr /usr/mod_init <到arm-linux 的/usr 目录下>

   2、编释ntfs-3g
         tar xvzf ntfs-3g-1.2812.tgz
         ./configue CC=arm-linux-gcc –host=arm-linux –prefix=/usr/ntfs-g3
         make install
         cp –fdr /usr/ntfs-g3 <到arm-linux 的/usr 目录下>
         <我按这个设置后,生成的可执行文件竟然放在 x86下:/usr/bin/ntfs-3g>

   3、编释fuse
         tar xvzf fuse-2.5.2.tar.gz
         ./configure CC=arm-linux-gcc --host=arm-linux --enable-kernel-module --with-kernel=/home/longjindong/single-flash-linux-2.6.15-8140
         make
         这里不要install..
         cp fuse.ko <到arm-linux 的/lib/modules/2.6.15/ 目录下,如果没有这个目录,那就
         mkdir –p /lib/modules/2.6.15/ >

四、使用

    面作了那么多,现在该开始到ARM里面使用了。
    1、到/usr/mod_init/sbin 运行depmod 生成fuse.ko相关依赖和配置文件。
         /usr/mod_init/sbin/ depmod fuse.ko
    2、插入ntfs格式的盘并用fdisk –l | grep NTFS 看此盘是哪个device.。 
      # fdisk -l | grep NTFS
      /dev/sdc1   1   19457   156288321   7 HPFS/NTFS
    3、 把fuse.ko装入内核
       modprobe fuse.ko (试过,直接insmod /lib/modules/2.6.15/fuse.ko 也可以)
    4、 mount ntfs分区
       /usr/ntfs/bin/ntfs-3g /dev/sdc1 /mnt/ntfs -o silent,umask=0
       <实际用到:ntfs-3g /dev/hdb1 /media/hdb1 > 就可以用
       好了,到/mnt下就可以读写ntfs了,但是不支持中文文件和目录,那是因为我的ARM linux里没安
    装配置loclae语言支持;如果你已经安装置了locale,那就用:
    /usr/ntfs/bin /ntfs-3g /dev/sdc1 /mnt/ntfs -o silent,umask=0,locale=zh_CN.utf8
    就ok了。

、其它

    1、多国语言支持主要是靠locale.arm-linux-gcc 3.4.1中就包含了locale。其中arm-linux/lib中的
   gconv就是字体转化时候用到的库.我们把gconv文件夹copy到开发板文件系统/usr/lib下面.把 arm- 
   linux/share文件夹copy到文件系统/usr下面。把arm-linux/locale和localedef复制到/usr/bin下面.
   通过localedef设置相应字体,将会在/usr/lib/locale下面生成locale-archive.这样就可以实现对不同
   语言的支持.
      不过整个移植比较大,根据不同需求裁减gconv中的库文件 和i18n,以及locale,这样就能减少很大
   空间。

     2 、编译某个内核模块
      编内核难免有的时候忘记了配置某个模块,导致该模块不可用,那是不是必须重新配置内核并重新
   编译呢,答案是否定的,完全可以单独编译某一个内核模块。
   我在使用最新的fuse-2.8.0-pre1时,发现其中已经没有fuse模块了,该项目的内核模块看来已经彻底
   移进内核源码中了,而我当前的内核在编译时并没有选中fuse模块,于是就产生了本文一开始的需求。

   定位fuse模块内核代码:/root/linux-2.6.23/fs/fuse/*.c
   查看其下的Makefile:
   #
   # Makefile for the FUSE filesystem.
   #
   obj-$(CONFIG_FUSE_FS) += fuse.o
   fuse-objs := dev.o dir.o file.o inode.o control.o

   进行如下操作即可单独编译fuse模块:
   [root@localhost ~]# make CONFIG_FUSE_FS=m -C /root/linux-2.6.23 M=/root/linux-

    2.6.23/fs/fuse modules

   然后手动将生成的fuse.ko拷贝到/lib/modules/2.6.23/kernel/fs/fuse/fuse.ko
   运行depmod -a重新配置依赖关系,以后就可以通过modprobe fuse来加载fuse模块了。
   类似其他可编译成模块的内核代码都可以这样单独编译
     这两段是从网上copy过来的。

所以过程是:
1. insmod fuse.ko
2. fdisk -l | grep NTFS //找出NTFS的盘
3. ntfs-3g    /dev/hdb?   /media/hdb?   //
经过以上步骤就可以实现NTFS文件的读写。

来至http://hi.baidu.com/sbuxmmm_2007/item/184a7bf7bfb5fb0ac6dc45d7?qq-pf-to=pcqq.group

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值