« Tüm yayınlar

ZeroFS için neredeyse saf Rust ile yazılmış Linux çekirdek modülü

ZeroFS, FUSE'yi atlayan neredeyse saf Rust ile yazılmış bir Linux çekirdek modülü sunuyor; netfslib ve özel CI ile Rust'sız çekirdeklerde de çalışıyor.

ZeroFS artık FUSE tabanlı kullanıcı alanı istemcisinin yerine geçen, neredeyse tamamen Rust ile yazılmış, ağaç dışı (out-of-tree) bir Linux çekirdek modülüne sahip. Modül, özel 9P2000.L.Z protokolünü TCP veya Unix soketi üzerinden doğrudan konuşuyor ve tamponlu G/Ç için netfslib ile entegre çalışarak FUSE'nin her işlemde gerektirdiği kullanıcı alanı gidiş-dönüşünü ortadan kaldırıyor.

Çekirdekte VFS için henüz hazır bir Rust soyutlaması bulunmadığından, modül file_system_type ve super_operations gibi ham C yapılarını üretilen bağlayıcılardan doğrudan dolduruyor; unsafe kod bu ince katmanla sınırlı kalırken protokol ve oturum mantığı büyük ölçüde güvenli Rust'ta yazılıyor. Bindgen'in saramadığı statik satır içi netfslib yardımcı fonksiyonları için 250 satırdan az bir C kodu kullanılıyor.

Rust desteği olmadan derlenmiş (CONFIG_RUST=n) çekirdekleri desteklemek için CI, hedef çekirdeğin Rust desteğini ve ZeroFS'i birlikte LLVM bitcode olarak derliyor, ulaşılamayan kodu atıyor ve sonucu olağan C modül bağlama hattından geçiriyor. Böylece ortaya çıkan modül yalnızca dışa aktarılmış C sembollerini içe aktarıyor ve Rust desteği olmayan dağıtım çekirdeklerinde bile yüklenebiliyor; CI her sürümde modülü iki yapılandırmada da bağlayarak test ediyor.