· kaynak Hacker News – Front Page (native)
Moxnox 1.0: NT tarzı çekirdekli, btrfs üzerinde kendi kendini derleyebilen POSIX hobi işletim sistemi
Hobi işletim sistemi Moxnox 1.0 sürümüne ulaştı: Windows NT esinli bir tasarım, POSIX uyumlu GNU kullanıcı alanı, yerel dosya sistemi olarak btrfs ve kendi üzerinde kendini derleyebilecek kadar olgunluk.
Windows NT esinli tasarımı POSIX uyumluluğu ve kök dosya sistemi olarak btrfs ile birleştiren hobi işletim sistemi Moxnox, 1.0 sürümüne ulaştı ve Hacker News'te dikkat çekti. Projenin GitHub sayfasına göre sürüm kabaca 130.000 satır C++ kodundan oluşuyor ve hem amd64 hem de aarch64 donanımda çalışıyor.
Unix kullanıcı alanına hizmet eden NT biçimli bir çekirdek
Olağan dışı olan kısım mimari. Moxnox'un syscall arayüzü ve diğer düşük düzey tasarım tercihleri Windows NT üzerine modellenmiş; ancak sistem eksiksiz bir GNU temel sistemiyle geliyor ve Unix benzeri platformlar için yazılmış yazılımların yeniden derlendiğinde çalıştırılması hedefleniyor. README, bunun ReactOS'nin Windows'ı yeniden yaratma girişimi olmadığını açıkça belirtiyor: kapsanan sözleşme yalnızca syscall'ları ve düşük düzey arayüzleri içeriyor; destekleyici daemon'ları veya çekirdeğin iç yapısını kapsamıyor.
Bu uzlaşma tasarımın her yerinde kendini gösteriyor. İkilik dosyalar ELF yerine .exe ve .dll uzantılarıyla PE biçimini kullanıyor; C++ istisnaları yapılandırılmış istisna işlemenin (structured exception handling) üzerinde çalışıyor; POSIX sinyalleri Asynchronous Procedure Call'lar aracılığıyla uygulanıyor; ve NT'nin ntdll.dll'e devrettiği çekirdek benzeri işler oraya yerleşiyor. Kod, Windows x64 çağrı kuralını izliyor ve C veri türleri Windows boyutlarıyla eşleşiyor; örneğin long 32 bit genişliğinde. NT tarafında dikkat çekici biçimde eksik olanlar ise token'lar, Registry ve I/O completion port'ları.
Altında btrfs
Özel olarak geliştirilmiş bir dosya sistemi yerine Moxnox her şeyi, Linux'tan tanınan copy-on-write dosya sistemi btrfs üzerinde saklıyor. README, btrfs uygulamasının temel amaçlar için çalıştığını ancak yoğun kullanımla sertleştirilmediğini belirterek yalnızca tek kullanımlık dosya sistemlerinin bağlanmasını öneriyor. Kurulum, taze bir bölümü mkfs.btrfs ile biçimlendirmeyi, üzerine bir sürüm tarball'ı açmayı ve bir EFI çekirdek imajını kopyalamayı içeriyor — bu dosya aynı zamanda Linux önyükleme protokolüne de uyan çok biçimli bir dosya; ancak yazar onu GRUB ile test etmemiş.
Donanım gereksinimleri ve aygıt desteği
amd64'de her şey x86-64-v3 taban çizgisi için derleniyor; proje bunun kabaca 2015 ve sonrasında üretilmiş neredeyse tüm donanımı kapsadığını, AVX-512'nin algılandığında otomatik olarak etkinleştiğini söylüyor. aarch64'de LSE atomiklerinin kullanımı ARMv8.1 gerektiriyor: Raspberry Pi 5 bu şartı karşılıyor, önceki modeller karşılamıyor. ARM portu ayrıca Device Tree yerine ACPI'ye dayandığından Pi sahiplerinin önyükleme için üçüncü taraf UEFI ürün yazılımına ihtiyacı var.
Desteklenen donanım arasında diskler için NVMe, SATA, SD kartlar, virtio-block ve USB yığın depolama; ağ kartları için virtio-net, RTL8168 ve RTL8125; girdi aygıtları için USB HID, PS/2 ve virtio; grafik için çeşitli ürün yazılımı framebuffer'larının yanı sıra virtio-gpu; ve USB için XHCI bulunuyor. README, çıplak metal olmadan her iki mimariyi de denemek için hazır QEMU komutları içeriyor.
Self-hosting ve ports ağacı
1.0 sürümü kendini derleyecek kadar olgun: Moxnox üzerinde CMake ve Ninja çalıştırmak Moxnox üretiyor; ancak gcc, rust, hexyl ve ripgrep şu anki istisnalar. Proje, self-hosting'in çok fazla RAM ve daha da fazla sabır gerektirdiği konusunda uyarıyor ve asıl darboğaz olarak kullanıcı alanı heap ayırıcısını gösteriyor. Linux'tan çapraz derleme, araç zincirlerini içeren yayımlanmış Docker imajlarıyla hallediliyor.
Ports koleksiyonu bir hobi sistemi için geniş: bash, coreutils, git, Python, Perl, LLVM, OpenSSH, vim, curl, OpenSSL, Mesa, Cairo ve onlarca başka paket; amd64 için gcc de mevcut. Lisanslama üçe ayrılıyor: GPL çekirdeği ve birinci taraf programları kapsıyor, birinci taraf DLL'ler LGPL, modules dizini ise MIT.
Bilinen eksikler
Projenin SSS'si eksik olanlarda açık sözlü: bir GUI, saat dilimi desteği, alternatif klavye düzenleri, yerel ayarlar ve UTF-8 dışı karakter kümeleri, çoklu kullanıcı ve gruplar ile gerçek bir güvenlik modeli yok. Ağ ve bellek alt sistemlerinin de kabul edilmiş performans sorunları var — TCP, MSS görüşmesi yapmadan varsayılan 64 KB pencerede kalıyor, bellek baskısı altında erken geri yazma yok ve ne sayfa önbelleği ne de dentry önbelleği hiç budanmıyor; dolayısıyla inode'lar silinene dek açık kalıyor.
Neden önemli
Hobi işletim sistemleri nadiren 1.0 sürümüne ulaşır, self-hosting olanlar ise daha da azdır; Moxnox'un iki çıtayı da aşması onu tek başına kayda değer bir veri noktası yapıyor. Daha da ilginç olan tasarım deneyi: sıfırdan yazılan çekirdeklerin çoğu Unix'i taklit ederken Moxnox, NT syscall yüzeyinin alışık olduğumuz GNU araçlarıyla birlikte POSIX bir kullanıcı alanının temeli olarak hizmet edip edemeyeceğini sınıyor. Çekirdek içi btrfs uygulaması da Linux'un kendi dışında alışılmadık. README'nin kendi uyarıları — sertleştirilmemiş dosya sistemi kodu, güvenlik yokluğu, eksik NT özellikleri — bunun günlük kullanım için değil deneysel bir sistem olduğunu açıkça gösteriyor; ama bir sistem programcılığı eseri olarak, alternatif çekirdek mimarilerinin de modern, derlenebilir bir yazılım yığınını destekleyebildiğini kanıtlıyor.
- #operating-systems
- #open-source
- #posix
- #windows-nt
- #btrfs