今天在做关于fuse的课设,现将相关过程与心得贴出来与大家分享~
使用用户空间的文件系统(FUSE),无需理解文件系统的内幕,也不用学习内核模块编程的知识,就可以开发用户空间的文件系统框架。
步骤1 FUSE的下载与安装
1)首先上fuse官网下载最新安装包:http://sourceforge.net/projects/fuse/files/fuse-2.X/
我下载的是2.8.5版。
2)安装fuse,根据官网教程:
①首先解压: tar zxvf fuse-2.8.5.tar.gz
②然后到解压后的文件夹fuse-2.8.5下,输入: ./configure
③编译: make
④make完后再输入: make install(注意:这一步要在root用户模式下做)
⑤查看fuse是否挂载成功: lsmod|grep fuse
若没成功则可通过:“modprobe fuse”命令挂载fuse。
到此,fuse就已成功安装到虚拟机上了~
步骤2 FUSE的使用
安装完fuse后,其子文件夹example下有一些做好的文件系统实例,例如fusexmp、hello等,下面以fusexmp为例,教你挂载和使用该文件系统,并修改相应函数。
1)将fusexmp文件系统挂载到/mnt/fuse目录(fuse文件夹需要先在mnt下自己建),在example文件夹下输入:./ fusexmp /mnt/fuse –d
这样在/mnt/fuse文件夹下就可以看到所有根目录文件夹了,不过/mnt/fuse文件夹下是fusexmp文件系统!
另外有两点值得注意:
①该命令不会自动结束,使用过程中也不可以结束,所以如何再在终端中输入命令呢?推荐一种方法,按快捷键:Shift+Ctrl+T,会在新标签页新开一个终端,这样就有两个终端了,当然你也可以重新开一个终端窗口。如果的确需要退出第一个终端,则可按Ctrl+C。
②可用“df”命令查看是否挂在上该文件系统。
2)现在转到/mnt/fuse目录下,就可使用fusexmp这个文件系统所实现的命令了~
fusexmp实现的命令可以在example文件夹下的fusexmp.c文件中看到,也可以很方便的修改,比如xmp_mkdir函数增加一条输出提示语句:
static int xmp_mkdir(const char *path, mode_t mode)
{
int res;
write(0,"You are using 'mkdir'!",24);
res = mkdir(path, mode);
if (res == -1)
return -errno;
return 0;
}
要使该修改有效还需要以下几步:
①回到第一个终端(就是输入./ fusexmp /mnt/fuse –d的那个终端),按Ctrl+C结束;
②重新编译:make;
③重新挂载:./ fusexmp /mnt/fuse –d
④在第二个终端中再进入/mnt/fuse目录下(若已在该目录或其子目录下得先退出后再进才有效),尝试mkdir命令,会发现在第一个终端中相应系统输出会有我们新增的输出语句~
到此,关于fuse的安装与使用就已讲完了~其它函数的修改类似,大家可以多多尝试,在此基础上要弄明白linux系统是怎么一步一步调用到fuse的这个函数,该函数又是如何调用到系统的底层函数的。
原文:http://blog.csdn.net/pc620/article/details/6059118