<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/systemd-merges-support-for-rust-components-starting-with-a-keyring-setup-tool-h9tgwqy6t" -->

---
title: systemd merges support for Rust components, starting...
description: systemd now accepts Rust code, starting with a tool called systemd-keyring-setup. Christian Brauner merged the support, expected to ship in systemd 263, likely...
canonical: https://daily.dev/posts/systemd-merges-support-for-rust-components-starting-with-a-keyring-setup-tool-h9tgwqy6t
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: systemd merges support for Rust components, starting with a keyring setup tool | daily.dev
og:description: systemd now accepts Rust code, starting with a tool called systemd-keyring-setup. Christian Brauner merged the support, expected to ship in systemd 263, likely...
og:url: https://daily.dev/posts/systemd-merges-support-for-rust-components-starting-with-a-keyring-setup-tool-h9tgwqy6t
og:image: https://api.daily.dev/og/posts/h9TGwQy6T.png
og:image:alt: systemd merges support for Rust components, starting with a keyring setup tool
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# systemd merges support for Rust components, starting with a keyring setup tool

**[Collections](https://daily.dev/sources/collections)** · 1 min read · 0 upvotes · 0 comments

## Summary

systemd now accepts Rust code, starting with a tool called systemd-keyring-setup. Christian Brauner merged the support, expected to ship in systemd 263, likely arriving in December. Rust is limited to new leaf components that nothing else depends on; existing C code isn't being ported and core pieces like the systemd library don't support Rust yet. The blocker is Rust's handling of dynamic libraries, which would bloat every binary if worked around today. Rust code builds with Meson, not Cargo, using only C linkage, and a test binary came out at 32KB in Rust versus 20KB in C. The keyring tool provisions dm-verity, fs-verity and BPF keyrings with X.509 certificates during boot.

## Content

systemd can now build programs written in Rust. Christian Brauner merged the support and announced it. The change is expected to ship in systemd 263, which is likely to arrive in December.

The scope is deliberately narrow. Rust is allowed only for new leaf components, meaning nothing else in systemd depends on them. Existing C code isn't being ported, and core pieces such as the systemd library don't support Rust yet.

## Why core code is off the table

Brauner said the project wants broader Rust support in core systemd. Rust's handling of dynamic libraries is the blocker: working around it today would massively bloat every binary. Some other Rust blockers would also need to be resolved first.

## How it's built

- Rust code is built with Meson. Cargo isn't used.
- Only C linkage is allowed.
- The `-Drust=` Meson option toggles support and defaults to `auto`.

The cost is visible in a test program: 32KB in Rust versus 20KB in C.

## First component

The first Rust component is `systemd-keyring-setup`. During boot it provisions keyrings and enrolls X.509 certificates into the dm-verity, fs-verity and BPF keyrings.

## Questions this post answers

### Can I write new systemd components in Rust now?

Yes, but only for new leaf components that nothing else in systemd depends on. Christian Brauner merged the support, expected in systemd 263 around December. Existing C code isn't being ported, and core pieces like the systemd library still don't support Rust because of how Rust handles dynamic libraries, which would bloat every binary if worked around today.

_Following systemd's Rust rollout before building on it? daily.dev tracks changes like this as they land._

### Does systemd use Cargo to build its Rust code?

No, systemd builds Rust code with Meson instead of Cargo, using only C linkage. A `-Drust=` Meson option toggles support and defaults to `auto`. This keeps the build system consistent with the rest of the C-based project rather than introducing a separate Rust toolchain.

_Developers mixing Rust into C build systems can keep up with approaches like this on daily.dev._

### What is systemd-keyring-setup?

It's the first Rust component merged into systemd, running during boot to provision keyrings and enroll X.509 certificates into the dm-verity, fs-verity and BPF keyrings. It serves as the proof of concept for systemd's narrow, leaf-only approach to adopting Rust.

_daily.dev helps engineers tracking systemd internals catch new components like this early._

## Similar posts on daily.dev

- [Ubuntu Rust: How Canonical Is Modernizing Core System Tools](https://daily.dev/posts/ubuntu-rust-how-canonical-is-modernizing-core-system-tools-6irulsi7d) · JetBrains · 6 upvotes · 0 comments
- [17k Lines Of New Rust Kernel Code Heading Into Linux 7.4](https://daily.dev/posts/17k-lines-of-new-rust-kernel-code-heading-into-linux-7-4-bvdmc1zzp) · Phoronix · 1 upvotes · 0 comments

---

Tags: [#open-source](https://daily.dev/tags/open-source), [#linux](https://daily.dev/tags/linux), [#rust](https://daily.dev/tags/rust)

[View this post on daily.dev](https://daily.dev/posts/systemd-merges-support-for-rust-components-starting-with-a-keyring-setup-tool-h9tgwqy6t)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"systemd merges support for Rust components, starting with a keyring setup tool","url":"https://daily.dev/posts/systemd-merges-support-for-rust-components-starting-with-a-keyring-setup-tool-h9tgwqy6t","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/systemd-merges-support-for-rust-components-starting-with-a-keyring-setup-tool-h9tgwqy6t"},"datePublished":"2026-10-27T18:24:29.803Z","dateModified":"2026-10-27T18:25:25.364Z","description":"systemd now accepts Rust code, starting with a tool called systemd-keyring-setup. Christian Brauner merged the support, expected to ship in systemd 263, likely...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e854a564c1d30f3b0b2e8ce6ffa8b80b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/e854a564c1d30f3b0b2e8ce6ffa8b80b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collections","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/systemd-merges-support-for-rust-components-starting-with-a-keyring-setup-tool-h9tgwqy6t","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"open-source,linux,rust","timeRequired":"PT1M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"systemd merges support for Rust components, starting with a keyring setup tool"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/systemd-merges-support-for-rust-components-starting-with-a-keyring-setup-tool-h9tgwqy6t#faq","mainEntity":[{"@type":"Question","name":"Can I write new systemd components in Rust now?","acceptedAnswer":{"@type":"Answer","text":"Yes, but only for new leaf components that nothing else in systemd depends on. Christian Brauner merged the support, expected in systemd 263 around December. Existing C code isn't being ported, and core pieces like the systemd library still don't support Rust because of how Rust handles dynamic libraries, which would bloat every binary if worked around today. Following systemd's Rust rollout before building on it? daily.dev tracks changes like this as they land."}},{"@type":"Question","name":"Does systemd use Cargo to build its Rust code?","acceptedAnswer":{"@type":"Answer","text":"No, systemd builds Rust code with Meson instead of Cargo, using only C linkage. A `-Drust=` Meson option toggles support and defaults to `auto`. This keeps the build system consistent with the rest of the C-based project rather than introducing a separate Rust toolchain. Developers mixing Rust into C build systems can keep up with approaches like this on daily.dev."}},{"@type":"Question","name":"What is systemd-keyring-setup?","acceptedAnswer":{"@type":"Answer","text":"It's the first Rust component merged into systemd, running during boot to provision keyrings and enroll X.509 certificates into the dm-verity, fs-verity and BPF keyrings. It serves as the proof of concept for systemd's narrow, leaf-only approach to adopting Rust. daily.dev helps engineers tracking systemd internals catch new components like this early."}}]}
```

