irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Evet, kesinlikle mümkün! Hatta Rust, C’den sonra işletim sistemi (OS) geliştirmek için "altın standart" olmaya aday en güçlü dil konumundadır. Rust’ın bellek güvenliği (memory safety) ve sıfır maliyetli soyutlamaları, bir çekirdek yazarken karşılaşılan en büyük kabusları (NULL pointer hataları, bellek sızıntıları, yarış durumları) daha derleme aşamasında engeller.
Bugün Linux Çekirdeği bile resmi olarak Rust desteğini bünyesine katmış durumdadır. Kendi işletim sisteminizi yazmak istiyorsanız izlemeniz gereken yol ve temel kavramlar şunlardır:
Bugün Linux Çekirdeği bile resmi olarak Rust desteğini bünyesine katmış durumdadır. Kendi işletim sisteminizi yazmak istiyorsanız izlemeniz gereken yol ve temel kavramlar şunlardır:
1. Standart Kütüphaneden Kurtulmak (
Bir işletim sistemi çekirdeği yazarken, altında bir işletim sistemi yoktur. Bu yüzden dosya sistemine, ağa veya standart belleğe erişim sağlayan std kütüphanesini kullanamazsınız. Kodunuzun başına #![no_std] ekleyerek Rust'ın sadece Core kütüphanesini kullanmasını sağlarsınız.2. Giriş Noktası ve Panik Yönetimi
İşletim sistemlerinde bir "main" fonksiyonu olmaz; sistem işlemci seviyesinden başlar. Ayrıca, bir hata oluştuğunda (panic) standart kütüphane olmadığı için bu durumu manuel yönetmelisiniz.
Kod:
#![no_std]#![no_main]
use core::panic::PanicInfo;
// Program çöktüğünde ne yapılacağını tanımlıyoruz#[panic_handler]fn panic(_info: &PanicInfo) -> ! {loop {}}
// C dilindeki "main" yerine geçecek giriş noktasını belirtiyoruz#[no_mangle]pub extern "C" fn _start() -> ! {// Çekirdek kodları buraya gelir...loop {}}
3. Ekran Çıktısı: VGA Buffer ile Etkileşim
Modern bir OS ekran kartı sürücüsü yüklenmeden önce, genellikle VGA Text Buffer (0xb8000 adresi) üzerinden ekrana yazı yazar. Rust'ta bu bellek adresine unsafe blokları kullanarak doğrudan erişebilir ve kendi println! makronuzu yazabilirsiniz.4. Bootloader Süreci
İşlemci ilk açıldığında Rust kodunuzu nasıl çalıştıracağını bilemez. Bir Bootloader (BIOS veya UEFI) kullanarak çekirdeğinizi belleğe yüklemeniz gerekir.- Limine veya bootloader crate'leri bu süreci Rust projeleri için kolaylaştırır.
- Kodunuzun bir disk imajı (.iso veya .bin) haline getirilmesi gerekir.
5. Kesmeler ve Bellek Yönetimi (Interrupts & Paging)
Çekirdek yazımının en zor kısımları donanımla doğrudan konuştuğunuz kısımlardır:- IDT (Interrupt Descriptor Table): Klavye basımı veya zamanlayıcı sinyalleri gibi dış olayları yakalamak için.
- Paging (Sayfalama): Sanal belleği yönetmek ve programların birbirinin belleğine sızmasını önlemek için.
Başlamak İçin Kaynaklar
Eğer bu konuda ciddiyseniz, dünyadaki en iyi kaynak Philipp Oppermann'ın yazdığı "Writing an OS in Rust" (blog.phil-opp.com) rehberidir. Bu rehber sizi sıfırdan alır ve QEMU emülatörü üzerinde çalışan, ekrana yazı yazabilen ve klavye girişlerini okuyan gerçek bir çekirdek yazmaya kadar götürür.Mevcut Rust OS Örnekleri:
- Redox OS: Mikro-çekirdek mimarisiyle yazılmış, tamamen Rust tabanlı modern bir işletim sistemi.
- Theseus: Güvenliğin dil seviyesinde sağlandığı deneysel bir OS.
- Rust-for-Linux: Linux çekirdek sürücülerinin Rust ile yazılmasını sağlayan resmi proje.