linux ntfs 工具,MIPS Linux NTFS 文件系统读写

一、准备

1.module-init-tools-3.0.tar.bz2

2. ntfs-3g-1.2812.tgz

3.ntfsprogs-2.0.0.tar.gz

4. fuse-2.5.2.tar.gz(fuse-2.7.5)

二、环境

Ubutun9.04, mipsel-linux-gcc

export PATH=/opt/project/ToolChain/mipseltools-gcc-4.1.2/bin/:$PATH

三、安装过程

1、编释module-init-tools工具,后面要用到。

tar xvjf module-init-tools-3.0.tar.bz2

./configure \

--prefix=/opt/project/uto/busybox/ntfs/mod_init \

--build=i386-linux \

--host=mipsel-linux

make

make install

2、编释ntfs-3g

./configure \

--prefix=/opt/project/uto/busybox/ntfs/ntfs-g3 \

--exec-prefix=/opt/project/uto/busybox/ntfs/ntfs-g3 \

--bindir=/opt/project/uto/busybox/ntfs/ntfs-g3/bin \

--sbindir=/opt/project/uto/busybox/ntfs/ntfs-g3/sbin \

--libdir=/opt/project/uto/busybox/ntfs/ntfs-g3/lib \

--disable-ldconfig \

--disable-mount-helper \

--build=i386-linux \

--host=mipsel-linux

make

make install

3.编译ntfsprogs(主要是一些工具,e.g. ntfsfix mkntfs etc.)

./configure \

--prefix=/opt/project/uto/busybox/ntfs/ntfsprogs \

--without-uuid \

--build=i386-linux \

--host=mipsel-linux

make

make install

4.编释fuse

./configure \

--build=i386-linux \

--host=mips-linux \

--enable-kernel-module \

--with-kernel=/opt/project/uto/kernal/linux-2.6.24.3

make

这里不要install..

可是在make时出现了error,应该是gcc 4.1.2版本和fuse-2.5.2的兼容问题,改用fuse-2.7.5后make成功,在fuse-2.5.2/kernel目录下生成fuse.ko

四、使用

1.cp .../ntfs-g3/bin/ntfs-3g 目标板根目录/bin

cp .../ntfs-g3/lib/* 目标板根目录/lib/modules/

cp .../ntfsprogs/bin/* 目标板根目录/bin

cp .../ntfsprogs/sbin/* 目标板根目录/sbin

cp .../ntfsprogs/lib/* 目标板根目录/lib

cp .../fuse-2.7.5/kernel/fuse.ko /目标板根目录/lib/modules/

2. 编译内核make uImage CONFIG_FUSE_FS=m,以模块的方式加载fuse

3.第一次烧录后使用需要mkntfs -f /dev/mtdblock3;

/bin/insmod /lib/modules/fuse.ko

/bin/ntfs-3g /dev/mtdblock3 -o force

好了,到/mnt下就可以读写ntfs了,但是不支持中文文件和目录,那是因为我的ARM linux里没安装配置loclae语言支持;如果你已经安装置了locale,那就用:

/bin /ntfs-3g /dev/mtdblock3 -o silent,umask=0,locale=zh_CN.utf8就ok了。

注:<1> /bin/ntfs-3g /dev/mtdblock3 /mnt -o rw,fmask=0222,dmask=0222,force这样的话,在Linux就不可以改变文件或目录的内容了,但在Windows下可以改变,这对稳定性是一个比较好的做法,不至于在使用过程中导致文件或目录损坏

<2> 如果mount /dev/mtdblock3 /mnt ,在内核支持的文件类型下,mount会自动识别大多数的文件系统

<3> Linux下的chmod对加载NTFS格式的分区内的文件或目录不可以使用

五、其它

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.在加载ntfs分区后,如果要卸载,则:

umount /dev/mtdblock3 或 umount /mnt

killall -9 ntfs-3g

NTFS介绍文档:

3 、编译某个内核模块

编内核难免有的时候忘记了配置某个模块,导致该模块不可用,那是不是必须重新配置内核并重新

编译呢,答案是否定的,完全可以单独编译某一个内核模块。

我在使用最新的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模块了。

类似其他可编译成模块的内核代码都可以这样单独编译

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值