fuse-mruby is yet another fuse wrapper with mruby
本記事は、mruby advent calendar 2016の25日目の記事です。
今日は、こそこそ作っていた fuse-mruby が、なんとなく面白いおもちゃにはなってきたので、せっかくということで紹介したいと思います。
おや。どこかで聞いた話のようだ!
mrubyとFUSEを用いて、ファイルシステムをまるっと作る、というところを目指しています。
まだ試作品レベルで、configureもRakefileもありません。
ビルド手順はざっくり以下の通り。
お好きな設定でmrubyのビルドを行っていただき同梱の build.sh
内のパスを適宜修正後に走らせると、buildディレクトリに fuse-mruby
という実行ファイルが生成されます。
続いて実際の使い方。
まずはじめにマウント先のディレクトリを作ってください。例として /tmp/hoge
としましょう。
次にマウント。
1 | # mkdir /tmp/hoge |
実行すると、即座にシェルのプロンプトが帰ってきますが実際にはバックグラウンドで実行されています。
1 | [rhykw@desktop fuse-mruby]$ grep -F fuse-mruby /proc/mounts |
現時点での実装では、ファイルシステムの振る舞いを記載するファイルのパスがカレントディレクトリの fuse-mruby.rb
に固定されています。
配布物のままの状態で実行するとマウント先に以下のようなディレクトリ・ファイルが現れます。
1 | [rhykw@desktop fuse-mruby]$ tree -aC /tmp/hoge |
通常のファイルの読み書きのほかsymlinkも(たぶん)使えるのでいろいろ触ってみてください。
fuse-mrubyの実装にあたってはlibfuseのドキュメントのほか php-fuse を参考にさせていただいた部分が大きいです。