在安全的 Rust 中编写 Linux 内核模块的框架
有关此项目的动机和目标的更多信息,请查看 我们在 Linux Security Summit North America 2019 的演示 和 YouTube 上的视频。我们立即着重于使此项目适用于树外模块,但我们也将此项目视为测试树内组件是否可以用 Rust 编写的试验场。hello-world 目录中有一个简单的示例模块,测试目录中也有各种其他示例。
我们在内核头文件上运行 bindgen,以生成自动的 Rust FFI 绑定。bindgen 由 Clang 提供支持,因此我们使用内核自己的构建系统来确定适当的 CFLAGS。然后,我们为这些类型编写安全的绑定(请参阅 src/ 中的各个文件)。
内核本质上是多线程的:多个用户空间进程可以同时访问内核资源,这导致内核中多个执行线程处理系统调用(或中断)。因此,KernelModule 类型是 Sync,因此内核模块共享的所有数据必须能够同时安全访问(例如通过实现锁定)。
暂无开放 Issues,或尚未同步最近议题。