Systemd 262 版本引入 Rust 支持,聚焦新组件开发
Unix 启动系统 Systemd 近期增加了对编程语言 Rust 的支持。该功能由开发者 Christian Brauner 实现,并随一个月前发布的 Systemd 262 版本合并。Brauner 在 Mastodon 上宣布了这一进展。

此次更新源于提取请求 #44144,该请求被拆分为五个部分:
- 第 1 部分包含 keyring-util 和 voa-util,用于将证书注册到内核 keyrings;
- 第 2 部分为核心功能,支持使用 Rust 编写的程序;
- 后续部分涉及仅绑定 Rust 代码使用的标题、包裹 libsystemd-shared helpers 所需的 systemd-keyring-setup,以及添加 systemd-keyring-setup 本身。
值得注意的是,这一举措并不意味着对现有 C 语言代码进行大规模移植或重写。根据公告说明,Rust 仅用于新的叶子组件(leaf components),现有 C 代码及其他组件所依赖的部分保持不变。换言之,这是允许新的 Systemd 模块以 Rust 编写,而非重构整个项目。
对于 Rust 开发者而言,构建工具链的选择至关重要。Systemd 并未采用 Rust 生态中常见的包管理器和构建系统 Cargo,而是继续使用其现有的 Meson 构建系统。Meson 由 Python 编写,底层调用 Ninja 管理编译过程,该系统也被 GNOME 项目和 Mesa 3D 图库广泛使用。此外,所有 Rust 代码均禁止使用标准库(std),这一限制符合嵌入式 Rust 编程的常见实践。
项目文档明确了具体的环境要求:
- Rust 编译器版本需达到 1.85 或更高(该版本发布于 2025 年 2 月);
- bindgen 工具版本需为 0.71.1 或更新(自 2024 年 12 月起可用);
- Meson 构建系统版本需为 1.4.0 或更新(自 2024 年 3 月起可用)。
Brauner 在后续帖子中指出,团队计划未来在 systemd 核心中支持 Rust,但目前 Rust 对动态库的支持尚未就绪。此外,在 Rust 中编写 systemd 模块与从 Rust 代码调用 systemd API 是两个不同的概念。后者已有成熟工具支持,例如自 2015 年起存在的 systemd crate。





