Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468110
  • 博文数量: 62
  • 博客积分: 1742
  • 博客等级: 中尉
  • 技术积分: 859
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-06 00:13
个人简介

这是一句很长很长而且又很啰嗦并且很无聊的废话...

文章分类

全部博文(62)

文章存档

2013年(1)

2012年(13)

2011年(48)

分类: LINUX

2012-03-16 14:48:13

    长话短说,之前已经测试过很多个ntfs-3g的版本,包括内核自带的fuse驱动,另外又下载2.6.0的fuse,都一直都出现一个问题,就是挂载上,在读的时候会卡掉,就是Read函数进入长睡眠不返回.这种情况也不是100%会出现,偶尔一两次还是能成功操作的.不断换版本搞了两天还是无果.也考虑过到是否fuse版本太低的问题,但是时间问题也没有去仔细深入用户文件系统这一块了.后来改为用ntfsprogs的ntfsmout,问题才解决.下面是简单的过程记录.

所需软件包:
   > <fuse.ko> > ./configure CC=/home/dara/crosstool/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/arm-linux-gcc --host=arm-linux --enable-kernel-module --with-kernel=/home/dara/wonhawk/arm-linux-2.6_1.3/linux-2.6.14-fa
   > <ntfsmount,libntfs.so.10> > ./configure --host=arm-linux --disable-gnome-vfs --enable-ntfsmount --enable-fuse-module --prefix=/home/dara/ntfs3g/ntfs3g --exec-prefix=/home/dara/ntfs3g/ntfs3g CC=/home/dara/crosstool/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/arm-linux-gcc AR=/home/dara/crosstool/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/arm-linux-ar
   > <libfuse.so.2> > ./configure --host=arm-linux CC=/home/dara/crosstool/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/arm-linux-gcc AR=/home/dara/crosstool/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/arm-linux-ar

arm的2.6.14内核的flush_cache_page函数是内部链接的,所以无法使用其连接到fuse.ko.解决办法是:从内
核拷一份出来直接内部实现即可.
kernel/dev.c:
+ static inline void
+ fflush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn)
+ {
if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask)) {
unsigned long addr = user_addr & PAGE_MASK;
__cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags);
}
+ }
#ifdef DCACHE_BUG
 - flush_cache_page(vma, cs->addr, page_to_pfn(cs->pg));
 + fflush_cache_page(vma, cs->addr, page_to_pfn(cs->pg));
#endif
这样即可编译出fuse.ko驱动.
注意:在配置fuse-2.8.0的时候不需要指定其安装目录,这样它会默认将编译好的库和头文件安装到系统默认路径,以此支持ntfsprogs-2.0.0的编译.
OK,得到编译好的几个文件后,首先需要将两个库文件拷贝到/lib下,然后安装fuse.ko驱动.最后就可以挂在了,但是,挂载时需要使用参数-o force.
例如:
#./ntfsmount -o force /dev/sda1 /mnt/hddisk/video

刚也顺手测试了一下写入的速度,我挂载的是500G的SATA移动硬盘,使用: time dd if=/dev/zero of=test.gz bs=10M count=50 写入500M的结果是用了125秒,刚好是4M/S的写入速度,下一步得继续测试其稳定性和兼容性.
阅读(3888) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

czysocket_dara2012-03-19 09:57:20

桔子T恤: 编译出的fuse.ko驱动还好用吧?.....
目前还在压力测试中

桔子T恤2012-03-19 01:22:27

编译出的fuse.ko驱动还好用吧?

夏冰软件2012-03-16 16:08:57

写的不错,学习一下