【发布时间】:2011-11-07 00:06:32
【问题描述】:
我和我的同事有一个项目,要制作一个驱动程序,该驱动程序将提供对远程驱动器的访问,就像它是本地驱动器一样(使用 SSH/SCP)。驱动器通常应该被视为驱动器,操作可以仅限于简单的文件操作(复制、移动、删除),没有文件列表等。驱动程序应该是一个 linux 内核模块(可能不完全..)。
我们设法收集了一些信息和想法,也许有人可以验证它们,或者将我们推向一个好的方向?
我们考虑将其拆分为 2 个组件:
- 实现虚拟驱动器的内核模块,
- 负责 SSH/SCP 通信的用户空间守护进程,
因为我们无法想象在内核模块中实现 SSH 通信(是的,它可能是可能的,但是..)。
对于 SSH/SCP 通信,我们认为可以使用 libssh。 关于在内核模块中实现虚拟驱动器,我们找到了tutorial。
另一种情况是内核和用户空间之间的通信。我们还找到了一个article 讨论这个问题,有很多可能性,比如 UDP 套接字或 NETLINK。
有了这个解决方案,我们可以忘记内核模块中任何与 SSH/SCP 相关的东西——它对内核是透明的。
我们的想法好吗?也许有一些我们没有预见到的警告?这是正确的方法,还是有更好/更简单的方法(但仍然与 linux 内核有关,因为这是项目的主要领域;))?我们应该使用哪些想法?非常感谢链接:)
编辑:这是我们必须为大学课程做的一个项目 - 所以找到一个已经实施的解决方案不是问题,而是自己动手做..
【问题讨论】:
-
查看我的编辑 - 这是我必须为大学课程做的项目。
-
那么,CIFS VFS 内核模块可能是一个很好的起点:git.kernel.org/?p=linux/kernel/git/next/…
标签: linux ssh linux-kernel linux-device-driver kernel-module