LinuxのFSモジュールを書いてみる
Fuseとか使えばまああっさりな話なんだけど、実際どう動くのかを知りたかったので書いてみた。もちろんFuseのソースは参考にしていない。それにしても本当に資料がないんだよなあ。結局ソース読み込んだ。
というわけであんまりお作法的なものはよく分からないので、識者の方、ぜひとも突っ込んでくださいまし (use strict 使ってないとか register_globals=on になってるとかはなしで)。
下の .c ファイル (my_vfs_module.c) を 上の Makefile でビルドしてやると my_vfs.ko ができるので、それを
$ insmod my_vfs.ko
などとしてカーネル空間にぶち込む。
で、
$ mount -t my_vfs / /mnt/aho
とすると /mnt/aho に my_vfs がマウントされ、
$ ls -l /mnt/aho 合計 0 -rw-r--r-- 1 root root 39 2009-04-28 03:53 a -rw-r--r-- 1 root root 39 2009-04-28 03:48 b -rw-r--r-- 1 root root 39 2009-04-28 03:47 c -rw-r--r-- 1 root root 39 2009-04-28 03:30 d -rw-r--r-- 1 root root 39 2009-04-28 02:51 e
のようにファイルの一覧が見れ、cat で
$ cat /mnt/aho/a quick brown fox jumps over the lazy dog
のように、ファイルの中身が読めることが確認できるはず。
ソースはこちら:
https://gist.github.com/102366/f4a923e4ba2b793bfb2bf5c7342de074312658d4