2017-04-22 6 views
0

FUSEファイルシステムをマウントするためのlibmount相当の機能とは何ですか?私は、FUSEは、実ファイルシステムではなく、mount.fuseの私のstraceのでは、/ dev /ヒューズファイルを開くと、いくつかの複雑な操作をすることを示していることを理解しています。FUSEファイルシステムのlibmount相当

it's source codeを読んでmount.fuseの仕組みを見てみましたが、Cの文字列操作で不必要に複雑になるだけでなく、GPLプログラムです。

私の質問は、ヒューズファイルシステムをマウントする明白なAPIがないのですか?

答えて

1

FUSEファイルシステムをマウントするためのカーネルインタフェースについては、 "linux/Documentation/filesystems/fuse.txt"(例えば、hereを参照)に記述されています。

ファイルシステムをマウントするのと同じように、mount(2)を呼び出します。しかし、大きな違いはマウントオプションfd=nを提供しなければならないということです。ここで、は、/dev/fuseを開いて取得したファイルディスクリプタであり、カーネル要求に応答するファイルシステムを実装するユーザースペースプロセスによって使用されます。

特に、これはファイルシステムを実装するユーザースペースプログラムによって実際にマウントがで実行されることを意味します。具体的には、ほとんどのFUSEファイルシステムはlibfuseを使用して、fuse_mainまたはfuse_session_mountを呼び出してマウントします(最終的にmount(2)システムコールを含むmount.cの内部関数fuse_mount_sysを呼び出します)。

FUSEファイルシステムをプログラムでマウントする場合は、対応するFUSE実行可能ファイル(例:sshfs)をforkして実行し、マウントに代わってマウントするようにしてください。

実際には/sbin/mount.fuseには何もマウントされていません。それはあなたがmountコマンドラインユーティリティを介して、またはブート時の「/ etc/fstabの」内のエントリを経由してFUSEファイルシステムをマウントできるようにするだけのラッパーです。だからこそそこにコードを見つけることができません。上記の方法と同じ方法でFUSEファイルシステムをマウントし、問題のファイルシステムのFUSE実行ファイルを実行して実際のマウントを実行します。