Вы находитесь на странице: 1из 9

WRITE USERSPACE DRIVERS USING FUSE

PROGRAM:
[fosslab@fosslab ~]$ rpm -qa | grep fuse
ifuse-1.0.0-1.fc14.i686
fuse-gmailfs-0.8.0-5.fc14.noarch
fuse-emulator-utils-0.10.0.1-5.fc13.i686
fuseiso-20070708-9.fc13.i686
fuse-emulator-0.10.0.2-3.fc12.i686
fuse-convmvfs-0.2.6-1.fc14.i686
fuse-encfs-1.7.2-1.fc14.i686
afuse-0.2-5.fc12.i686
fuse-zip-0.2.11-1.fc13.i686
fusecompress-2.6-8.20100223git754bc0de.fc14.i686
fuse-devel-2.8.4-1.fc14.i686
fuse-2.8.4-1.fc14.i686
fuse-s3fs-0.7-4.fc12.noarch
fuse-emulator-roms-0.9.0-3.fc11.noarch
libconfuse-2.6-3.fc12.i686
libconfuse-devel-2.6-3.fc12.i686
diffuse-0.4.3-1.fc14.noarch
fuse-sshfs-2.2-6.fc14.i686
fuse-libs-2.8.4-1.fc14.i686
fuse-python-0.2.1-2.fc14.i686
fusecompress_offline1-1.99.19-6.fc12.i686
gvfs-fuse-1.6.4-2.fc14.i686
fuse-afp-0.8.1-6.fc12.i686
zfs-fuse-0.6.9-7.20100709git.fc14.i686
ceph-fuse-0.20.2-1.fc14.i686
fuse-smb-0.8.7-8.fc13.i686
[fosslab@fosslab ~]$ pwd
/home/fosslab
[fosslab@fosslab ~]$ cd Downloads/
[fosslab@fosslab Downloads]$ ls -l
total 28
drwxr-xr-x 4 fosslab fosslab 4096 Jan 13 2011 fuse-tutorial
-rw-rw-r-- 1 fosslab fosslab 21656 Aug 12 03:46 fuse-tutorial.tgz
[fosslab@fosslab Downloads]$ pwd
/home/fosslab/Downloads
[fosslab@fosslab Downloads]$ cd fuse-tutorial/
[fosslab@fosslab fuse-tutorial]$ ls -l
total 60
rw-r--r-- 1 fosslab fosslab 6426 Jan 13 2011 callbacks.html
/home on /home type none (rw,bind)
capifs on /dev/capi type capifs (rw,mode=0666)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)


fusectl on /sys/fs/fuse/connections type fusectl (rw)
gvfs-fuse-daemon on /home/fosslab/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fosslab)
[fosslab@fosslab example]$ ls -l rootdir
total 12
-rw-r--r-- 1 fosslab fosslab 13 Jan 13 2011 bogus.txt
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:54 fusefile

drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 fusetest


drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 mydir
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:53 myfile

drwxr-xr-x 4 fosslab fosslab 4096 Jan 13 2011 example


-rw-r--r-- 1 fosslab fosslab 2899 Jan 13 2011 files.html
-rw-r--r-- 1 fosslab fosslab 5074 Jan 13 2011 index.html
-rw-r--r-- 1 fosslab fosslab 3721 Jan 13 2011 init.html
-rw-r--r-- 1 fosslab fosslab 2142 Jan 13 2011 private.html
-rw-r--r-- 1 fosslab fosslab 3576 Jan 13 2011 running.html
-rw-r--r-- 1 fosslab fosslab 6069 Jan 13 2011 security.html
drwxr-xr-x 2 fosslab fosslab 4096 Jan 13 2011 src
-rw-r--r-- 1 fosslab fosslab 1505 Jan 13 2011 thanks.html
-rw-r--r-- 1 fosslab fosslab 6269 Jan 13 2011 unclear.html
[fosslab@fosslab fuse-tutorial]$ pwd
/home/fosslab/Downloads/fuse-tutorial
[fosslab@fosslab fuse-tutorial]$ ls -l
total 60

-rw-r--r-- 1 fosslab fosslab 6426 Jan 13 2011 callbacks.html


