1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2017年6月9日 |
---|
#2207 在 Rust 模式
64 星 & 10 关注者
1.5MB
29K SLoC
Echo - 一个用 Rust 编写的 FreeBSD 内核模块 (WIP)
要求
- FreeBSD 机器
- Rust nightly
- Xargo
我建议使用 rustup
来安装和处理 Rust 的不同版本。
安装
Rust
Xargo
$ cargo install xargo
设置 Rust nightly
在 crate 根目录下执行
$ rustup override set nightly
内容
根目录
此目录是模块本身的 Cargo
根目录。
Crates
这里列出了所有不在 crates.io 上可用的依赖 crates。
core
完全由 Xargo
构建。
libstd_unicode
从 Rust 源代码复制,未修改。
libcollections
从 Rust 源代码复制,未修改。
liballoc
从 Rust 源代码复制,未修改。
liballoc_system
从 Rust 源代码复制。
添加了 kern_malloc.rs
,这是内核 malloc 函数的 FFI 绑定。
修改了 lib.rs
以使用这些函数。
freebsd_kernel_std
为 echo 模块实现的 std 的最小版本。在构建时生成 FFI 绑定。存在安全的绑定,用于运行此代码所需的东西。
构建
如果需要更改,请检查 build.sh
脚本,然后运行
$ ./build.sh
加载模块
如果构建成功,根目录下应该有一个 hello.ko
文件。使用以下方式加载:
$ sudo kldload ./hello.ko
使用
$ cat /dev/rustmodule
Default Message :)
$ echo Hello > /dev/rustmodule
Read 6 bytes. Setting new message to "Hello\n"
$ cat /dev/rustmodule
Hello
$ sudo kldunload hello
警告
如果存在任何错误或代码错误,内核很可能会挂起。
我建议在虚拟机上测试该模块。
这可以保护您的系统安全,并使开发和测试更容易。
依赖项
~165KB