fuse メモ

fuse で自由にファイルシステムが作れるらしいのでやってみた。
http://fuse.sourceforge.net/

debian(5.0.4) に入れたかった。example の hello worldコンパイルして実行する。

 //コンパイル環境を作るのが面倒だったので、 gvfs への guild-dep で入れた(邪道)
 #apt-get build-dep gvfs-fuse

 //fusermountとかのユーティリティが入らないので追加で入れる
 #apt-get install fuse-utils

 //fuse本体の読み込み
 #modprobe fuse

 //fuseのソースを入れた場所に移動
 #cd /home/rti/fuse-2.8.3/example
 
 //hello.c をコンパイル
 #gcc -Wall `pkg-config fuse --cflags --libs` hello.c -o hello

 //テスト用のディレクトリを作る
 #mkdir /tmp/fuse

 //そのディレクトリにアタッチする
 #./hello /tmp/fuse

 //動作確認その1 ls
 #ls -l /tmp/fuse
total 0
-r--r--r-- 1 root root 13 Jan  1  1970 hello

 //動作確認その2 cat
 #cat /tmp/fuse/hello
Hello World!

 //使わないので umount 見たいな感じで開放する
 #fusermount -u /tmp/fuse
 
 //テスト用のディレクトリ削除
 #rmdir /tmp/fuse

最初アタッチするディレクトリを、ディレクトリではなくファイルで作っていてはまった。
ひどいや。

 //ダメな例
 //間違えてファイルで作った
 #: > /tmp/fuse
 
 //アタッチ
 //問題なくアタッチできてしまう
 #./hello /tmp/fuse
 
 //lsしたらエラーになる
 #ls /tmp/hello
ls: cannot access /tmp/hello: Input/output error

 //catしたらエラーになる
 #cat /tmp/hello
cat: /tmp/hello: Input/output error

 //仕方ないので開放
 fusermount -u /tmp/fuse

 //テスト用ファイル削除
 //よい子のみんなは ファイルではなくディレクトリでやろうw
 rm /tmp/fuse