drwxr-xr-x 4 fosslab fosslab 4096 Jan 13 2011 example
-rw-r--r-- 1 fosslab fosslab 2899 Jan 13 2011 files.html
-rw-r--r-- 1 fosslab fosslab 5074 Jan 13 2011 index.html
-rw-r--r-- 1 fosslab fosslab 3721 Jan 13 2011 init.html
-rw-r--r-- 1 fosslab fosslab 2142 Jan 13 2011 private.html
-rw-r--r-- 1 fosslab fosslab 3576 Jan 13 2011 running.html
-rw-r--r-- 1 fosslab fosslab 6069 Jan 13 2011 security.html
drwxr-xr-x 2 fosslab fosslab 4096 Jan 13 2011 src
-rw-r--r-- 1 fosslab fosslab 1505 Jan 13 2011 thanks.html
-rw-r--r-- 1 fosslab fosslab 6269 Jan 13 2011 unclear.html
[fosslab@fosslab fuse-tutorial]$ cd src
[fosslab@fosslab src]$ ls -l
total 48
-rw-r--r-- 1 fosslab fosslab 27060 Jan 13 2011 bbfs.c
-rw-r--r-- 1 fosslab fosslab 4994 Jan 13 2011 log.c
-rw-r--r-- 1 fosslab fosslab 420 Jan 13 2011 log.h
-rw-r--r-- 1 fosslab fosslab 649 Jan 13 2011 Makefile
-rw-r--r-- 1 fosslab fosslab 687 Jan 13 2011 params.h
[fosslab@fosslab src]$ vi bbfs.c
[fosslab@fosslab src]$ vi log.c
[fosslab@fosslab src]$ pkg-config fuse --cflags
-D_FILE_OFFSET_BITS=64 -I/usr/include/fuse
[fosslab@fosslab src]$ pkg-config fuse --libs

-pthread -L/lib -lfuse -lrt -ldl


[fosslab@fosslab src]$ ls -l
total 48
-rw-r--r-- 1 fosslab fosslab 27060 Aug 12 03:48 bbfs.c
-rw-r--r-- 1 fosslab fosslab 4994 Aug 12 03:48 log.c
-rw-r--r-- 1 fosslab fosslab 420 Jan 13 2011 log.h
-rw-r--r-- 1 fosslab fosslab 649 Jan 13 2011 Makefile
-rw-r--r-- 1 fosslab fosslab 687 Jan 13 2011 params.h
[fosslab@fosslab src]$ make
gcc -g -Wall `pkg-config fuse --cflags` -c bbfs.c
gcc -g -Wall `pkg-config fuse --cflags` -c log.c
gcc -g `pkg-config fuse --libs` -o bbfs bbfs.o log.o
[fosslab@fosslab src]$ ls -l
total 132
-rwxrwxr-x 1 fosslab fosslab 37502 Aug 12 03:50 bbfs
-rw-r--r-- 1 fosslab fosslab 27060 Aug 12 03:48 bbfs.c
-rw-rw-r-- 1 fosslab fosslab 31260 Aug 12 03:50 bbfs.o
-rw-r--r-- 1 fosslab fosslab 4994 Aug 12 03:48 log.c
-rw-r--r-- 1 fosslab fosslab 420 Jan 13 2011 log.h
-rw-rw-r-- 1 fosslab fosslab 10064 Aug 12 03:50 log.o
-rw-r--r-- 1 fosslab fosslab 649 Jan 13 2011 Makefile
-rw-r--r-- 1 fosslab fosslab 687 Jan 13 2011 params.h
[fosslab@fosslab src]$ pwd
/home/fosslab/Downloads/fuse-tutorial/src
[fosslab@fosslab src]$ ls -l

total 132
-rwxrwxr-x 1 fosslab fosslab 37502 Aug 12 03:50 bbfs
-rw-r--r-- 1 fosslab fosslab 27060 Aug 12 03:48 bbfs.c
-rw-rw-r-- 1 fosslab fosslab 31260 Aug 12 03:50 bbfs.o
-rw-r--r-- 1 fosslab fosslab 4994 Aug 12 03:48 log.c
-rw-r--r-- 1 fosslab fosslab 420 Jan 13 2011 log.h
-rw-rw-r-- 1 fosslab fosslab 10064 Aug 12 03:50 log.o
-rw-r--r-- 1 fosslab fosslab 649 Jan 13 2011 Makefile
-rw-r--r-- 1 fosslab fosslab 687 Jan 13 2011 params.h
[fosslab@fosslab src]$ cd ../example/
[fosslab@fosslab example]$ ls -l
total 8
drwxr-xr-x 2 fosslab fosslab 4096 Jan 13 2011 mountdir
drwxr-xr-x 2 fosslab fosslab 4096 Jan 13 2011 rootdir
[fosslab@fosslab example]$ ls -al mountdir
total 8
drwxr-xr-x 2 fosslab fosslab 4096 Jan 13 2011 .
drwxr-xr-x 4 fosslab fosslab 4096 Jan 13 2011 ..
[fosslab@fosslab example]$ ls -al rootdir
total 12
drwxr-xr-x 2 fosslab fosslab 4096 Jan 13 2011 .
drwxr-xr-x 4 fosslab fosslab 4096 Jan 13 2011 ..
-rw-r--r-- 1 fosslab fosslab 13 Jan 13 2011 bogus.txt
[fosslab@fosslab example]$ cd rootdir/

