2011-11-06 17 views
1

私と私の同僚は、ローカルドライブ(SSH/SCPを使用)のようにリモートドライブへのアクセスを提供するドライバを作るプロジェクトを持っています。ドライブは通常はドライブとして見なければならず、操作は単純なファイル操作(コピー、移動、削除)に制限され、ファイルリストなどはありません。ドライバはLinuxカーネルモジュールでなければなりません。SSH/SCPドライブのカーネルモジュール

私たちはいくつかの情報やアイデアを集めてくれました。誰かがそれを確認したり、良い方向に向けることができましたか?

我々は2つのコンポーネントにそれを分割について考え

:私たちはので

  • 仮想ドライブを実装するカーネルモジュール、
  • SSH/SCPの通信を担当するユーザ空間デーモンカーネルモジュールでSSH通信を実装することは想像できません(おそらくそれは可能ですが、..)。

    SSH/SCP通信では、libsshを使用できると考えています。 カーネルモジュールで仮想ドライブを実装する方法については、tutorialが見つかりました。

    もう1つのケースは、カーネルとユーザースペース間の通信です。 UDPソケットやNETLINKのような多くの可能性を持って、これについて議論しているarticleも見つかりました。

    このソリューションでは、カーネルモジュールでSSH/SCPに関連するものを忘れることがあります。カーネルには透過的になります。

    私たちの考えは良いですか?たぶん、私たちが見ていないいくつかの警告がありますか?これは正しい方法でしょうか、それとももっと簡単な方法があるかもしれません(でもLinuxカーネルに関連していますが、それはプロジェクトの主な分野ですから))?どのアイデアを使うべきですか?リンクは感謝:)

    EDIT:それは私たちは、大学のクラスのためにしなければならないプロジェクトだ - それは、すでに実装解決策を見つけるために問題はありませんが、あなた自身を行うことを...

+5

http://fuse.sourceforge.net/sshfs.html – Mat

+0

私の編集を参照してください - それは私が大学のクラスのためにしなければならないプロジェクトです。 – schiza

+0

その後、CIFS VFSカーネルモジュールは良い出発点です:https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree;f=fs/cifs –

答えて

1

を私は思いますFUSEを使用できるので、カーネルモジュールは必要ありません。

+0

私の編集を参照してください、それは私が大学のクラスのためにしなければならないプロジェクトです。 – schiza

2

FUSE、特にSSHFSをご覧ください。それは基本的にあなたが何を描いているのか、既に実装されています

+0

しかし、これは私がしなければならないプロジェクトです。私の大学のクラスのために、まだ何もしていません; – schiza

+0

あなたはFUSEアーキテクチャから多くのことを学び、ドキュメントを読むことができます。 – unbeli

2

次に、カーネル内で暗号化を行わないでください。

従来の知恵は、カーネルコードが非常に小さくなければならず、これは学生にとってさらに真実です(カーネルコードはデバッグが難しく、内部のバグがシステム全体をクラッシュさせるためです)。

FUSEがやっていることを少し研究して、プロジェクトに言及してください。

次に、最初に推測したように、カーネルモジュールを小さくして、ユーザー空間デーモンと(単純で効率的な暗号化されていない方法で)通信します。

おそらく、カーネルコードを実行する必要はありませんが、ユーザー部分だけが必要です(教師があなたに期待していることを見つける必要があります)。その後、FUSEのSSHFSの例を再実装するだけで済みます。また、FUSEですでに提供されているマシンを使用することもできます。

仮想ドライブについては言及していませんが、ユーザー空間ファイルシステムについて言及してください。

+0

私はこのプロジェクトではカーネルコードが不可欠かもしれないと思っていますが、私たちは教師と議論します;)ありがとう! – schiza

+0

私はこのプロジェクトの難しさが、彼が6月6日14時13分26秒*で最後に見たように@ shizaのプログラミングへの関心を軽減したと思います。 –

関連する問題