#fuse #bindings #system

sys drakey-fuse-sys

对FUSE内核接口和libfuse的FFI绑定

1个不稳定版本

使用旧的Rust 2015

0.5.0 2019年1月3日

#69 in #fuse


drakey-fuse中使用

MIT 许可证

18KB
534

Rust FUSE - 用户空间文件系统

Crates.io Crates.io

关于

fuse-rs 是一个 Rust 库crate,用于在用户空间轻松实现 FUSE 文件系统

fuse-rs 不仅提供了绑定,它是对原始FUSE C库的重写,以充分利用Rust的架构。

文档

crate文档

详情

一个工作的FUSE文件系统由三个部分组成

  1. 注册为文件系统并将操作转发到处理它们的用户空间进程的通信通道的 内核驱动程序
  2. 帮助用户空间进程与内核驱动程序建立和运行通信的 用户空间库 (libfuse)。
  3. 实际处理文件系统操作的 用户空间实现

内核驱动程序由FUSE项目提供,用户空间实现需要由开发人员提供。fuse-rs提供了这两个之间libfuse用户空间库的替代品。这样,开发人员可以在Rust中构建FUSE文件系统时充分利用Rust类型接口和运行时功能。

除了对libfuse的单个设置(挂载)函数调用和一个最终拆解(卸载)函数调用外,所有操作都在Rust中运行。

依赖关系

必须安装FUSE才能构建或运行使用fuse-rs的程序(即内核驱动程序和库。某些平台可能还需要用户空间实用程序,如 fusermount)。通常,FUSE的默认安装就足够了。

要构建fuse-rs或任何依赖它的程序,还需要安装 pkg-config

Linux

Linux上的FUSE 在大多数Linux发行版中可用,通常称为 fuse。要在基于Debian的系统上安装

sudo apt-get install fuse

在CentOS上安装

sudo yum install fuse

要构建,需要FUSE库和头文件。该软件包通常称为 libfuse-devfuse-devel。还需要 pkg-config 来定位库和头文件。

sudo apt-get install libfuse-dev pkg-config
sudo yum install fuse-devel pkgconfig

macOS

可以从 macOS上FUSE的主页 下载安装程序包。

使用 Homebrew 安装

brew cask install osxfuse

要安装 pkg-config(仅用于构建)

brew install pkg-config

FreeBSD

安装包 fusefs-libspkgconf

pkg install fusefs-libs pkgconf

用法

将以下内容放入您的 Cargo.toml

[dependencies]
fuse = "0.4"

要创建一个新的文件系统,实现 fuse::Filesystem 特性。有关详细信息,请参阅文档,或查看 examples 目录中的基本示例。

待办事项

还有很多事情要做。请随时贡献。请参阅GitHub上的问题列表,并在源文件中搜索包含 "TODO" 或 "FIXME" 的注释,以查看仍然缺少的内容。

兼容性

在macOS上开发和测试。在LinuxmacOSFreeBSD 上使用稳定、测试版和夜间版 Rust 版本进行测试(详细信息请参阅 CI)。

贡献

分支、黑客攻击、提交拉取请求。确保使它对目标受众有用,同时考虑项目的哲学和Rust编码标准。对于更大或关键性的更改,您可能首先想打开一个问题进行讨论。此外,如果您的更改与用户相关,请记得更新变更日志

依赖关系