[fosslab@fosslab rootdir]$ pwd


/home/fosslab/Downloads/fuse-tutorial/example/rootdir
[fosslab@fosslab rootdir]$ touch myfile
[fosslab@fosslab rootdir]$ mkdir mydir
[fosslab@fosslab rootdir]$ mkdir fusetest
[fosslab@fosslab rootdir]$ touch fusefile
[fosslab@fosslab rootdir]$ ls -l
total 12
-rw-r--r-- 1 fosslab fosslab 13 Jan 13 2011 bogus.txt
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:54 fusefile

drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 fusetest


drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 mydir
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:53 myfile

[fosslab@fosslab rootdir]$ pwd


/home/fosslab/Downloads/fuse-tutorial/example/rootdir
[fosslab@fosslab rootdir]$ pwd
/home/fosslab/Downloads/fuse-tutorial/example/rootdir
[fosslab@fosslab rootdir]$ ls -l
total 12
-rw-r--r-- 1 fosslab fosslab 13 Jan 13 2011 bogus.txt
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:54 fusefile

drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 fusetest


drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 mydir
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:53 myfile

[fosslab@fosslab rootdir]$ cd ..

[fosslab@fosslab example]$ pwd


/home/fosslab/Downloads/fuse-tutorial/example
[fosslab@fosslab example]$ ls -l
total 8
drwxr-xr-x 2 fosslab fosslab 4096 Jan 13 2011 mountdir
drwxr-xr-x 4 fosslab fosslab 4096 Aug 12 03:54 rootdir
[fosslab@fosslab example]$ ls -l mountdir/
total 0
[fosslab@fosslab example]$ ls -l rootdir/
total 12
-rw-r--r-- 1 fosslab fosslab 13 Jan 13 2011 bogus.txt
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:54 fusefile

drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 fusetest


drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 mydir
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:53 myfile

[fosslab@fosslab example]$ ../src/bbfs rootdir/ mountdir/


about to call fuse_main
[fosslab@fosslab example]$ ls -l mountdir/
total 12
-rw-r--r-- 1 fosslab fosslab 13 Jan 13 2011 bogus.txt
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:54 fusefile

drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 fusetest


drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 mydir
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:53 myfile

[fosslab@fosslab example]$ mount


/dev/sda7 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/tmp on /tmp type none (rw,bind)
/var/tmp on /var/tmp type none (rw,bind)
/home on /home type none (rw,bind)
capifs on /dev/capi type capifs (rw,mode=0666)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
gvfs-fuse-daemon on /home/fosslab/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fosslab)
bbfs on /home/fosslab/Downloads/fuse-tutorial/example/mountdir type fuse.bbfs
(rw,nosuid,nodev,user=fosslab)
[fosslab@fosslab example]$ ls -l mountdir/
total 12
-rw-r--r-- 1 fosslab fosslab 13 Jan 13 2011 bogus.txt
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:54 fusefile

drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 fusetest


drwxrwxr-x 2 fosslab fosslab 4096 Aug 12 03:54 mydir
-rw-rw-r-- 1 fosslab fosslab

0 Aug 12 03:53 myfile

[fosslab@fosslab example]$ fusermount -u mountdir


fusermount: entry for /home/fosslab/Downloads/fuse-tutorial/example/mountdir not found in /etc/mtab

[fosslab@fosslab example]$ ls -l mountdir


total 0
[fosslab@fosslab example]$ mount
/dev/sda7 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/tmp on /tmp type none (rw,bind)
/var/tmp on /var/tmp type none (rw,bind)
[fosslab@fosslab example]$ls l
[fosslab@fosslab example]$ls l rootdir/
[fosslab@fosslab example]$ ls l mounttdir
[fosslab@fosslab example]$tail f bbfs.log
[fosslab@fosslab example]$pwd
[fosslab@fosslab example]$echo Fuse Example Completed

Вам также может понравиться