Kerla: Rust ile yazılmış ve Linux ABI ile uyumlu yeni bir çekirdek

Kerla projesi hakkında yakın zamanda bilgiler yayınlandı. Kerla, Rust dilinde yazılmış bir işletim sistemi çekirdeği olarak geliştiriliyor. Kod, Apache 2.0 ve MIT lisansları altında dağıtılıyor. Proje, C dilinde yazılmış Resea mikroçekirdek işletim sistemini geliştirmesiyle tanınan Japon geliştirici Seiya Nuta tarafından geliştiriliyor.

Yeni çekirdek, başlangıçta ABI düzeyinde Linux çekirdeğiyle uyumluluğu sağlamayı hedefliyor ve Linux için oluşturulan değiştirilmemiş ikili dosyaların Kerla tabanlı bir ortamda çalışmasına olanak tanıyor.

Keral Hakkında

Kerla, Rust dilinde sıfırdan inşa edilmiş monolitik bir işletim sistemi çekirdeğidir . Mevcut geliştirme aşamasında Kerla yalnızca x86_64 sistemlerde çalışabilir ve write, stat, mmap, pipe ve poll gibi temel sistem çağrılarını uygular. Sinyalleri, isimsiz boruları ve bağlam değiştirme işlemlerini destekler. Fork, wait4 ve execve gibi çağrılar süreçleri kontrol etmek için kullanılır. Tty ve sözde terminaller (pty) için destek mevcuttur. Kök dosya sistemini bağlamak için kullanılan initramfs, tmpfs ve devfs dosya sistemleri hala desteklenmektedir.

Smoltcp kütüphanesine dayalı , TCP ve UDP soketlerini destekleyen bir ağ yığını da sağlanmıştır. Geliştirici, virtio-net sürücüsünü kullanarak QEMU veya Firecracker sanal makinelerinde çalışan ve SSH üzerinden bağlanabileceğiniz bir önyükleme ortamı hazırlamıştır . Sistem kütüphanesi olarak Musl, kullanıcı yardımcı programı olarak ise BusyBox kullanılmaktadır . Kerla çekirdeğini kullanarak kendi önyükleme initramfs'inizi oluşturmanıza olanak tanıyan Docker tabanlı bir derleme sistemi hazırlanmıştır.

Şimdiye kadar, yeni çekirdeği hakkında çok az ayrıntı verildi, ancak Kerla'nın özelliklerine en çok dikkat çeken şey, Rust ile yazılmış olmasıdır. Peki Rust'ta yazmanın diğer dillere veya mevcut kodlara göre herhangi bir avantajı var mı? Pek çoğu, dilin sağladığı bellek güvenliği yararlarını vurgulayarak bu soruya evet yanıtı verdi.

Ayrıca, çalışma zamanında bellek erişimlerinin doğruluğunu değerlendirirken de kullanılır. Dahası , Mozilla, Rust'ın tamsayı taşmalarına karşı koruma sağladığına , kullanımdan önce değişken değerlerinin zorunlu olarak başlatılmasını gerektirdiğine, varsayılan olarak referans ve değiştirilemez değişken kavramını benimsediğine, mantıksal hataları en aza indirmek için güçlü statik tipleme sunduğuna ve desen eşleştirme yoluyla girdi işlemeyi basitleştirdiğine inanmaktadır.

Avantajlar arasında, kod kalitesini değerlendirmek ve yalnızca gerçek donanımda değil, QEMU'da da çalıştırılabilen birim testleri oluşturmak için entegre araçları vurguluyoruz. Esasen, Mozilla, derleyici hataları reddedeceği için Rust'ın hata ayıklamasının daha kolay olduğunu düşünüyor. Bununla birlikte, testler Rust'ın bazı dezavantajlarını da ortaya koydu.

“C++'da olduğu gibi, şablon kullanmadan deyimsel Rust yazmak neredeyse imkansız, bu yüzden ikili dosyaları şişiriyor ve derleme sürelerini yavaşlatıyor. Tüm bu derleme zamanı kontrollerinin de bir maliyeti vardır. Ayrıca, bir şeyi yeniden yazarsanız, eski olgun kod tabanını kaybedersiniz ve benzer kalitede bir kod tabanını makul bir sürede üretmenin hiçbir yolu yoktur; Rust'ta programı yeniden yazmak yerine genişletmek çok daha iyidir. Bir yazılım mühendisi, programı Rust'ta yeniden yazmak yerine genişletmek daha iyidir ”diyor.

Yaratıcısına göre, Linux geliştiricilerinin, özellikle Linus Torvalds'ın kendisinin, çekirdeğin tamamını Rust ile yeniden yazma fikrini reddetmesinin nedeni buydu.

"Güvenli bağlantılar oluşturmak için biraz çalışın, ardından ek kodu Rust'a yazın ve bu olgun kodun keyfini çıkarmaya devam edebilirsiniz. (Linux'un yaptığı bu, Rust'a çekirdek modülü yazabilme yeteneği ekleme çabaları var ”diye ekledi. Linux geliştiricileri, yaklaşık üç yıldır Rust dilini kullanarak belirli yeni çekirdek modülleri yazma olanaklarını araştırıyorlar. Bu, »Rust for Linux« projesine yol açtı.

Son olarak, daha fazla bilgi edinmek isterseniz, ayrıntıları aşağıdaki bağlantıda bulabilirsiniz.


Google'da tercih edilen kaynak olarak ekleyin.