- Rust ile geliştirilen 64 bit DOS tarzı işletim sistemi; çekirdeğin yüklenmesinde kısmen x86 assembly de kullanılıyor
- VGA metin modu (80x25), FAT12 dosya sistemi, SLIP üzerinden IPv4 ağ yığını (ICMP/UDP/TCP/HTTP) uygulanmış
- QEMU tabanlı sanal makinede çalıştırılıyor ve geliştiriliyor; bazı gerçek disket ortamlarını da destekliyor
- Basit bir metin editörü, TAB dosya/dizin otomatik tamamlama, Snake oyunu gibi temel yardımcı araçlar içeriyor
Mimari ve önyükleyici
- Hedef CPU x86_64; gelecekte ARM (aarch) mimarisi desteği planlanıyor
- İlk sürümde çekirdek belleğe yüklenip çalıştırılmak için elle yazılmış bir önyükleyici kullanıldı
- 64 bit çekirdekte GRUB2 önyükleyici kullanılarak Long Mode'a giriş ve Protected Mode geçişi yönetiliyor
- stage2 önyükleyici GDT, IDT, sayfalama ayarları ve Multiboot2 işaretçisi ataması gibi görevleri yerine getiriyor
- Çekirdek, kabuk komut işleyicisi ve çeşitli özel bileşenlerden oluşuyor
QEMU üzerinde emülasyon ve imajlar
- Geliştirme ve testler, QEMU üzerinden sanal makine ortamında yapılıyor
- ISO imajı oluşturma:
grub2-mkrescue ve xorriso kullanılıyor
- FAT12 disket imajı oluşturma ve bağlama destekleniyor; gerçek aygıtta veya QEMU bayrağı (
-fda fat.img) ile kullanılabiliyor
Başlatma süreci
- Çekirdeğe girildiğinde Long Mode, Multiboot2 etiketleri, FAT12 dosya sistemi, VGA durumu vb. kontrol ediliyor
- ASCII art logo yazdırıldıktan sonra denetim kabuk döngüsüne devrediliyor
Dosya sistemi
- FAT12 dosya sistemi desteği: dosya okuma/yazma/arama/silme, dizin oluşturma/silme vb. destekleniyor
- Metin dosyası oluşturma ve üzerine yazma, alt dizin desteği mevcut
- fsck aracı ile dosya sistemi tutarlılığını denetleme özelliği bulunuyor
- İleride FAT32 desteği de planlanıyor
Ağ yığını
- SLIP protokolü tabanlı IPv4 paket gönderme/alma
- Ethernet çerçevesi işleme desteği var (testler henüz tamamlanmadı)
- ICMP Echo(Request/Reply), UDP, TCP (SYN/SYNACK durum makinesi) vb. destekleniyor
- Basit bir HTTP sunucusu: statik HTML sayfaları sunuyor
Snake oyunu
- Snake oyunu yerleşik geliyor; gelecekte çok oyunculu (P2P TCP) sürüm de planlanıyor
- Oyun verileri (seviye, skor) metin dosyaları olarak kaydedilip yüklenebiliyor
- ESC ile oyundan çıkılıyor, skora göre High Score kaydediliyor
Projenin değeri ve kullanım noktaları
- Rust ile yazılmış bir işletim sistemi örneği olarak, düşük seviyeli yazılım geliştirmede güvenlik ve üretkenlik artışını hissettirebiliyor
- SLIP/ICMP testleri, kolay dağıtım ve gerçek cihaz desteği sayesinde OS deneyleri ve özel uygulama geliştirmeyi öğrenmek için uygun
- Rust ve x86 assembly'nin birleştiği DOS benzeri sistem yapısını doğrudan deneyimleme imkânı sunuyor
1 yorum
Hacker News görüşleri