Chinaunix首页 | 论坛 | 博客
  • 博客访问: 722529
  • 博文数量: 182
  • 博客积分: 2088
  • 博客等级: 大尉
  • 技术积分: 1698
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 15:09
个人简介

.

文章分类

全部博文(182)

文章存档

2016年(1)

2015年(18)

2014年(14)

2013年(20)

2012年(129)

分类: 嵌入式

2012-06-15 21:47:55

一、准备
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模块了。
   类似其他可编译成模块的内核代码都可以这样单独编译
阅读(1666) | 评论(0) | 转发(0) |
0

上一篇:pipe函数使用

下一篇:busybox的init

给主人留下些什么吧!~~