İçeriğe atla

Kapatmak için ESC tuşuna basın

Systemd Rust’a kapı açtı, core şimdilik C’de kalıyor

Systemd Rust desteği main branch'e girdi. Rust isteğe bağlı, yalnızca yeni bağımsız programlarda kullanılıyor ve libsystemd-shared C'de kalıyor.

Yazar
Sezer Şanlıkan
Yayın
5 Kasım 2026,
Okuma
3 dakika
systemd Rust desteği ve systemd-keyring-setup programı
Bu haberde
  1. systemd nedir, ne için kullanılır?
  2. Paket build eden dağıtımlar için ilk etki
  3. Systemd Rust desteği neden dar başlıyor
  4. Systemd-keyring-setup ve verity zinciri
  5. Core neden C’de kalıyor

Systemd projesi, main branch’e systemd Rust desteği ekleyen 19 commit’lik bir pull request’i merge etti. Rust ile yazılan ilk program systemd-keyring-setup oldu. Program açılışta X.509 sertifikalarını dm-verity ve fs-verity gibi kernel keyring’lerine ekliyor, ardından bu keyring’leri kilitliyor.

systemd nedir, ne için kullanılır?

systemd, Linux için bir init sistemi ve servis yöneticisidir. Açılışta ilk süreç olarak çalışır, servisleri başlatır, durdurur ve aralarındaki bağımlılıkları yönetir. Log, ağ yapılandırması ve zamanlayıcı gibi yardımcı bileşenleri de içerir. Yaygın Linux dağıtımlarının çoğu varsayılan olarak systemd kullanır; OpenRC ve runit bilinen alternatifleridir.

Paket build eden dağıtımlar için ilk etki

Hazır paketle systemd kullanıyorsanız şu an değişen bir şey yok. Systemd Rust desteği isteğe bağlı ve proje hâlâ Rust olmadan build ediliyor.

Asıl etkiyi systemd’yi kaynaktan derleyenler görecek. Arch ve openSUSE OBS gibi tüm özellikleri açarak build eden dağıtımlar ya Rust toolchain’ini kuracak ya da desteği kapatacak. Kendi image’ınızı veya özel bir dağıtım üretiyorsanız build ortamında rustc 1.85, bindgen 0.71.1 ve meson 1.4.0 veya daha yenisi gerekiyor.

rustc --version
bindgen --version
meson --version

Bu kontrolü CI’daki builder image’ında yapın. Eski bir tabana dayanan builder, rustc 1.85’in gerisinde kalabilir.

Systemd Rust desteği neden dar başlıyor

Kurallar Berlin’deki bir hackfest’te belirlendi. Rust yalnızca başka hiçbir bileşenin bağımlı olmadığı yeni, bağımsız programlarda kullanılıyor. Build meson ile yapılıyor, cargo devrede değil.

Yalnızca core ve libc crate’lerine izin var; standard library ve alloc dışarıda. Programlar systemd’nin kendi Box ve Vec tiplerini kullanıyor. Bellek ayırma başarısız olursa panic yerine hata dönüyor. Açılış sırasında çalışan araçlar için bu tutarlı bir tercih: panic ile ölen bir program, hata dönen bir programa göre açılış adımını yönetmeyi zorlaştırır.

Aynı komutu tanımlayan bir Rust programı, C karşılığıyla aynı davranmak zorunda ve bunu bir test denetliyor. Script’leriniz bir komutun çıktısına veya çıkış koduna bağlıysa bu kural geçişte sizi koruyor.

Systemd-keyring-setup ve verity zinciri

Dm-verity veya fs-verity ile image doğruluyorsanız ilk Rust programı doğrudan açılış zincirinize giriyor. Sertifikayı keyring’e yükleyip keyring’i kilitleyen adım bu programda. Dağıtımınız Rust’ı kapatarak build ediyorsa bu aracın paketinizde nasıl geldiğini dağıtımın sürüm notlarından doğrulayın.

Core neden C’de kalıyor

Libsystemd-shared şimdilik C’de. Rust’ın stable ABI’si yok ve kütüphaneye Rust koymak aynı kodu kütüphane ile birçok binary arasında çoğaltırdı. İkinci engel dosya sistemi erişimi: systemd path’leri file descriptor üzerinden çözüyor ve hassas bileşenlerde Rust’ın standart path işleyişini kabul etmiyor.

Rust bu iki konuyu çözmeden systemd’nin Rust desteği kenardaki araçlarla sınırlı kalacak. Ubuntu sudo-rs ve uutils coreutils’i varsayılan yaptı, kernel ise 6.1’de başlayan Rust deneyini geçen yılın sonunda bitmiş ilan etti. Systemd bu yola yeni ve bağımsız programlarla giriyor.

İlgili haberler

Tüm haberler

Yeni yazılardan haberdar olun

Sunucu, Kubernetes, DevOps ve güvenlik üzerine yeni yazılar ve site duyuruları e-postanıza gelsin. Reklam yok, adresiniz kimseyle paylaşılmaz.

© 2021–2026 Sezer Şanlıkan