免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2026 | 回复: 2
打印 上一主题 下一主题

ARM Linux NTFS 文件系统读写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-28 10:21 |只看该作者 |倒序浏览

ARM Linux NTFS 文件系统读写
一、准备
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/ntfs-g3  

   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

   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里面使用了。
    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
       好了,到/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、由于ntfs-3g是install到一个文件夹然后才使用的,不像在x386上,不用配--prefix,所以在使
     用 中用如下命不起作用:
     #mount -t ntfs-3g /dev/sdc1 /mnt/ntfs (提示无法识别 ntfs-3g差数,但org上说可以这么用)
      这么问题我还没解决了,也许是我的方法有问题了,但是我还不知道怎么解决。
六、其它
    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过来的。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/88438/showart_1755011.html

论坛徽章:
0
2 [报告]
发表于 2014-01-22 10:04 |只看该作者
楼主,整个在arm上使用ntfs-3g过程你实验过没?

论坛徽章:
0
3 [报告]
发表于 2014-01-22 10:06 |只看该作者
求救啊,我在虚拟机linux上编译,需要在arm上使用ntfs-3g,就编译fuse.ko,可不可以详细点?我只有fuse的源码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP